新手入门 Spring Boot项目通过opentelemetry-javaagent将traces输出至jaeger可视化

什么是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

下载地址:https://github.com/open-telemetry/opentelemetry-java-instrumentation?tab=readme-ov-file#getting-started

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 中文文档

javaagent出现Failed to export metrics - 简书

io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export spans · Issue #4279 · open-telemetry/opentelemetry-java · GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新停浊酒杯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值