使用本项目收集链路数据并上报至Jaeger
示例地址
https://github.com/alibaba/opentelemetry-go-auto-instrumentation/tree/main/example/demo
运行示例
构建agent
切换到<font style="color:rgb(31, 35, 40);">opentelemetry-go-auto-instrumentation</font>
然后执行以下命令:
make clean && make build
项目根目录将会编译出一个名叫otel的二进制文件。
运行mysql和redis服务
docker run -d -p 3306:3306 -p 33060:33060 -e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:8.0.36docker run -d -p 6379:6379 redis:latest
进行混合编译
首先确定你的go版本和otel二进制的版本是兼容的:
切换目录至example/demo
目录之后执行以下命令:
cd example/demo../../otel go build
执行上述命令后,example/demo
目录下将会有一个名为demo
的二进制文件。
运行jaeger
执行下面的命令以运行jaeger:
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.53.0
运行应用
按照OpenTelemetry官方文档设置OpenTelemetry的上报端点等环境变量,并且启动应用:
OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318" OTEL_EXPORTER_OTLP_INSECURE=true OTEL_SERVICE_NAME=demo ./demo
此后请求接口,以产生链路数据:
curl localhost:9000/http-service
查看链路
打开Jaeger UI: http://localhost:16686,即可查看对应的链路信息: