通过 Instgo编译 Golang 应用后,ARMS 可自动监控应用性能,并支持采集 LLM 调用次数、Token 消耗、Trace 链路及会话等 AI 业务指标。本文将介绍如何在 AgentRun 为自定义镜像部署的 Golang Agent 安装阿里云 ARMS 应用探针。
环境约束
探针支持的 Golang 版本:1.18及以上版本
编译过程需要下载安装探针包,需要确保和公网或阿里云内网连通,且编译环境所在安全组已开放8080、8848、9990、80、443 的TCP出方向权限。
安装步骤
1、下载instgo工具
在Dockerfile构建阶段下载并安装instgo:
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache wget
RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O /usr/local/bin/instgo && \
chmod +x /usr/local/bin/instgo2、处理依赖
若项目使用 -mod=vendor,请确保:
go.mod包含google.golang.org/protobuf(直接或间接);在
main.go中添加空导入以避免编译剔除:_ "google.golang.org/protobuf/proto" _ "google.golang.org/protobuf/runtime/protoimpl"执行
go mod tidy && go mod vendor同步依赖。
3、使用instgo编译
替换原生 go build 为 instgo go build:
ENV GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN instgo go build -ldflags="-w -s" -o /app/app main.go提示:若使用较旧 Go 版本,建议在编译前通过instgo set --licenseKey=xxx或设置ARMS_LICENSE_KEY环境变量指定 LicenseKey,以确保下载匹配的探针版本。
4、配置运行时环境变量
必须设置以下四个变量:
ARMS_ENABLE=true:启用探针;ARMS_APP_NAME:应用名称;ARMS_REGION_ID:地域 ID(如cn-hangzhou);ARMS_LICENSE_KEY:从 ARMS 控制台获取的接入凭证。
方式一:直接在 Dockerfile 中配置
## ==================================
## 探针环境变量
## ==================================
ENV ARMS_ENABLE=true # 探针开关
ENV ARMS_APP_NAME={AppName} # 应用名称
ENV ARMS_REGION_ID={regionId} # 对应的阿里云账号的RegionID
ENV ARMS_LICENSE_KEY={licenseKey} # LicenseKey
## ==================================如果采用多阶段构建,需要在运行阶段镜像配置环境变量
方式二(推荐):AgentRun 控制台支持在部署 Agent 阶段定义环境变量,可不在此处 Dockerfile 中配置。
完整Dockerfile示例
部署与验证
构建并上传镜像
将包含探针的 Dockerfile 构建成镜像,并上传至容器镜像服务ACR或其他可访问的镜像仓库。
# 示例:将镜像上传至阿里云 ACR
# 1. 为镜像添加标签
docker tag {本地镜像TAG} registry.cn-hangzhou.aliyuncs.com/{您的ACR命名空间}/{您的ACR仓库名}:{镜像版本号}
# 2. 上传镜像
docker push registry.cn-hangzhou.aliyuncs.com/{您的ACR命名空间}/{您的ACR仓库名}:{镜像版本号}在 AgentRun中部署Agent并配置探针
登录AgentRun控制台,在 Agent 运行时页签下,点击创建 Agent。
选择通过代码创建,并填写 Agent名称 和 功能描述。
在代码配置部分,配置如下:
代码来源:选择容器镜像。
容器镜像实例、镜像仓库:选择您刚刚上传的镜像。
启动命令:若已在 Dockerfile 中通过
CMD配置,此处可留空。启动端口:填入您应用实际监听的端口,例如
8000。资源配置:根据需要为 Agent 分配CPU和内存。
配置探针环境变量(推荐):参考步骤4配置ARMS探针所需环境变量。
开启链路追踪
在高级配置中,找到并务必启用链路追踪开关。如果此开关关闭,所有探针配置将不会生效,应用无法上报任何监控数据。
点击开始部署。
验证探针状态
部署成功 1–2 分钟后,进入Agent 详情页 → 可观测性页面,检查:
“概览”中是否出现请求数、LLM 调用次数、Token 使用量;
“Trace 列表”中是否包含
openai或dashscope的调用链。
参考资料
探针安装运行的常见问题参考:Go Agent 常见问题说明
探针性能开销数据可以参考:Golang探针性能压测报告
探针支持的组件和框架可以参考:ARMS应用监控支持的Go组件和框架