您只需安装ARMS应用监控组件ack-onepilot,即可监控部署在容器服务 Kubernetes 版ACK或容器计算服务ACS中的Java应用,并查看应用拓扑、接口调用、异常事务和慢事务等相关监控数据。本文介绍如何为容器服务 Kubernetes 版ACK和容器计算服务ACS中的Java应用安装探针。
容器服务 Kubernetes 版ACK和容器计算服务ACS安装探针的操作相同,本文以容器服务 Kubernetes 版ACK为例演示安装探针的操作。
ack-onepilot组件说明
ARMS探针接入助手(ack-onepilot)是用于接入各语言探针的重要组件,可以帮助ARMS用户在容器环境中自动准备好ARMS探针包并构建好探针的上报环境。ARMS探针接入助手(ack-onepilot)的基本原理请参见ack-onepilot组件基本原理说明。
探针接入后,为了确保您的使用体验,在新版本探针发布后,当应用重启时,ack-onepilot将会自动将探针升级到最新版本,如果您不需要跟随ARMS探针的版本发布自动更新挂载的探针,可以自主控制探针版本。具体操作,请参见自主控制探针版本。
旧版应用监控组件arms-pilot已不再维护,您可以安装升级后的ack-onepilot组件用于监控您的应用,ack-onepilot完全兼容arms-pilot,您无需修改应用配置即可无缝接入ack-onepilot。更多信息,请参见如何卸载arms-pilot和安装ack-onepilot。
前提条件
创建ACK集群或ACS集群。
ACK集群:创建ACK托管集群、创建ACK One注册集群、创建ACK专有集群(已停止新建)、创建ACK Serverless集群。
ACS集群:创建ACS集群。
创建命名空间,具体操作,请参见管理命名空间与配额。本文示例中的命名空间名称为arms-demo。
检查您的JDK版本。具体要求,请参见支持的JDK版本。
进程最大堆内存需大于256 MB。
步骤一:安装ARMS探针接入助手(ack-onepilot)
登录容器服务管理控制台,在集群列表页面单击目标集群名称。
在左侧导航栏单击组件管理,然后通过关键字搜索ack-onepilot。
在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组件。
步骤二:授予ARMS资源的访问权限
ACK托管集群
如果ACK托管集群中不存在ARMS Addon Token,请执行以下操作手动为集群授予ARMS资源的访问权限。如果已经存在ARMS Addon Token,请跳转至步骤三。
集群存在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。
admissionRegistration: failurePolicy: Ignore onlyLabel: false configuration: downloadTimeout: "90" controller: accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ accessSource: ACSKS cluster_id: c0c3c907a2e30 clusterProfile: __ACK_CLUSTER_PROFILE__ clusterType: __ACK_CLUSTER_TYPE__ imagePullPolicy: Always is_finance: <no value> logLevel: 1重启应用Deployment。
方式二:通过K8s Secret引入AK/SK
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏选择。
选择ack-onepilot命名空间,然后创建Secret,添加AK/SK信息。
说明获取AccessKey的操作,请参见创建AccessKey。
为降低AccessKey泄露的风险,阿里云账号(主账号)的AccessKey Secret只在创建时显示,后续不支持查看,请妥善保管。
创建 Secret 时,名称填写为
ack-onepilot-aksk,类型选择 Opaque,在数据表格中添加两行:名称为ak的键对应 AccessKey ID 值,名称为sk的键对应 AccessKey Secret 值。在左侧导航栏选择,单击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。
步骤三:为Java应用开启ARMS应用监控
创建一个无状态(Deployment)应用并开启ARMS应用监控的完整YAML示例模板如下:
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。
在无状态页面的目标应用右侧选择。
如需创建一个新应用,单击使用YAML创建资源。
在YAML文件中将以下
labels添加到spec.template.metadata层级下。labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # 请将<your-deployment-name>替换为您的应用名称。 aliyun.com/app-language: javaapiVersion: v1 kind: Namespace metadata: name: arms-demo --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-springboot-demo namespace: arms-demo labels: app: arms-springboot-demo spec: replicas: 2 selector: matchLabels: app: arms-springboot-demo template: metadata: labels: app: arms-springboot-demo armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-k8s-demo" spec: containers: - resources:单击更新。
在无状态页面上,单击目标应用操作列的即可查看应用监控详情。
> YAML 编辑