OpenTelemetry的概念有初步了解后,我们接着以Jaeger为例来演示如何在程序中使用实现链路追踪。

Jaeger

Jaeger\ˈyā-gər\ 是Uber开源的分布式追踪系统,是支持OpenTelemetry的系统之一,也是CNCF项目。本篇将使用Jaeger来演示如何在系统中引入分布式追踪。以下是Opentracing+Jaeger的架构图,针对于使用OpenTelemetry也是如此。

准备工作

Jaeger提供了all-in-one镜像,方便我们快速开始测试:

docker run --rm --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.55

如果docker镜像拉取太慢,您可以尝试修改docker拉取站点的镜像地址,例如:http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker

镜像启动后,通过 http://localhost:16686 可以打开Jaeger UI

示例代码地址

我们的示例代码在gf主库中,地址:https://github.com/gogf/gf/tree/master/example/trace

Jaeger注册封装(即将在2.6.0版本移除)

为方便开发者使用,我们通过社区模块的形式,已经封装好了对jaeger的初始化逻辑,代码地址:https://github.com/gogf/gf/tree/master/contrib/trace/jaeger

OTLP HTTP注册封装

为方便开发者使用,我们通过社区模块的形式,已经封装好了对otelhttp的初始化逻辑,代码地址:https://github.com/gogf/gf/tree/master/contrib/trace/otlphttp

OTLP GRPC注册封装

为方便开发者使用,我们通过社区模块的形式,已经封装好了对otelgrpc的初始化逻辑,代码地址:https://github.com/gogf/gf/tree/master/contrib/trace/otlpgrpc




Content Menu

  • No labels

1 Comment

  1. 最新的 Jaeger v1.35 版本引入了通过 OpenTelemetry 协议 (OTLP) 接收 OpenTelemetry 跟踪数据的功能,所有 OpenTelemetry SDK 都需要支持该功能。

    docker run --name jaeger \
      -e COLLECTOR_OTLP_ENABLED=true \
      -p 16686:16686 \
      -p 4317:4317 \
      -p 4318:4318 \
      jaegertracing/all-in-one:1.35

    导出列表中还添加了两个端口 4317  4318 ,OTLP 接收器使用它们来侦听 gRPC 和 HTTP 连接。
    https://www.jaegertracing.io/docs/1.55/apis/#opentelemetry-protocol-stable

    更多详细信息阅读:

    在 Jaeger 中引入对 OpenTelemetry 的本机支持

    https://medium.com/jaegertracing/introducing-native-support-for-opentelemetry-in-jaeger-eb661be8183c

    通过关注 OTLP 更好地与 OpenTelemetry 保持一致

    https://medium.com/jaegertracing/better-alignment-with-opentelemetry-by-focusing-on-otlp-f3688939073f


    Jaeger

    Open Source, End-to-End Distributed Tracing. Hosted by Cloud Native Computing Foundation.

    https://medium.com/jaegertracing