通过 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/instgo
2、处理依赖
若项目使用 -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 控制台获取的接入凭证。
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名称 和 功能描述。
-
在代码配置部分,配置如下:
-
代码来源:选择容器镜像。
-
容器镜像实例、ACR 镜像仓库:选择您刚刚上传的镜像。
-
-
启动命令:若已在 Dockerfile 中通过
CMD配置,此处可留空。 -
启动端口:填入您应用实际监听的端口,例如
8000。 -
资源配置:根据需要为 Agent 分配CPU和内存。
-
配置探针环境变量(推荐):参考步骤4配置ARMS探针所需环境变量。
-
开启链路追踪
在高级配置中,找到并务必启用链路追踪开关。如果此开关关闭,所有探针配置将不会生效,应用无法上报任何监控数据。
-
点击开始部署。
验证探针状态
部署成功 1–2 分钟后,进入Agent 详情页 → 可观测性页面,检查:
-
“概览”中是否出现请求数、LLM 调用次数、Token 使用量;
-
“Trace 列表”中是否包含
openai或dashscope的调用链。
参考资料
-
探针安装运行的常见问题参考:Go Agent 常见问题说明
-
探针性能开销数据可以参考:Golang探针性能压测报告
-
探针支持的组件和框架可以参考:ARMS应用监控支持的Go组件和框架