OpenTelemetry Go Auto Instrumentation

414
下载
opentelemetry-go-auto-instrumentation 是阿里巴巴开源的基于OpenTelemetry规范的Golang应用无侵入编译时注入监控方案,可以在用户完全不修改业务代码的情况下对用户的Golang应用进行监控。

使用本项目收集链路数据并上报至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>然后执行以下命令:

Terminal window
make clean && make build

项目根目录将会编译出一个名叫otel的二进制文件。

运行mysql和redis服务

Terminal window
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.36
docker run -d -p 6379:6379 redis:latest

进行混合编译

首先确定你的go版本和otel二进制的版本是兼容的:

切换目录至example/demo目录之后执行以下命令:

Terminal window
cd example/demo
../../otel go build

执行上述命令后,example/demo目录下将会有一个名为demo的二进制文件。

运行jaeger

执行下面的命令以运行jaeger:

Terminal window
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的上报端点等环境变量,并且启动应用:

Terminal window
OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318" OTEL_EXPORTER_OTLP_INSECURE=true OTEL_SERVICE_NAME=demo ./demo

此后请求接口,以产生链路数据:

Terminal window
curl localhost:9000/http-service

查看链路

打开Jaeger UI: http://localhost:16686,即可查看对应的链路信息:


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32