对 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 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.64.0
all-in-one
V1 相关文档地址:https://www.jaegertracing.io/docs/1.64/getting-started/
all-in-one
V2 相关文档地址:https://www.jaegertracing.io/docs/2.1/getting-started/
如果 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