接入阿里云Prometheus监控以全面采集ACK集群的控制面、节点和应用指标,并通过可视化大盘和实时告警提升集群性能管理效率。
快速选型
阿里云Prometheus监控全面对接开源Prometheus生态,提供全托管的监控服务。无需关心底层数据存储、数据展示、系统运维等问题。
- Pro版(推荐):指标存储周期90天,并提供全托管的采集器,生产级SLA达99.95%。提供可定制化的Grafana大盘,并预置了容器服务各组件的告警规则。 
- 基础版:指标存储周期7天。需自行维护采集器,仅提供基础的监控大盘。 
开启Prometheus监控
已有集群中开启
创建集群时开启
配置告警通知
为关键指标配置告警规则,发生异常时,会自动通过邮件、短信或钉钉等渠道发送通知。
- 登录ARMS控制台,在左侧导航栏选择。 
- 在通知对象页面选择通知方式,创建告警通知对象。 
- 在ARMS控制台左侧导航栏,选择。 
- 在Prometheus告警规则页面,单击创建Prometheus告警规则。 - 详细规则配置,请参见配置Prometheus告警规则。 
采集自定义监控指标
Prometheus监控支持多种方式采集自定义指标(例如请求QPS、处理延迟等),请参见管理容器环境自定义采集规则。
关闭Prometheus监控
- 在目标集群详情页左侧导航栏,单击组件管理。 
- 在组件管理页面,单击日志与监控页签,找到ack-arms-prometheus组件。单击卸载,然后在弹框中单击确认。 
计费说明
- 集群规模监控费用:基础版免费,Pro版根据集群节点规模按量计费。 
- Prometheus实例费用:采集基础指标,在默认情况下不收取费用。采集自定义指标,根据写入量、上报量、存储量及存储周期等按量计费。 
如需了解详细的计费规则与定价,请参见容器监控计费。
默认采集的基础指标
常见基础指标如下,更多基础指标请参见指标说明。
| 分类 | 指标 | 描述 | 
| 容器基础资源监控kubelet | 
 | 容器CPU使用时间总计 | 
| 
 | 容器内存使用字节 | |
| 
 | 容器文件系统使用字节 | |
| 
 | 容器网络传输字节总计 | |
| 集群节点基础资源监控node-exporter | 
 | 节点CPU使用时间总计 | 
| 
 | 节点可用内存大小(字节) | |
| 
 | 节点1分钟负载 | |
| 
 | 节点文件系统可用字节数 | |
| 
 | 累计接收字节总数 | |
| 控制面组件API Server监控 | 
 | API总请求数 | 
| 
 | APIServer请求处理时间(以秒为单位)的桶 | |
| 
 | APIServer当前正在处理的请求数量 | |
| 集群应用状态监控kube-state-metrics | 
 | Pod状态阶段 | 
| 
 | Kubernetes Deployment可用副本数 | |
| 
 | 节点状态条件 | |
| 
 | Pod容器重启总数 | |
| 
 | Kubernetes Deployment规格副本数 | |
| CoreDNS监控 | 
 | CoreDNS DNS请求持续时间(秒)分位数 | 
| 
 | CoreDNS DNS响应代码计数总计 | |
| 
 | CoreDNS DNS请求计数总计 | |
| 
 | CoreDNS缓存命中次数总计 | |
| 
 | CoreDNS缓存未命中次数总计 | |
| 集群、节点存储监控 | 
 | 集群PV状态总数 | 
| 
 | 集群PVC状态总数 | |
| 
 | 容器文件系统使用字节数 | |
| 
 | 节点卷可用容量(字节) | |
| 
 | 节点卷I/O时间总秒数 | |
| 
 | 节点卷读取字节总数 | |
| 
 | 节点卷写入字节总数 | |
| 节点GPU监控gpu-exporter | 
 | 表示为容器分配显存 | 
| 
 | 表示GPU卡已分配显存占总显存的比例,值的区间为[0,1] | |
| 
 | 表示GPU卡的总显存 | |
| 
 | 表示GPU线程的解码器利用率 | |
| 成本监控cost-exporter | 
 | 当前节点实际价格 | 
| 
 | 当前实例对应一笔账单的应付金额 | |
| 
 | 当前实例对应一笔账单的资源用量 | |
| 
 | 当前实例对应一笔账单的优惠金额 | |
| 
 | 当前实例对应一笔账单的未结清金额 | |
| Ingress监控 | 
 | Nginx Ingress控制器请求总数 | 
| 
 | Nginx Ingress控制器请求耗时分布(秒) | |
| 
 | Nginx Ingress控制器 - 发送字节总计(总和) | |
| 
 | Nginx Ingress控制器 - 错误数 | |
| 资源调度监控 | 
 | 节点分配资源指标 | 
| 
 | 容器资源requests指标 | |
| 
 | 容器资源limits指标 | |
| 
 | 调度器待处理Pod数 | |
| 
 | 调度器调度尝试总数 | |
| 
 | 调度器端到端调度持续时间分布 | |
| 
 | 调度器 Pod 调度时长分布桶(秒) | |
| 
 | 调度器未调度Pod数 | 
常见问题
Prometheus监控页面显示未找到相关监控大盘
如开启Prometheus监控后,在目标集群详情页的页面上,看到未找到相关监控大盘的提示,按照以下操作步骤解决。

- 重新安装Prometheus监控组件。 - 重新安装组件: - 确认卸载完成后,单击安装,然后在弹框中单击确认。 
- 等待安装完成后,返回到Prometheus监控页面查看问题是否已解决。 - 如果问题仍未解决,请继续以下操作。 
 
 
- 检查Prometheus实例接入。 - 在ARMS控制台左侧导航栏,单击接入管理。 
- 在已接入环境页签,查看容器环境列表,确认是否存在与集群名称相同的容器环境。 - 没有相应容器环境:参见通过ARMS或Prometheus控制台接入。 
- 有相应容器环境:单击目标容器环境操作列的探针设置,进入探针设置页面。 - 检查安装探针是否正常运行。 
 
 
如何查看ack-arms-prometheus组件版本?
- 在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,单击组件管理。 
- 在组件管理页面,单击日志与监控页签,找到ack-arms-prometheus组件。 - 在组件下方显示当前版本信息,如有新版本需要升级,可单击版本右侧升级完成组件升级。 说明- 当已安装的组件版本不是最新版本时,才会显示升级操作。 
为什么GPU监控无法部署?
如GPU节点上存在污点,可能导致GPU监控无法部署。可通过以下步骤查看GPU节点的污点情况。
- 执行以下命令,查看目标GPU节点的污点情况。 - 如GPU节点拥有自定义的污点,可找到污点相关的条目。本文以 - key为- test-key、- value为- test-value、- effect为- NoSchedule为例说明:- kubectl describe node cn-beijing.47.100.***.***- 预期输出: - Taints:test-key=test-value:NoSchedule
- 通过以下两种方式处理GPU节点的污点。 - 执行以下命令,删除GPU节点的污点。 - kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-
- 对GPU节点的污点进行容忍度声明,允许Pod调度到该污点的节点上。 - # 1.执行以下命令,编辑ack-prometheus-gpu-exporter。 kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. 在YAML中添加如下字段,声明对污点的容忍度。 #省略其他字段。 #tolerations字段添加在containers字段上面,且与containers字段同级。 tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: #省略其他字段。
 
如何完整地手动删除ARMS-Prometheus?
只删除阿里云Prometheus的命名空间,会导致资源删除后有残留配置,影响再次安装。可执行以下操作,完整地手动删除ARMS-Prometheus残余配置。
- 删除arms-prom命名空间。 - kubectl delete namespace arms-prom
- 删除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 kubectl delete ClusterRole gpu-prometheus-exporter kubectl delete ClusterRole o11y:addon-controller:role kubectl delete ClusterRole arms-aliyunserviceroleforarms-clusterrole
- 删除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 arms-kube-state-metrics kubectl delete ClusterRoleBinding arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding gpu-prometheus-exporter kubectl delete ClusterRoleBinding o11y:addon-controller:rolebinding kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent kubectl delete ClusterRoleBinding arms-node-exporter-agent kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-clusterrolebinding
- 删除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
如何通过Helm方式卸载阿里云Prometheus?
如通过Helm方式手动部署,或遇到环境、Helm版本问题导致的资源残留,需通过此方式卸载。
- 在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。 
- 在Helm页面,定位arms-prometheus组件,然后单击操作列的删除,按照页面提示勾选清除发布记录并删除应用。 
安装ack-arms-prometheus组件时报错xxx in use
- 在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。 
- 在Helm页面,检查是否存在ack-arms-prometheus。 - 存在:在Helm页面删除ack-arms-prometheus,并在组件管理页面重新安装ack-arms-prometheus。关于安装ack-arms-prometheus的具体操作,请参见管理组件。 
- 不存在: - 若没有ack-arms-prometheus,表明删除ack-arms-prometheus Helm Release时有资源残留,需完整地手动删除ARMS-Prometheus。 
 
 
提示Component Not Installed后继续安装ack-arms-prometheus组件,安装失败
- 检查是否已经安装ack-arms-prometheus组件。 - 在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。 
- 在Helm页面,检查是否存在ack-arms-prometheus。 - 存在:在Helm页面删除ack-arms-prometheus,并在组件管理页面重新安装ack-arms-prometheus。关于安装ack-arms-prometheus的具体操作,请参见管理组件。 
- 不存在: - 若没有ack-arms-prometheus,表明删除ack-arms-prometheus Helm Release时有资源残留,需完整地手动删除ARMS-Prometheus。 
 
 
 
- 检查ack-arms-prometheus的日志是否有报错。 - 在集群详情页左侧导航栏,选择。 
- 在无状态页面顶部设置命名空间为arms-prom,然后单击arms-prometheus-ack-arms-prometheus。 
- 单击日志页签,查看日志中是否有报错。 
 
- 检查Agent是否安装报错。 - 登录ARMS控制台。在左侧导航栏,单击接入管理。 
- 在已接入环境页签,查看容器环境列表,单击目标容器环境操作列的探针设置,进入探针设置页面。 
 
如何为ACK专有集群进行监控策略授权?
- 在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,单击集群信息。 
- 在基本信息页签下,单击Worker RAM 角色右侧的KubernetesWorkerRole-***,然后在RAM角色页面的权限管理页签,单击权限策略列下的k8sWorkerRole****。 
- 在权限策略详情页面的策略内容页签下,单击编辑策略内容。 
- 在脚本编辑框中的Statement字段中增加以下授权规则,修改完成后单击确定。 - { "Version": "1", "Statement": [ { "Action": [ "arms:Describe*", "arms:List*", "arms:Get*", "arms:Search*", "arms:Check*", "arms:Query*", "arms:ListEnvironments", "arms:DescribeAddonRelease", "arms:InstallAddon", "arms:DeleteAddonRelease", "arms:ListEnvironmentDashboards", "arms:ListAddonReleases", "arms:CreateEnvironment", "arms:UpdateEnvironment", "arms:InitEnvironment", "arms:DescribeEnvironment", "arms:InstallEnvironmentFeature", "arms:ListEnvironmentFeatures", "cms:CreateIntegrationPolicy", "cms:ListAddonReleases", "cms:UpdateAddonRelease", "cms:CreateAddonRelease", "cms:GetPrometheusInstance", "cms:ListIntegrationPolicyStorageRequirements" ], "Resource": "*", "Effect": "Allow" } ] }