接入阿里云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" } ] }