本文主要为您介绍如何为运行在ECI上的应用集成ARMS监控。
关于ARMS
应用实时监控服务 (Application Real-Time Monitoring Service, 简称ARMS) 是一款应用性能管理产品,包含前端监控,应用监控和Prometheus监控三大子产品,涵盖了浏览器,小程序,APP,分布式应用和容器环境等性能管理,能帮助你实现全栈式的性能监控和端到端的全链路追踪诊断, 让应用运维从未如此轻松高效。
前提条件
开通ARMS
应用监控(arms-pilot)
ARMS 应用监控是一款应用性能管理(Application Performance Management,简称 APM)产品。您无需修改代码,只需为应用安装一个探针,ARMS 就能够对应用进行全方位监控,帮助您快速定位出错接口和慢接口、重现调用参数、发现系统瓶颈,从而大幅提升线上问题诊断的效率。
1、安装 ARMS 应用监控组件
登录容器服务管理控制台,点击左侧导航栏 市场 > 应用目录,搜索ack-arms-pilot。

点击参数页,选择右侧安装arms-pilot的目标集群,并填写accessKey和accessKeySecret,点击创建。

创建完成后,在Serverless集群的集群详情中,点击 工作负载 > 无状态,切换至arms-pilot命名空间,可以看到组件已经安装完成。

2、为应用开启 ARMS 应用监控
新建应用开启 ARMS 应用监控
在容器服务管理控制台左侧导航栏选择 工作负载 > 无状态,右上角单击 使用模板创建 进行创建。

在使用模板创建页面上选择命名空间和示例模板,并在模板(YAML格式)中将以下annotations添加至spec > template > metadata层级下。
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "<your-deployment-name>"

以Java应用Spring Cloud Eureka Server为例,开启ARMS应用监控的完整YAML示例模板如下:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: register-server
spec:
replicas: 3
serviceName: register-server
selector:
matchLabels:
app: register-server
template:
metadata:
labels:
app: register-server
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "register-server"
spec:
containers:
- name: register-server
image: registry.cn-hangzhou.aliyuncs.com/shuangling/eureka-server:v1
imagePullPolicy: Always
env:
- name: EUREKA_DEFAULT_ZONE
value: "http://register-server-0.register-server:8000/eureka/,http://register-server-1.register-server:8000/eureka/,http://register-server-2.register-server:8000/eureka/"
- name: JVM_OPTS
value: " -Xms1024m -Xmx1536m "
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
ports:
- name: http
containerPort: 8000
protocol: TCP
readinessProbe:
httpGet:
path: /actuator/health
port: 8001
scheme: HTTP
failureThreshold: 3
initialDelaySeconds: 60
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
volumeMounts:
- mountPath: /Charts
name: data
volumes:
- name: data
emptyDir: {}
podManagementPolicy: "Parallel"
---
apiVersion: v1
kind: Service
metadata:
name: register-server
labels:
app: register-server
spec:
clusterIP: None
type: ClusterIP
ports:
- port: 8000
targetPort: http
protocol: TCP
name: http
selector:
app: register-server
已有应用开启 ARMS 应用监控
在容器服务管理控制台的集群详情页 工作负载 > 无状态/有状态 中,点击具体负载条目的 更多 > 查看Yaml。

将以下annotations添加至spec > template > metadata层级下, 并点击更新。
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "<your-deployment-name>"

更新后需要一定时间重建容器组,请等待所有容器组滚动更新完毕后再点击ARMS控制台按钮进行查看。
3、应用监控查看
成功开启ARMS应用监控后,在容器服务管理控制台左侧导航栏选择工作负载 > 无状态对应的无状态应用详情行中,点击 ARMS控制台按钮跳转。

点击进入后可查看ARMS各项应用监控指标。

Prometheus监控(arms-prometheus)
ARMS Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助ARMS Prometheus监控,您无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。
如果您集群内使用的安全组非自动创建生成,是手动配置的企业安全组,请确保该安全组内已经添加了8080/8081/9335的VPC内端口开放规则。
1、安装ARMS Prometheus监控组件
登录容器服务管理控制台,点击左侧操作栏 > 市场 > 应用目录,搜索ack-arms-prometheus。

点击参数页,选择右侧安装arms-prometheus的目标集群,替换左侧配置文件中的accessKey和accessKeySecret,点击创建。

2、监控查看与配置
组件安装完毕后,点击左侧导航栏集群 > 集群名称/ID, 进入集群信息页。点击集群信息页右上角Prometheus监控。

在ARMS的Prometheus监控页面中,可以在大盘列表中查看监控项,在左侧接入配置列表中自定义监控接入项。

点击大盘列表中的监控项,可以查看监控的具体信息。

ARMS Prometheus监控兼容并提供三种主流采集规则的实现,包括标准开源prometheus.yaml采集规则配置文件、适合自定义K8s内监控的采集规则ServiceMonitor、以及默认采集规则Annotation。
标准开源prometheus.yaml
在应用实时监控服务ARMS控制台,点击集群名进入集群监控页,在左侧导航栏设置 > Prometheus设置进行prometheus.yaml的更新与保存。
ARMS Prometheus监控无需重启,使用prometheus.yaml配置文件即可动态更新采集规则。

自定义K8s内监控的采集规则ServiceMonitor
在应用实时监控服务ARMS控制台,点击集群名进入集群监控页,在左侧导航栏设置 > 服务发现 > 添加ServiceMonitor进行K8s集群内应用业务数据的监控。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
# 填写一个唯一名称
name: tomcat-demo
# 填写目标命名空间
namespace: default
spec:
endpoints:
- interval: 30s
# 填写Prometheus Exporter对应的Port的Name字段的值
port: tomcat-monitor
# 填写Prometheus Exporter对应的Path的值
path: /prometheus-metrics
namespaceSelector:
any: true
selector:
matchLabels:
#填写service.yaml的label字段,用来定位目标service.yaml
app: tomcat
默认采集规则Annotation
在Deployment文件里无需编写多行代码,仅需增加以下3个Annotation注解即可。
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9090"
prometheus.io/path: "/metrics"
更多信息:
在文档使用中是否遇到以下问题
更多建议
匿名提交