登录
首页 >  Golang >  Go问答

使用多个追踪器的场景有哪些?

来源:stackoverflow

时间:2024-02-11 12:00:26 268浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《使用多个追踪器的场景有哪些?》,涉及到,有需要的可以收藏一下

问题内容

我正在使用 golang 中的 otel 官方 sdk 跟踪包来实现跟踪功能。其存储库的链接位于此处。

虽然tracerprovider具有exporterspanprocessorsampler...等所有配置,但我们仍然可以从同一个tracerproviderzqbendcz中选择不同的tracer qb:

tracera := otel.gettracerprovider().tracer("tracera")
tracerb := otel.gettracerprovider().tracer("tracerb")

由于它们来自同一个 tracerprovider,tracera 和 tracerb 的行为相同。没有其他设置可以产生影响。下面的示例将生成一条迹线,而不是分离的迹线。

ctx, span := tracerA.Start(context.Background(), "First Span")
ctx, span = tracerB.start(ctx, "Second Span")

// above becomes
|----------------------| // First Span
    |-------------|      // Second Span

我想知道为什么 otel 提供这些不同的 tracer 实例。无论使用哪个 tracer,结果都是相同的。它有用例吗?


正确答案


Tracers 用于区分 scope。跟踪确实可以跨越范围的边界,但为了显示系统内的信息流,保留跨度的范围原点非常重要。

例如,如果您有一个包调用另一个包,并且两个包都被用来记录跟踪遥测,那么如果您想追踪错误或性能问题,那么了解跨度来自哪个包至关重要。因此,Tracers 需要唯一标识检测代码。对于 OpenTelemetry Go,it is recommended 表示 Tracer 名称...

是提供检测的库的 Go 包名称(注意:不是正在检测的代码)。

Tracer 只能在该检测包中使用,并且作为应用程序一部分的任何其他包都应该有自己的 Tracer

事实上,所有这些 Tracer 都源自同一个 TracerProvider,并且 TracerProvider 是具有所有导出和处理配置的对象,这意味着这些 Tracer 将为应用程序生成的所有遥测数据都是相同的处理和导出。

终于介绍完啦!小伙伴们,这篇关于《使用多个追踪器的场景有哪些?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>