您可以通过ARMS Prometheus监控查看ACK预先配置的监控大盘和监控性能指标。本文为您介绍如何在ACK中接入ARMS Prometheus监控,如何配置Prometheus监控报警及如何自定义Prometheus监控指标并通过Grafana展示。
背景信息
ARMS Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助ARMS
Prometheus监控,您无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。
有关ARMS Prometheus监控的更多信息,请参见什么是Prometheus监控。
开启ARMS Prometheus监控
您可以通过以下三种方式开启ARMS Prometheus监控:
通过ACK控制台配置集群参数开启Prometheus监控
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击页面右上角的创建集群。
- 选择目标集群模板,然后配置创建集群参数。在组件配置页面,选中使用Prometheus监控服务。
集群创建完成后,系统将自动配置ARMS Prometheus监控服务。
通过ACK控制台Prometheus监控开启Prometheus监控
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理左侧导航栏中,选择。
- 在Prometheus监控页面,控制台自动安装组件、检查监控大盘。安装完成后,单击各个页签查看相应监控数据。
通过ACK控制台应用目录开启ARMS Prometheus监控
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,选择。
- 在应用市场页面单击应用目录页签,然后搜索并单击ack-arms-prometheus。
- 在ack-arms-prometheus页面,单击一键部署。
- 在一键部署面板中,选择集群和命名空间,然后单击下一步。
说明 命名空间和发布名称默认为arms-prom。
- 在参数配置页面,设置相应参数,然后单击确定。
执行结果
安装完成后会自动跳转到应用arms-prom页面,可查看应用信息。
查看GPU节点的污点情况
如果您的GPU节点上存在污点,可能会导致GPU监控无法部署。您可以通过以下步骤查看GPU节点的污点情况。更多信息,请参见污点和容忍度。
- 执行以下命令,查看目标GPU节点的污点情况。
kubectl describe node cn-beijing.47.100.XX.XX
如果您的GPU节点拥有自定义的污点,可在描述中找到污点相关的条目。本文以
key
为
test-key
、
value
为
test-value
、
effect
为
NoSchedule
为例,污点示例如下:
Taints: test-key=test-value:NoSchedule
- 对GPU节点的污点进行删除或添加容忍度操作。您可以选择以下任一方式进行操作。
查看ARMS Prometheus Grafana大盘
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,选择。
- 在Promethues监控页面,单击需要查看的Grafana监控大盘名,即可查看相应的监控数据。
配置Prometheus监控报警
为监控任务创建报警可在满足报警条件时通过邮件、短信、钉钉等渠道实时报警,主动帮助您发现异常。报警规则被触发时会向您指定的联系人分组发送通知,而在创建联系人分组之前必须先创建联系人。创建联系人时,您可以指定联系人用于接收通知的手机号码和邮箱地址,也可以提供用于自动发送报警通知的钉钉机器人地址。
说明 如需将钉钉机器人添加为联系人,则需要先获取钉钉机器人的地址。具体操作,请参见
设置钉钉机器人报警。
- 登录ARMS控制台。
- 在控制台左侧导航栏,选择。
- 在联系人页签,单击右上角的新建联系人。配置联系人信息,然后单击确认。
- 配置报警规则。
- 登录ARMS控制台。
- 在控制台左侧导航栏选择。
- 在Prometheus监控页面左上角选择容器服务K8s集群所在的地域,然后单击目标实例名称进入对应实例页面。
- 在左侧导航栏单击报警配置。
- 在报警规则说明列表单击对应报警操作列的编辑,输入PromQL语句配置报警规则,配置完成后单击确定,可直接开启预置的报警规则。
验证结果
进行手动测试,触发钉钉告警。正常触发告警如下:

自定义Prometheus监控指标并通过Grafana展示
方式一:通过Annotations自定义指标监控
通过给Deployment Pod Template加入Annotations的方式自定义监控,阿里云ARMS应用监控组件将会使ARMS Prometheus监控自动获取Pod自定义指标。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,选择。
- 在无状态页面中,创建应用。
- 单击使用镜像创建。
- 在配置向导应用基本信息中填写应用的基本信息,单击下一步。
- 创建一个Web应用,暴露5000端口。
以镜像
yejianhonghong/pindex
为示例。

- 单击下一步。
- 给Pod添加ARMS相关的Annotations。
prometheus.io/port表示Prometheus要scrape的endpoint端口,
prometheus.io/path表示Prometheus要scrape的endpoint路径。

- 单击创建,完成应用创建任务。
- 在服务页面创建服务。
- 在集群管理页左侧导航栏中,选择。
- 单击服务页面右上角的创建。
- 在类型中选择负载均衡型服务及公网访问。
- 在关联中选择步骤4创建的应用。
- 单击创建,完成服务创建任务。
- 配置自定义指标。
- 登录ARMS控制台。
- 在左侧导航栏选择。
- 在Prometheus监控页面左上角选择容器服务K8s集群所在的地域,然后单击目标实例名称进入对应实例页面。
- 在左侧导航栏单击服务发现,然后单击Targets页签,可以看到自定义的指标已经配置成功。
- 访问步骤5所创建服务暴露出来的公网IP,增加指标值。
- 单击Prometheus任意一个预置的图表进入Grafana,然后单击添加Panal ,选择Graph类型,将Metrics填写为current_person_counts。
- 保存配置即可观察到自定义指标的Grafana图形。
方式二:通过ServiceMonitor自定义指标监控
通过ServiceMonitor方式自定义指标监控在部署的时候不需要配置Annotations,但是要给Service对象添加标签。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在无状态页面中,创建应用。
- 在集群管理页左侧导航栏中,选择。
- 单击使用镜像创建。
- 在配置向导应用基本信息中填写应用的基本信息,单击下一步。
- 创建一个Web应用,暴露5000端口。
以镜像
yejianhonghong/pindex
为示例。

单击下一步。
- 单击创建,完成应用创建任务。
- 在服务页面创建服务。
- 在集群管理页左侧导航栏中,选择。
- 单击服务页面右上角的创建。
- 在类型中选择负载均衡型服务及公网访问。
- 在关联中选择步骤4创建的应用。
- 添加标签。
该标签将被用于ServiceMonitor的selector。

- 单击创建,完成服务创建任务。
- 使Prometheus获得服务Scape Endpioint。
- 登录ARMS控制台。
- 在左侧导航栏选择。
- 在Prometheus监控页面左上角选择容器服务K8s集群所在的地域,然后单击目标实例名称进入对应实例页面。
- 在左侧导航栏单击服务发现,然后单击配置页签。
- 在配置页签下单击ServiceMonitor。
- 在ServiceMonitor页签下单击添加ServiceMonitor创建ServiceMonitor。
模板文件如下所示。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
#填写一个唯一名称。
name: custom-metrics-pindex
#填写目标命名空间。
namespace: default
spec:
endpoints:
- interval: 30s
#填写service.yaml中对应的Port的Name字段的值(参考上图)。
port: web
#填写Service对应的Path的值。
path: /access
namespaceSelector:
any: true
#Nginx Demo的命名空间。
selector:
matchLabels:
#填写service.yaml的Label字段的值以定位目标service.yaml。
app: custom-metrics-pindex
单击确定完成ServiceMonitor创建。
- 在Targets页签,可见Prometheus已经获得服务Scape Endpioint。

说明 这里ServiceMonitor定义比Annotations方式更直观,指示出了Namespace和Service名称。
- 访问步骤5创建的服务暴露出来的公网IP,增加指标值。
- 单击Prometheus任意一个预置的图表进入Grafana,然后单击添加Panal,选择Graph类型,将Metrics填写为current_person_counts。
- 保存配置即可观察到自定义指标的Grafana图形。
常见问题
删除ARMS Prometheus的命名空间后,重新安装ARMS Prometheus失败。
只删除ARMS Prometheus的命名空间,会导致资源删除后有残留配置,影响再次安装。您可以执行以下操作,删除残余配置。
- 删除ClusterRole。
kubectl delete ClusterRole arms-kube-state-metrics
kubectl delete ClusterRole arms-node-exporter
kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role
kubectl delete ClusterRole arms-prometheus-oper3
kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role
kubectl delete ClusterRole arms-pilot-prom-k8s
- 删除ClusterRoleBinding。
kubectl delete ClusterRoleBinding arms-node-exporter
kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding
kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2
kubectl delete ClusterRoleBinding kube-state-metrics
kubectl delete ClusterRoleBinding arms-pilot-prom-k8s
kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding
- 删除Role及RoleBinding。
kubectl delete Role arms-pilot-prom-spec-ns-k8s
kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system
kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s
kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system