首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go中基于Datadog的APM跟踪

Go中基于Datadog的APM跟踪
EN

Stack Overflow用户
提问于 2022-07-05 09:04:08
回答 1查看 679关注 0票数 0

我在Go中构建了一个演示REST,其中MongoDB作为数据存储,Gin作为HTTP框架。我已经遵循了Datadog网站上的所有说明,然而,我得到的痕迹很少或根本没有信息。追踪到的只有http.request。在Datadog博客上有一个带有Go跟踪的截图(见下文)。

下面是我所看到的--在请求中没有执行MongoDB查询的跟踪。

是否有其他配置或手动报告,我必须做?

我正在启动Datadog跟踪器,主要功能如下:

代码语言:javascript
复制
rules := []tracer.SamplingRule{tracer.RateRule(1)}

tracer.Start(
    tracer.WithSamplingRules(rules),
    tracer.WithService("Go Mongo"),
    tracer.WithEnv("dev"),
)

defer tracer.Stop()

完整代码可在以下网址获得:https://github.com/NG235/go-mongo

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-07 02:10:16

首先,在所有处理程序中,您需要使用request.Context()

代码语言:javascript
复制
ctx := c.Request.Context()

除了其他原因外,该上下文还包含当前的跟踪跨度ID,这是将跨范围连接在一起的最佳选择。

使用该上下文,您可以检测代码的各个部分,如正式文件中所述。

代码语言:javascript
复制
newCtx, span := otel.Tracer(name).Start(ctx, "Run")
defer span.End()

最后一部分是像MongoDB这样的用过的库的工具。

代码语言:javascript
复制
import (
    "go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo"
)

func Connect() *mongo.Database {
    opts := options.Client()
    opts.Monitor = otelmongo.NewMonitor()
    opts.ApplyURI("mongodb://root:root@localhost:27017")
    client, err := mongo.Connect(context.Background(), opts)

现在,每个MongoDB操作都被跟踪,如果将request.Context传播到该操作中,它将连接到父span。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72866729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档