当您需要监控部署在容器服务 Kubernetes 版ACK或容器计算服务ACS中的Go应用时,通过安装应用监控组件ack-onepilot并编译Go二进制文件,即可在云监控2.0中查看对应应用的应用拓扑、接口调用、数据库分析等相关监控数据。本文将介绍如何为部署在容器服务 Kubernetes 版ACK或容器计算服务ACS中的Go应用安装探针。
容器服务 Kubernetes 版ACK和容器计算服务ACS安装探针的操作相同,本文以容器服务 Kubernetes 版ACK为例演示安装探针的操作。
如果您在使用Golang探针过程中有任何问题,欢迎通过钉钉答疑群(群号:159215000379)与我们联系。
ack-onepilot组件说明
应用监控探针接入助手(ack-onepilot)是用于接入各语言探针的重要组件,可以帮助用户在容器环境中自动准备好应用监控探针包并构建好探针的上报环境。应用监控探针接入助手(ack-onepilot)的基本原理请参见ack-onepilot组件基本原理说明。
探针接入后,为了确保您的使用体验,在新版本探针发布后,当应用重启时,ack-onepilot将会自动将探针升级到最新版本,如果您不需要跟随应用监控探针的版本发布自动更新挂载的探针,可以自主控制探针版本。具体操作,请参见自主控制探针版本。
前提条件
-
创建ACK集群或ACS集群。
ACK集群:创建ACK托管集群、创建ACK One注册集群、创建ACK专有集群(已停止新建)、创建ACK Serverless集群。
ACS集群:创建ACS集群。
创建命名空间,具体操作,请参见管理命名空间与配额。本文示例中的命名空间名称为default。
检查您的编译环境操作系统和架构,以及Go版本和框架版本。具体要求,请参见ARMS应用监控支持的Go组件和框架。
步骤一:安装探针接入助手(ack-onepilot)
登录容器服务管理控制台,在集群列表页面单击目标集群名称。
在左侧导航栏单击组件管理,然后通过关键字搜索ack-onepilot。
重要ack-onepilot版本需在5.1.0或以上,当前版本正在灰度中,如需使用请联系钉钉答疑群(群号:159215000379)协助开通。
在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: "deployment-name" #请将deployment-name替换为您的应用名称。 armsPilotAppWorkspace: "workspace" # 替换为当前Workspace名称。apiVersion: apps/v1 kind: Deployment metadata: labels: app: otel-go-client name: otel-go-client namespace: default spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: otel-go-client strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: aliyun.com/app-language: golang armsPilotAppWorkspace: "workspace" armsPilotAutoEnable: 'on' armsPilotCreateAppName: otel-go-client app: otel-go-client spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/private-mesh/hellob:otel-client-arms-go-test单击更新。
查看监控详情
登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择。
在应用列表页面可以看到已接入的应用,单击应用名称可以查看详细的应用监控数据。
> YAML 编辑