借助ARMS应用监控,您可以对通用Kubernetes环境的应用进行应用拓扑、接口调用、异常事务和慢事务监控、SQL分析等监控。本文将帮助您将通用Kubernetes环境中的Java应用接入ARMS应用监控。
如果您使用的Kubernetes集群由容器服务ACK提供,本文不适用,ACK集群接入ARMS的操作请参见容器服务ACK环境自动安装探针。
前提条件
请确保您的Kubernetes集群版本为1.18或以上。
如果您的Kubernetes集群没有部署在阿里云,请确保集群能够连通公网,或者通过云企业网等方式打通阿里云VPC和集群之间的连接。
检查您的JDK版本。具体要求,请参见支持的JDK版本。
进程最大堆内存需大于256 MB。
(推荐)方式一:通过ACK注册集群接入ARMS
使用ACK注册集群的优势:
更高效的运维支持。
获得更多容器服务ACK集群扩展能力,包括:监控、日志、备份恢复、安全、云上弹性资源等。更多信息,请参见注册集群概述。
将Kubernetes集群接入ACK One。具体操作,请参见创建注册集群。
为注册集群安装ack-onepilot组件。具体操作,请参见将应用实时监控服务ARMS接入注册集群。
方式二:直接接入ARMS
该方式未使用ACK注册集群,接入后,容器相关的信息(CPU、内存、Disk、网络)无法关联展示。即在应用实例页面仅展示ARMS自采集版的容器环境数据,且后续无法通过接入可观测监控 Prometheus 版查看Prometheus探针获取的容器数据,更多信息,请参见Java应用实例监控。
步骤1:安装Helm3
步骤2:安装探针
ARMS应用监控目前仅支持无状态(Deployment)和有状态(StatefulSet)两种类型的应用接入,两种类型的应用接入方法相同。此处以将Kubernetes环境中的无状态(Deployment)类型的应用接入ARMS应用监控为例。
执行以下
wget
命令下载ack-onepilot安装包。wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-3.3.3.tgz'
执行以下命令解压ack-onepilot安装包。
tar xvf ack-onepilot-3.3.3.tgz
编辑安装包下的values.yaml文件,根据实际情况修改以下参数,然后保存。
registry: registry-__ACK_REGION_ID__.ack.aliyuncs.com/acs/ cluster_id: __ACK_CLUSTER_ID__ accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ uid: "__ACK_UID__" region_id: __ACK_REGION_ID__
registry
:ack-onepilot镜像地址。cluster_id
:自定义Kubernetes集群ID,集群的唯一标识。建议格式为<uid>-<clusterid>
。accessKey
和accessKeySecret
:阿里云账号的AccessKey ID和AccessKey Secret。获取方法,请参见创建AccessKey。重要请确认对应的阿里云账号已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess权限。
如果当前操作的是RAM用户,请确认RAM用户也包含AliyunARMSFullAccess和 AliyunSTSAssumeRoleAccess权限,具体操作,请参见为RAM用户授权。
uid
:阿里云账号ID。将鼠标悬浮于阿里云控制台右上角的头像上可以获取。region_id
:阿里云地域ID,应用监控支持的地域,请参见开服地域。
执行以下命令安装ack-onepilot。
请在ack-onepilot安装包外执行此命令。
helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace
步骤3:修改应用的YAML文件
执行以下命令查看目标无状态(Deployment)应用的YAML文件。
kubectl get deployment {deployment名称} -o yaml
说明若您不清楚
{deployment名称}
,请先执行以下命令查看所有无状态(Deployment)应用,在执行结果中找到目标无状态(Deployment)应用,再查看目标无状态(Deployment)应用的YAML文件。kubectl get deployments --all-namespace
启动编辑目标无状态(Deployment)应用的YAML文件。
kubectl edit deployment {Deployment名称} -o yaml
在YAML文件中的spec.template.metadata层级下添加以下内容。
labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" #请将<your-deployment-name>替换为您的应用名称。 armsSecAutoEnable: "on" #如果需要接入应用安全,则需要配置此参数。
如果您需要在K8s环境中创建一个新的无状态(Deployment)应用并接入ARMS,则应用的完整YAML文件如下:
保存配置后,应用将自动重启,以上配置生效。
2~5分钟后,若您的应用出现在ARMS控制台的 页面中且有数据上报,则说明接入成功。