tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表
文档腾讯云可观测平台应用性能监控接入指南接入 Go 应用通过 OpenTelemetry 编译期增强方案接入 Go 应用

通过 OpenTelemetry 编译期增强方案接入 Go 应用

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

前提条件

Go 版本大于等于1.23。
对于需要自动埋点的依赖库以及框架,请确保满足最低版本要求,具体请参见 支持自动埋点的依赖库以及框架

操作步骤

步骤1:获取接入点和 Token

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

步骤2:下载工具

步骤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_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 进行自定义埋点增强。自定义埋点增强是对编译期增强方案的补充,两者共享同样的链路上下文,不会导致冲突。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈