EKS集群特定Pod的Prometheus告警规则通用配置方法咨询
EKS集群Pod级资源告警规则通用配置方案
核心透传逻辑
你不需要在告警表达式中硬编码集群名、Pod匹配规则,完全可以基于Prometheus自带的标签选择能力实现一套规则复用所有场景:
- 集群名透传:通过EKS的Prometheus自动发现配置(或kube-prometheus栈),会给所有采集到的指标统一附加
cluster标签,值为对应EKS集群的名称,规则中只需要通过标签匹配即可指定生效集群,不需要嵌入复杂字符串 - Pod匹配规则:所有cAdvisor、kubelet采集的Pod级指标自带
namespace、pod标签,原生支持正则匹配,可灵活传入任意Pod名称匹配模式,不需要修改表达式核心逻辑
可直接复用的告警规则模板
以下规则和参考的节点磁盘告警逻辑保持一致,采用“当前使用率阈值+线性预测写满时间”的判断逻辑,适配EKS默认采集的cAdvisor指标,无需额外部署采集组件:
Pod CPU使用率填充告警
- alert: PodCPUUsageFillingUp expr: | ( # 计算Pod实际CPU使用率 = 实际用量 / 容器配置的CPU Request阈值 sum(rate(container_cpu_usage_seconds_total{ cluster="替换为你的EKS集群名", container!="POD", image!="" }[5m])) by (namespace, pod, cluster) / sum(kube_pod_container_resource_requests{ resource="cpu", cluster="替换为你的EKS集群名", container!="POD" }) by (namespace, pod, cluster) ) > 0.8 and # 基于近1小时数据,预测未来2小时CPU是否会打满 predict_linear( sum(rate(container_cpu_usage_seconds_total{ cluster="替换为你的EKS集群名", container!="POD", image!="" }[30m])) by (namespace, pod, cluster)[1h], 2*60*60 ) > sum(kube_pod_container_resource_requests{ resource="cpu", cluster="替换为你的EKS集群名" }) by (namespace, pod, cluster) for: 10m labels: severity: warning
Pod 磁盘使用率填充告警
- alert: PodFilesystemSpaceFillingUp expr: | ( # 计算Pod文件系统可用空间占比 ( sum(container_fs_limit_bytes{ cluster="替换为你的EKS集群名", container!="POD", device!="rootfs" } - container_fs_usage_bytes{ cluster="替换为你的EKS集群名", container!="POD", device!="rootfs" }) by (namespace, pod, cluster) / sum(container_fs_limit_bytes{ cluster="替换为你的EKS集群名", container!="POD", device!="rootfs" }) by (namespace, pod, cluster) ) < 0.3 and # 基于近6小时增长速率,预测未来24小时磁盘是否会写满 predict_linear( sum(container_fs_usage_bytes{ cluster="替换为你的EKS集群名", container!="POD", device!="rootfs" }[6h]) by (namespace, pod, cluster), 24*60*60 ) > sum(container_fs_limit_bytes{ cluster="替换为你的EKS集群名", container!="POD", device!="rootfs" }) by (namespace, pod, cluster) ) for: 1h labels: severity: warning
自定义规则修改方法
- 传入目标Pod匹配模式:在所有指标的标签选择器中追加
pod=~"目标Pod名称正则"即可,例如要匹配所有order-service-开头的Pod,可追加pod=~"order-service-.*",需要排除特定Pod则使用pod!="需要排除的Pod名" - 切换生效集群:直接修改表达式中
cluster="xxx"的匹配值,不需要改动其他表达式逻辑 - 调整告警阈值:可直接修改使用率判断的阈值(比如磁盘可用占比从0.3调整为0.2)、预测的时间窗口(比如从预测24小时写满调整为预测48小时)
常见配置避坑
- 计算CPU使用率时,必须除以Pod配置的CPU Request值而非节点总CPU,否则告警阈值会完全和Pod实际可用资源不匹配
- 统计Pod磁盘指标时,必须排除
device="rootfs"的统计项,避免将宿主机根目录的磁盘占用重复计入Pod指标 - 聚合计算时,
by分组维度必须带上cluster、namespace、pod,否则会跨集群、跨命名空间混合计算指标,导致告警判断结果完全错误
内容的提问来源于stack exchange,提问作者Himanshu Singh
相关产品推荐
相关产品推荐

