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

AWS EKS环境下基于CloudWatch统计指定Deployment失败Pod并告警

解决CloudWatch中统计指定Deployment下Failed状态Pod的方案

一、先给指标补上Deployment标签(关键前提)

kube_pod_status_phase默认不带Deployment标签,是因为采集阶段未关联Pod所属的Deployment元数据。你需要调整CW Agent的Prometheus采集配置,从Pod的ownerReferences中提取Deployment信息并添加为标签:

  1. 修改CW Agent的ConfigMap配置文件(通常位于amazon-cloudwatch-agent命名空间),在Prometheus采集规则中添加标签重写逻辑:
prometheus:
  config:
    scrape_configs:
    - job_name: 'kubernetes-pods'
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      # 仅保留归属Deployment的Pod
      - source_labels: [__meta_kubernetes_pod_owner_kind]
        action: keep
        regex: Deployment
      # 将Deployment名称转为指标标签
      - source_labels: [__meta_kubernetes_pod_owner_name]
        target_label: deployment
      # 保留原有核心标签
      - source_labels: [__meta_kubernetes_namespace]
        target_label: namespace
      - source_labels: [__meta_kubernetes_pod_name]
        target_label: pod
  1. 重启CW Agent的DaemonSet使配置生效:
kubectl rollout restart daemonset amazon-cloudwatch-agent -n amazon-cloudwatch

二、在CloudWatch中统计Failed Pod数量

待指标带上deployment标签后,即可在CloudWatch中完成统计:

  1. 进入CloudWatch控制台的指标页面,找到CW Agent采集的Prometheus指标命名空间(通常为CWAgent/Prometheus)。
  2. 选择kube_pod_status_phase指标,按以下标签过滤:
    • 筛选phase值为Failed的时间序列
    • 指定目标deployment名称和namespace
  3. 选择Sum统计函数,即可得到该Deployment下处于Failed状态的Pod总数。

三、创建CloudWatch告警

基于上述统计结果配置告警:

  • 设置告警触发条件:当统计的Sum值超过你设定的阈值(例如2)时触发
  • 配置SNS主题作为通知渠道,接收告警消息

替代方案:无法修改采集配置时的临时处理

如果暂时无法调整CW Agent采集规则,可借助CloudWatch的Metric Math实现指标关联:

  1. 确保Prometheus已采集kube_pod_owner指标(该指标包含Pod与所属Deployment的映射关系)。
  2. 在CloudWatch中使用JOIN函数,将kube_pod_status_phase(phase=Failed)与kube_pod_owner(owner_kind=Deployment)按pod和namespace标签关联,提取对应的Deployment名称后统计数量。

此方法依赖额外指标支持,不如直接在采集阶段补全标签可靠。


内容的提问来源于stack exchange,提问作者Djoby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:15:36