OpenTracing

    目前支持 Tracer 包括 Zipkin、Skywalking、Jaeger 等,支持的框架包括 gRPC、MOTAN、django、Flask、Sharding-JDBC 等,详见 OpenTracing 官网

    Jaeger 是遵循 OpenTracing 的一种实现。

    关于 OpenTracing 的详细约定请参考:

    Trace

    Trace 通常指一次完整的调用链。如上文中的 Jaeger UI 截图就是 Istio 官方提供的 Bookinfo 示例 的追踪中对 的调用链分析。

    Span

    每个 trace 都由一系列 Span 组成,一个 span 可以理解为两个微服务之间的调用,如同 Chrome 检查器中查看网络访问瀑布一样。

    根据 OpenTracing 的规格约定,每个 Span 都要包含以下状态:

    • 操作名称:可以是访问的一个 URL。必填。例如 。
    • 起/止时间戳:也可以使用起始时间和持续时间来表示。必填。例如 。
    • Tags:一组键值对集合,Semantic Conventions 有一些常用约定。必填。例如 。
    • SpanContext:在进程间通信时携带的 span 信息,指整个 trace。

    示例

    下面是 Jaeger 收集的来自 Bookinfo 示例 中的 的调用链追踪数据。

    在开发应用时需要使用兼容 OpenTracing API 的 Tracing 实现库,例如 来实现自动的分布式追踪。

    参考