【问题标题】:Language neutral trace format语言中性跟踪格式
【发布时间】:2019-01-23 15:01:22
【问题描述】:

我正在寻找一种用于调用跟踪的编程语言中性文件格式。

我正在 bash shell 中寻找类似于 set -x 的跟踪。或者喜欢python-hunter的输出

第一步是存储所有方法调用和运行时执行的每一行。

简化:对我来说,跟踪单进程、单线程执行就足够了。没有并行性。

下一步是跟踪所涉及的 http 调用(微服务)。

我使用 Python 进行开发,但跟踪文件格式需要与语言无关。

【问题讨论】:

    标签: python trace opentracing jaeger


    【解决方案1】:

    您用jaegeropentracing 标记了这个问题,恐怕OpenTracing 没有标准的有线格式。 Jaeger 有自己的格式,但还没有真正记录在案(还没有!)。该领域最接近标准的是 Zipkin 的 B3。

    在 OpenTracing 和分布式跟踪领域之外,您还可以使用一些格式,例如 Common Tracing Formatpcap

    请注意,在单线程环境中跟踪本地进程调用(例如利用系统调用或内核事件)与跟踪微服务调用有很大不同,主要是因为您的应用程序需要通过线路将“上下文”传递给下一个服务, 建立调用之间的相关性。

    【讨论】:

    • 是的,跟踪本地进程与跟踪微服务不同。但它们共享一些部分。我想应该有一种格式可以同时用于两种用例。
    • 如果您还没有加入 OpenTracing Gitter 频道,我真的建议您加入,并告诉那里的人们您的目标是什么。我很确定会有更多人对这个领域感兴趣,甚至可能已经有一些工作正在进行中。
    【解决方案2】:

    opentracing 提供了跟踪标准,但没有语言限制。任何语言都可以。如果你说的是数据格式,最流行的数据格式是 JSON,但是有了 tracer 系统,span 的数量非常多,我觉得 protobuf 可能是一个更好的选择。我开始了一个名为nodetraicng的项目,它用NodeJS实现了opentracing:

    https://github.com/cheneyweb/nodetracing

    【讨论】:

    • 是的,可以使用 JSON 或 protobuf。我对架构感兴趣。这就像 utf8 与 unicode。如果跟踪创建和跟踪可视化应该分开(这会很好,使其更易于插入),那么需要就标准模式达成一致。
    • 如果有通用模式,那么使用 JSON 或 protobuf 也没关系。
    • 是的,跟踪创建和跟踪可视化是分开的
    • 是的,跟踪创建和跟踪可视化是分开的。 Opentracing 为跟踪系统定义了模式。比如 Span、SpanContext、Tracer 和它们包含的字段。但是对于tracer仍然没有通用的处理语言,因为不同语言的tracker不同。顺便说一句,service Mesh是另一种跨平台tracker的解决方案,配置通用,但是部署起来太复杂了。
    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 2015-12-15
    • 2013-03-19
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多