- springboot项目如何实现分布式Tracing
- main分支代码为初始版,未实现任何分布式跟踪。可以基于main分支进行功能定制
- tag: autoconfigure版本通过opentelemetry-java sdk 实现自动埋点,以java agent形式运行。
- 自动埋点配置可以参考:https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure#tracer-provider
这个项目一共3个service:foo-svc
、bar-svc
、loo-svc
。它们的调用关系如下:
- foo-svc 调用 bar-svc
- bar-svc 调用 loo-svc
dockerfile文件已经写好,直接docker build即可制作镜像。
容器化部署 运行在kubernetes集群中。部署文件请参考 kubernetes文件夹下的资源清单
其中loadgenerator是用来访问foo-svc的。查看其日志可发现:
Foo Request headers:
host: foo-svc
user-agent: curl/7.81.0-DEV
accept: */*
Bar Request headers:
accept: text/plain,application/json,application/*+json,*/*
user-agent: Java/19
host: bar-svc:8080
connection: keep-alive
Hello, foo-svc! I'm Bar.
Loo Request headers:
accept: text/plain,application/json,application/*+json,*/*
user-agent: Java/19
host: loo-svc:8080
connection: keep-alive
Hello, bar-svc! I'm Loo.
otel-java sdk导出器配置需要为otel的服务地址,我们需要在集群中安装otel。 同时otel的链路数据也需要在jaeger中进行展示。
- 建议通过helm 方式安装otel
- jeager 安装方式参考官方: https://www.jaegertracing.io/docs/1.53/deployment/