通过 OpenTelemetry-Go 探针接入 Go 应用

最近更新时间:2025-10-31 16:48:33

我的收藏
说明:
OpenTelemetry 是工具、API 和 SDK 的集合,用于检测、生成、收集和导出遥测数据(指标、日志和跟踪),帮助用户分析软件的性能和行为。关于 OpenTelemetry 的更多信息请参见 OpenTelemetry 官方网站
OpenTelemetry 社区活跃,技术更迭迅速,广泛兼容主流编程语言、组件与框架,为云原生微服务以及容器架构的链路追踪能力广受欢迎。
腾讯云 OpenTelemetry-Go 探针基于社区 opentelemetry-go-auto-instrumentation 项目二次开发。该方案基于编译期增强机制实现自动埋点,可以在不需要修改业务代码的情况下,将 Go 应用接入应用性能监控 APM。该方案对于 Go 系常用依赖库和框架,包括 Gin、GORM、gRPC 等,提供了自动埋点支持,其他支持自动埋点的依赖库和框架请参见 完整列表

前提条件

请参考 OpenTelemetry-Go 探针支持的组件和框架,确保 Go 和应用服务器的版本在探针支持的范围内。对于自动埋点支持的依赖库和框架,在接入成功后即可完成数据上报,不需要修改代码。

操作步骤

步骤1:获取接入点和 Token

1. 登录 腾讯云可观测平台 控制台。
2. 在左侧菜单栏中选择应用性能监控 > 应用列表,单击接入应用
3. 在右侧弹出的接入应用抽屉框中,单击 Go 语言。
4. 接入 Go 应用页面,选择您所要接入的地域以及业务系统
5. 选择接入协议类型OpenTelemetry
6. 选择您所想要的上报方式,获取您的接入点Token
说明:
内网上报:使用此上报方式,您的服务需运行在腾讯云 VPC。通过 VPC 直接连通,在避免外网通信的安全风险的同时,可以节省上报流量开销。
外网上报:当您的服务部署在本地或非腾讯云 VPC 内,可以通过此方式上报数据。请注意外网通信存在安全风险,同时也会造成一定上报流量费用。

步骤2:下载探针

请前往 探针(Agent)版本信息 下载腾讯云 OpenTelemetry-Go 探针,推荐下载最新版本,探针文件名为otel

步骤3:锁定 OpenTelemetry 相关 SDK 的版本(可选)

为了避免上游 OpenTelemetry SDK 版本更新可能导致的编译报错,需要手动锁定其版本,这里以版本 v1.35.0 为例:
go mod edit -require=go.opentelemetry.io/otel@v1.35.0
go mod edit -require=go.opentelemetry.io/otel/sdk@v1.35.0
go mod edit -require=go.opentelemetry.io/otel/trace@v1.35.0
go mod edit -require=go.opentelemetry.io/otel/metric@v1.35.0

步骤4:编译应用

对工具赋予执行权限。
chmod +x otel
对 Go 编译命令添加 otel 前缀,完成应用编译。例如,go build ... 命令将修改为./otel go build ...
./otel go build -o app

步骤5:添加环境变量

在 Go 应用的运行环境中添加如下环境变量,然后启动应用:
OTEL_EXPORTER_OTLP_ENDPOINT=<endpoint> \\
OTEL_SERVICE_NAME=<serviceName> \\
OTEL_EXPORTER_OTLP_PROTOCOL=grpc \\
OTEL_TRACES_EXPORTER=otlp \\
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA \\
OTEL_RESOURCE_ATTRIBUTES=token=<token>,host.name=<hostName> \\
./app
对应的字段说明如下,请根据实际情况进行替换。
<serviceName> :应用名,多个使用相同 serviceName 接入的应用进程,在 APM 中会表现为相同应用下的多个实例。应用名最长63个字符,只能包含小写字母、数字及分隔符“ - ”,且必须以小写字母开头,数字或小写字母结尾。
<token> :前置步骤中拿到业务系统 Token。
<hostName>:该实例的主机名,是应用实例的唯一标识,通常情况下可以设置为应用实例的 IP 地址。
<endpoint> :前置步骤中拿到的接入点。注意这里必须添加http://前缀。

接入验证

完成以上接入步骤后,Go 应用将向 APM 服务端上报监控数据。在有正常流量的情况下,应用性能监控 > 应用列表 中将展示接入的应用,单击应用名称/ID 进入应用详情页。

再选择实例分析,即可看到接入的应用实例。由于可观测数据的处理存在一定延时,如果接入后在控制台没有查询到应用或实例,请等待30秒左右。

自定义埋点增强

当编译期增强方案的自动埋点范围不满足您的场景,或者需要增加业务层埋点时,您可以参见 通过 OpenTelemetry SDK 接入 Go 应用(推荐),基于 OpenTelemetry SDK 进行自定义埋点增强。自定义埋点增强是对编译期增强方案的补充,两者共享同样的链路上下文,不会导致冲突。