go程序注入
使用 阿里开源的 go-agent, 在编译期间自动注入链路跟踪代码;编译出的二进制具备跟踪数据导出能力;
项目仓库
https://github.com/alibaba/loongsuite-go-agent
使用示例
1
2
3
4
5
6
7
8
|
# 原本的编译命令
go build -o myapp .
# 使用 loongsuite-go-agent 编译
otel go build -o myapp .
# 常规示例
otel go build -ldflags "-s -w -extldflags '-static'" -o cwx/xxx-api
|
启动程序
1
2
3
4
5
6
7
8
9
10
11
12
|
# 服务名字
export OTEL_SERVICE_NAME="new-api-prod"
# 目标端点
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://10.240.0.1:4318/v1/traces
# 不需要 METRICS 数据就关闭
export OTEL_METRICS_EXPORTER=none
# 附加资源属性-可选
export OTEL_RESOURCE_ATTRIBUTES="deployment.environment=production"
./xxx-api
|
因为代码是编译时注入的程序, 所以docker环境友好;
效果图

python 程序注入
简介
通过 opentelemetry-instrument 启动程序时可以自动注入相关代码
1
2
3
4
5
6
7
8
9
10
|
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
export OTEL_SERVICE_NAME="paper-coupon"
export OTEL_TRACES_EXPORTER="otlp"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://10.1.0.1:4317"
export OTEL_METRICS_EXPORTER="none"
# 使用 otel 启动 python 程序
opentelemetry-instrument python app.py
|
opentelemetry-bootstrap 命令会自动检测你的 Python 环境, 并为你已经安装的库(如 flask, requests)安装对应的插桩包
注意
- 因为时运行时注入, 所以需要确保运行环境有相关的依赖, docker打包时需要注意
- 对于多进程模型不友好, 需要注意在子进程中初始化跟踪。
效果图
