借助ARMS应用监控,您可以对ACK Serverless集群中的应用进行应用拓扑、接口调用、异常事务和慢事务监控、SQL分析等监控。本文介绍如何将ACK Serverless集群接入ARMS应用监控,以便通过ARMS监控使用ECI运行的应用。
背景信息
应用实时监控服务ARMS(Application Real-Time Monitoring Service)是一款应用性能管理(APM)产品,包含应用监控、Prometheus监控等功能模块,能帮助您实现全栈式性能监控和端到端全链路追踪诊断,实现轻松高效的应用运维。
为ACK Serverless集群安装ARMS应用监控组件(探针)后,ARMS可以对应用进行全方位监控,帮助您快速定位出错接口和慢接口、重现调用参数、发现系统瓶颈,从而大幅提升线上问题诊断的效率。更多信息,请参见应用监控概述。
前提条件
已创建ACK Serverless集群。
已开通ARMS服务。具体操作,请参见开通ARMS。
检查您的JDK版本。ARMS应用监控支持的JDK版本如下:
JDK 1.7.0+
JDK 1.8.0_25+
说明如果JDK版本为1.8.0_25或者1.8.0_31,可能会出现无法安装探针的情况。如果出现该情况,请升级JDK版本至1.8.0_191及以上版本。
JDK 11.0.8+
说明JDK 1.8及以下版本和JDK 11版本对应的探针安装包不同,请根据不同的JDK版本下载对应的探针安装包或调整应用监控组件ack-onepilot的配置。
步骤一:安装应用监控组件
登录容器服务管理控制台。
在集群页面,单击目标集群名称,进入集群管理页面。
在集群中安装ack-onepilot组件。
在集群管理页左侧导航栏,选择运维管理>组件管理。
单击日志与监控页签,找到ack-onepilot卡片,然后单击安装。
在弹出的对话框中,参考页面提示填写组件配置信息,然后单击确定。
安装完成后,ack-onepilot卡片右上角会显示已安装。
步骤二:授予ARMS资源的访问权限
步骤三:为应用开启应用监控
在集群管理页面的左侧导航栏,选择工作负载>无状态,或者选择工作负载>有状态。
根据需要创建新的应用,或者更新已有应用。
在应用的YAML配置文件中为Pod添加Label即可开启应用监控。相关Label如下:
labels: armsPilotAutoEnable: "on" #开启应用监控 armsPilotCreateAppName: "<deployment-name>" #请将<deployment-name>替换为您的应用名称 one-agent.jdk.version: "OpenJDK11" #如果应用的JDK版本是JDK 11,则需要配置此参数 armsSecAutoEnable: "on" #如果需要接入应用安全,则需要配置此参数
说明Label请添加在Pod的metadata下,例如配置Deployment时,需添加在spec>template>metadata下。
对于已有应用,更新Label后请重启应用。
创建Java应用并开启ARMS应用监控的完整YAML示例如下:
apiVersion: 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-springboot-demo" one-agent.jdk.version: "OpenJDK11" spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo env: - name: SELF_INVOKE_SWITCH value: "true" - name: COMPONENT_HOST value: "arms-demo-component" - name: COMPONENT_PORT value: "6666" - name: MYSQL_SERVICE_HOST value: "arms-demo-mysql" - name: MYSQL_SERVICE_PORT value: "3306" --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-springboot-demo-subcomponent namespace: arms-demo labels: app: arms-springboot-demo-subcomponent spec: replicas: 2 selector: matchLabels: app: arms-springboot-demo-subcomponent template: metadata: labels: app: arms-springboot-demo-subcomponent armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-springboot-demo-subcomponent" one-agent.jdk.version: "OpenJDK11" spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo-subcomponent env: - name: SELF_INVOKE_SWITCH value: "false" - name: MYSQL_SERVICE_HOST value: "arms-demo-mysql" - name: MYSQL_SERVICE_PORT value: "3306" --- apiVersion: v1 kind: Service metadata: labels: name: arms-demo-component name: arms-demo-component namespace: arms-demo spec: ports: # the port that this service should serve on - name: arms-demo-component-svc port: 6666 targetPort: 8888 # label keys and values that must match in order to receive traffic for this service selector: app: arms-springboot-demo-subcomponent --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-demo-mysql namespace: arms-demo labels: app: mysql spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1 name: mysql ports: - containerPort: 3306 name: mysql --- apiVersion: v1 kind: Service metadata: labels: name: mysql name: arms-demo-mysql namespace: arms-demo spec: ports: # the port that this service should serve on - name: arms-mysql-svc port: 3306 targetPort: 3306 # label keys and values that must match in order to receive traffic for this service selector: app: mysql ---
步骤四:查看应用监控数据
开启ARMS应用监控后,可以在ARMS控制台的应用监控页面查看数据。
在集群管理页面的左侧导航栏,选择工作负载>无状态,或者选择工作负载>有状态。
找到要查看监控数据的具体应用,单击对应操作列中的ARMS控制台。
查看应用监控数据。
ARMS应用监控包括自动发现应用拓扑、捕获异常事务和慢事务、实时诊断性能等功能。关于如何使用ARMS应用监控,请参见ARMS应用监控。