对于运行在ACK集群中的Golang应用,您可以通过安装ack-onepilot组件并构建应用的容器镜像,并通过编译工具instgo编译应用的Golang二进制文件。完成部署后,您便能在应用实时监控服务 ARMS(Application Real-Time Monitoring Service)中查看对应应用的应用拓扑、接口调用、数据库分析等监控数据。
前提条件
-
已创建ACK集群。具体操作,请参见创建ACK托管集群或创建ACK专有集群(已停止新建)。
-
已确保所使用的Golang应用版本为1.18及以上。
-
已开通ARMS。
ARMS是一款阿里云应用性能管理(APM)类监控产品,如需了解ARMS的详细信息,请参见什么是应用实时监控服务ARMS?、什么是应用监控。
步骤一:安装ARMS应用监控接入组件ack-onepilot
旧版应用监控组件arms-pilot已不再维护,您可以安装升级后的ack-onepilot组件用于监控您的应用,ack-onepilot完全兼容arms-pilot,您无需修改应用配置即可无缝接入ack-onepilot。更多信息,请参见如何卸载arms-pilot和安装ack-onepilot。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理。
-
在日志与监控区域,定位ack-onepilot组件,单击组件卡片的安装,按照页面指引在对话框配置相关的参数(建议使用默认值),单击确认完成组件的安装。
说明请确保ack-onepilot的版本为3.2.4及以上。ack-onepilot组件默认支持1000个Pod规模,集群Pod每超过1000个,ack-onepilot资源对应的CPU请增加0.5核、内存请增加512MB。
安装完成后,您可以在组件管理页面升级、配置或卸载ack-onepilot组件。
步骤二:授予ARMS资源的访问权限
-
如需监控ACK集群应用,但ACK集群中不存在
addon.arms.token,请执行以下操作手动为集群授予ARMS资源的访问权限。如果已经存在addon.arms.token,则无需执行授权操作。说明当ACK集群中存在
addon.arms.token时,ARMS能够自动完成免密授权过程。通常情况下,ACK托管集群默认配备了addon.arms.token。然而,对于一些较早创建的ACK托管集群来说,可能存在缺少addon.arms.token的情形。-
检查
addon.arms.token是否存在。 -
如果
addon.arms.token存在,无需执行后续授权操作。否则,请执行以下操作手动为集群授予ARMS资源的访问权限。登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。
-
在基本信息页签下,单击集群资源区域内的Worker RAM 角色右侧的链接。
-
在角色页面的权限管理页签上,单击新增授权。
-
选择权限为AliyunARMSFullAccess,然后单击确定。
-
-
如需监控对接了ECI的ACK托管集群应用,请在访问控制快速授权页面完成授权,然后重启ack-onepilot组件下的所有Pod。
步骤三:编译Golang二进制文件
您可以通过使用增强的Golang编辑工具instgo,并结合本地的Golang编译环境(Golang版本需为1.18以上),来编译Golang程序,以生成能够向应用实时监控服务 ARMS(Application Real-Time Monitoring Service)上报监控数据的二进制文件。
(可选)若项目在编译时包含vendor目录,请在
go build后添加-mod=vendor。使用
wget命令下载编译工具instgo,请根据编译环境和编译机器所在地域,选择对应的下载地址。需要注意,instgo 在编译时会触发自动更新,请将 instgo 保存在编译用户具有修改权限的目录下。
说明Instgo 是 ARMS 提供的 Golang 应用编译工具,使用 instgo 编译您的 Golang 项目后,ARMS 即可开始监控您的 Golang 应用。
各地域下载的编译工具是相同的,如果您的公网环境可以访问OSS地址,可以直接使用对应操作系统和架构的杭州公网地址获取编译工具。
为编译工具赋予可执行权限。
Linux/Mac
# 赋予可执行权限 chmod +x instgoWindows
Windows中无需赋予可执行权限。
(可选)配置LicenseKey或Uid作为编译参数。
重要如果您跳过该步,instgo会默认为您安装最新版本的ARMS探针。
您可以通过DescribeTraceLicenseKey OpenAPI获取LicenseKey。
在DescribeTraceLicenseKey文档页面单击调试,选择地域后单击发起调用即可获取LicenseKey。

使用set命令配置uid或者licensekey作为编译参数。
instgo set --uid={YourAliyunUid} //需要使用instgo 1.4.5及以上版本,uid为阿里云主账号uid instgo set --licenseKey=${YourLicenseKey} // uid和licensekey只需要配置一个
将instgo作为前缀添加到您原有的编译命令前并执行编译。
instgo go build {arg1} {arg2} {arg3}如果您使用go install编译项目,也可以直接将instgo作为前缀添加到您原有的编译命令前并执行编译。
使用上一步编译的二进制文件构建镜像。
步骤四:为Golang应用开启ARMS应用监控
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。
-
在无状态页面,单击目标应用右侧。
在YAML文件中将以下
labels添加到spec.template.metadata层级下。labels: aliyun.com/app-language: golang # Go应用必填,标明此应用是Go应用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<your-deployment-name>" #请将<your-deployment-name>替换为您的应用名称。
步骤五:查看监控详情
(可选)步骤六:释放资源
如果无需继续监控当前应用,请卸载探针。具体操作,请参见卸载Golang探针。
相关文档
如需了解如何将ACK集群下的Java应用或Python应用接入ARMS应用监控,请参见Java应用监控、Python应用监控。
> YAML 编辑