当您需要监控部署在容器服务 Kubernetes 版ACK或容器计算服务ACS中的Go应用时,通过安装ARMS应用监控组件ack-onepilot并编译Go二进制文件,即可在应用实时监控服务ARMS中查看对应应用的应用拓扑、接口调用、数据库分析等相关监控数据。本文将介绍如何为部署在容器服务 Kubernetes 版ACK或容器计算服务ACS中的Go应用安装探针。
容器服务 Kubernetes 版ACK和容器计算服务ACS安装探针的操作相同,本文以容器服务 Kubernetes 版ACK为例演示安装探针的操作。
如果您在使用Golang探针过程中有任何问题,欢迎通过钉钉答疑群(群号:159215000379)与我们联系。
前提条件
-
创建ACK集群或ACS集群。
ACK集群:创建ACK托管集群、创建ACK One注册集群、创建ACK专有集群(已停止新建)、创建ACK Serverless集群。
ACS集群:创建ACS集群。
创建命名空间,具体操作,请参见管理命名空间与配额。本文示例中的命名空间名称为default。
检查您的编译环境操作系统和架构,以及Go版本和框架版本。具体要求,请参见ARMS应用监控支持的Go组件和框架。
步骤一:授予 ARMS 资源的访问权限
ACK托管集群
如果ACK托管集群中不存在ARMS Addon Token,请执行以下操作手动为集群授予ARMS资源的访问权限。
集群存在ARMS Addon Token时,ARMS会进行免密授权。Kubernetes托管版集群默认存在ARMS Addon Token,但对于部分早期创建的Kubernetes托管版集群,可能会存在没有ARMS Addon Token的情况,因此,对于Kubernetes托管版集群,建议首先检查ARMS Addon Token是否存在。若不存在,需进行手动授权。
专有版集群/注册集群
如果需要监控ACK专有版集群和ACK One注册集群应用,请确认对应的阿里云账号已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess权限。添加权限的操作,请参见管理RAM用户的权限。
安装ack-onepilot组件后,还需要在ack-onepilot中填写有ARMS权限的阿里云账号AK/SK。
方式一:Helm中直接填写AK/SK
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏选择页面,单击ack-onepilot组件右侧的更新。
将
accessKey和accessKeySecret替换为当前账号的AccessKey,然后单击确定。说明获取AccessKey的操作,请参见创建AccessKey。

重启应用Deployment。
方式二:通过K8s Secret引入AK/SK
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏选择。
选择ack-onepilot命名空间,然后创建Secret,添加AK/SK信息。
说明获取AccessKey的操作,请参见创建AccessKey。

在左侧导航栏选择,单击ack-onepilot组件(一般在ack-onepilot命名空间下,名称为ack-onepilot-ack-onepilot)。
在ack-onepilot-ack-onepilot页面右上角单击编辑,然后在环境变量区域添加
ONE_PILOT_ACCESSKEY和ONE_PILOT_ACCESSKEY_SECRET,通过保密字典引用的方式替换为Secret中保存的值,单击确定。
ASK/ECI集群
如果需监控ACK Serverless集群或对接了ECI的集群应用,请在云资源访问授权页面完成授权,然后重启ack-onepilot组件下的所有Pod。
步骤二:安装 ARMS 探针接入助手(ack-onepilot)
登录容器服务管理控制台,在集群列表页面单击目标集群名称。
在左侧导航栏单击组件管理,然后通过关键字搜索ack-onepilot。
重要请确保ack-onepilot的版本在3.2.0或以上。
在ack-onepilot卡片上单击安装。
说明ack-onepilot组件默认支持1000个pod规模,集群pod每超过1000个,ack-onepilot资源对应的CPU请增加0.5核、内存请增加512 MB。
如果在ACS集群中安装ack-onepilot,请在安装卡片的最下方配置accessKey与accessKeySecret,阿里云账号的AccessKey ID和AccessKey Secret。获取方法,请参见创建AccessKey。请确认对应的阿里云账号已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess权限。
在弹出的页面中可以配置相关的参数,建议使用默认值,单击确认。
说明安装完成后,您可以在组件管理页面升级、配置或卸载ack-onepilot组件。
步骤三:编译 Golang 应用镜像
(可选)若项目在编译时包含vendor目录,请在
go build后添加-mod=vendor。使用
wget命令下载编译工具instgo,请根据编译环境和编译机器所在地域,选择对应的下载地址。需要注意,instgo 在编译时会触发自动更新,请将 instgo 保存在编译用户具有修改权限的目录下。
说明Instgo 是 ARMS 提供的 Golang 应用编译工具,使用 instgo 编译您的 Golang 项目后,ARMS 即可开始监控您的 Golang 应用。
各地域下载的编译工具是相同的,如果您的公网环境可以访问OSS地址,可以直接使用对应操作系统和架构的杭州公网地址获取编译工具。
为编译工具赋予可执行权限。
Linux/Mac
# 赋予可执行权限 chmod +x instgoWindows
Windows中无需赋予可执行权限。
(可选)配置Uid作为编译参数。
重要如果您跳过该步,instgo会默认为您安装最新版本ARMS探针。
使用set命令配置uid或者licensekey作为编译参数。
instgo set --uid={YourAliyunUid} //需要使用instgo 1.4.5及以上版本,uid为阿里云主账号uid将instgo作为前缀添加到您原有的编译命令前并执行编译。
instgo go build {arg1} {arg2} {arg3}如果您使用go install编译项目,也可以直接将instgo作为前缀添加到您原有的编译命令前并执行编译。
使用上一步编译的二进制文件构建镜像。
步骤四:为 Go 应用开启 ARMS 应用监控
创建一个无状态(Deployment)应用并开启ARMS应用监控的完整YAML示例模板如下:
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面左侧顶部,选择目标集群所在的资源组和地域,单击目标集群名称,然后在左侧导航栏,单击工作负载,然后选择无状态、有状态或守护进程集。
在目标应用右侧选择。
如需创建一个新应用,单击使用YAML创建资源。
在YAML文件中将以下
labels添加到spec.template.metadata层级下。labels: aliyun.com/app-language: golang # Go应用必填,标明此应用是Go应用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<YOUR-DEPLOYMENT-NAME>" #请将<YOUR-DEPLOYMENT-NAME>替换为您的应用名称。
单击更新。
执行结果
约一分钟后,若Golang应用出现在ARMS控制台的页面中且有数据上报,则说明接入成功。

> YAML 编辑