猿问

为什么 go-jaeger-client 需要指标和日志的包装器?

我开始使用 go-gRPC-middleware 来检测我的 gRPC 服务。我已经使用 zap 和为 Prometheus 公开的指标来工作日志。

现在我尝试使用 jaeger go 客户端配置跟踪,它要求我添加围绕指标存储和记录器的包装器。我不确定我是否理解为什么需要这些包装器

心有法竹
浏览 206回答 2
2回答

素胚勾勒不出你

Jaeger 客户端被设计为具有最少的依赖关系。我们不知道您的应用程序是否使用 Prometheus 指标或 Zap 记录器。这就是为什么jaeger-client-go(以及其他语言的许多其他 Jaeger 客户端)为 Logger 和 MetricsFactory 提供两个轻量级接口,可以为应用程序正在使用的特定日志/指标后端实现它们。当然,Prometheus 和 Zap 的绑定已经在 中实现jaeger-lib,并且可以选择包含。

森林海

您可以将其绑定到指标和日志记录框架,但不是必须这样做。您可以简单地调用cfg.NewTracer(),如本例所示:func ExampleFromEnv() {    cfg, err := jaegercfg.FromEnv()    if err != nil {        // parsing errors might happen here, such as when we get a string where we expect a number        log.Printf("Could not parse Jaeger env vars: %s", err.Error())        return    }    tracer, closer, err := cfg.NewTracer()    if err != nil {        log.Printf("Could not initialize jaeger tracer: %s", err.Error())        return    }    defer closer.Close()    opentracing.SetGlobalTracer(tracer)    // continue main()}
随时随地看视频慕课网APP

相关分类

Go
我要回答