You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 01:06:05