什么是open-telemetry
OpenTelemetry是一个观测性框架和工具包,旨在创建和管理遥测数据,如追踪、指标和日志。OpenTelemetry关注于遥测数据的生成、收集、管理和导出。存储和可视化数据留给其他工具(所以最优的选择是配合像观测性后端使用,如Jaeger)。具体介绍可参见open-telemetry中文文档。
什么是Jaeger
Jaeger 是 Uber Technologies 发布的开源分布式跟踪平台,通过这个工具能够实现监控分布式工作流并排除故障、识别性能瓶颈、追踪根本原因以及分析服务依赖关系等。
本文将通过opentelemetry-javaagent.jar以及jaeger(docekr容器)实现对Spring Boot的demo项目的链路信息检测。
如何监测springboot项目的链路请求信息
1.将jaeger容器启动
拉取jaeger镜像
docker pull jaegertracing/all-in-one:latest
#docker 镜像下载慢的可以试试这个地址https://docker.m.daocloud.io
启动容器
docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 4318:4318 -p 4317:4317 -p 14250:14250 -p 9411:9411 jaegertracing/all-in-one:latest
显示成功如下
查看16686端口,http://IP:16686显示如下UI界面
2.下载opentelemetry-javaagent.jar
3.在将jspringboot项目中添加如下依赖并打成jar包之后,使用如下命令即可将traces显示到jaeger的UI界面
<!-- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-exporter-jaeger -->
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-jaeger</artifactId>
<version>1.27.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure -->
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId>
<version>1.40.0</version>
</dependency>
#otel.traces.exporter=otlp开启traces导出器,otlp metrics和logs设置为none表示未开启
#设置otel.exporter.otlp.endpoint参数为jaeger的接收监听端口
#最新的二进制文件中的OpenTelemetry收集器不再包含原生Jaeger格式的导出器。这个变化是因为Jaeger已经支持OTLP。所以otel.traces.exporter直接设置为otlp,而不是jaeger
java -javaagent:opentelemetry-javaagent.jar所在路径 -Dotel.service.name=springboot的服务名 -Dotel.traces.exporter=otlp -Dotel.metrics.exporter=none -Dotel.logs.exporter=none -Dotel.exporter.otlp.endpoint=http://1.92.28.4:4318 -jar xxx.jar
4.查看是否能够成功收集到traces
4.1访问Spring Boot项目的某个接口
4.2查看UI界面是否显示相应的traces
这样实现将traces显示到Jaeger UI
参考文章|文档:
迁移Jaeger Collector中的导出器 | OpenTelemetry 中文文档