AWS X-Ray GoLang Lambda 到 lambda 跟踪并显示在服务地图中

2024-02-25

我有一个 API 网关,它在 Go 中调用 Lambda 函数 1 和 Lambda 函数 2。我想看到这两个函数加入到服务映射中。

到目前为止,我能够做到这一点的唯一方法是创建一个自定义分段,例如称为“父级”,并从此上下文创建一个子分段,例如称为“子级”。然后使用 client.InvokeWithContext 来调用传递“child”段上下文的函数 2。

sess := session.Must(session.NewSession())
client := lambda.New(sess, &aws.Config{Region: aws.String(region)})

xray.Configure(xray.Config{LogLevel: "trace"})
xray.AWS(client.Client)

ctx, seg := xray.BeginSegment(context.Background(), "Parent")
ctx, subseg := xray.BeginSubsegment(ctx, "Child")
result, _ := client.InvokeWithContext(ctx, 
    lambda.InvokeInput{FunctionName: aws.String(functionName), Payload: nil})
subseg.Close(nil)   
seg.Close(nil)

问题是,这会在服务映射中创建跟踪父级 -> 子级,但也具有函数 1。

请问在服务地图上加入这两个功能的最佳方式是什么? 笔记。我希望在服务地图上看到两个以上的链接,以向我展示 lambda 的整个流程。

请帮忙。

谢谢 瑞克


除非您想添加注释/元数据,否则不需要为“子”调用添加子段。

API网关添加一个名为的跟踪IDX-Amzn-Trace-IdX 射线检测到的传入请求的标头。如果您在调用中将该跟踪 ID 从 lambda 1 转发到 lambda 2,则 X-ray 将在概览中用从 lambda 1 到 lambda 2 的箭头直观地表示调用,并在查看跟踪详细信息时包含 lambda 2 的跟踪详细信息λ 1。

只要您通过调用链转发顶部跟踪 ID,X-ray 就会通过节点和箭头正确地可视化从一个服务到另一个服务的调用链。

From https://aws.amazon.com/xray/faqs/ https://aws.amazon.com/xray/faqs/:

问:什么是痕迹?

X 射线轨迹是一组共享相同轨迹 ID 的数据点。 例如,当客户端向您的应用程序发出请求时, 分配了唯一的跟踪 ID。当请求通过时 您的应用程序中的服务,服务中继有关的信息 使用此唯一的跟踪 ID 将请求返回到 X-Ray。的那一块 应用程序中的每个服务向 X-Ray 中继的信息是 段,轨迹是段的集合。

https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader

https://docs.aws.amazon.com/xray/latest/devguide/xray-services-apigateway.html https://docs.aws.amazon.com/xray/latest/devguide/xray-services-apigateway.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS X-Ray GoLang Lambda 到 lambda 跟踪并显示在服务地图中 的相关文章

随机推荐