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

如何通过多层group_left关联获取Prometheus告警中的Deployment名称

扩展Prometheus查询获取Deployment归属信息

你需要在现有查询基础上,再关联kube_replicaset_owner指标,把ReplicaSet对应的Deployment名称拉取出来。具体修改思路如下:

  • 保留原有Pod与ReplicaSet的关联逻辑,先拿到每个异常Pod对应的ReplicaSet信息
  • 通过namespace和ReplicaSet名称匹配kube_replicaset_owner指标,提取对应的Deployment名称
  • 将Deployment名称作为新标签加入最终结果,确保告警时能直接看到归属的Deployment

修改后的完整查询如下:

sum by(namespace, pod, owner_kind, deployment) (
  max by(namespace, pod) (
    kube_pod_status_phase{job="kube-state-metrics",namespace="itops",phase=~"Pending|Unknown|Failed"}
  )
  * on(namespace, pod) group_left(owner_kind, replicaset) topk by(namespace, pod) (1, 
    max by(namespace, pod, owner_kind, replicaset) (
      // 将kube_pod_owner的owner_name映射为replicaset标签,方便后续关联
      label_replace(kube_pod_owner{owner_kind='ReplicaSet'}, "replicaset", "$1", "owner_name", "(.*)")
    )
  )
  * on(namespace, replicaset) group_left(deployment) max by(namespace, replicaset, deployment) (
    // 从kube_replicaset_owner中提取Deployment名称,映射为deployment标签
    label_replace(kube_replicaset_owner{owner_kind="Deployment"}, "deployment", "$1", "owner_name", "(.*)")
  )
)

关键部分说明:

  1. label_replace处理kube_pod_owner:把kube_pod_owner里的owner_name(即ReplicaSet名称)转成replicaset标签,和kube_replicaset_owner的replicaset标签对齐,方便关联
  2. 关联kube_replicaset_owner:通过namespace和replicaset两个标签匹配,把对应的Deployment名称作为deployment标签引入结果
  3. sum by添加deployment:确保最终聚合结果里包含Deployment名称,告警触发时能直接看到Pod所属的Deployment

如果你的kube-state-metrics版本中,kube_replicaset_owner已经自带和ReplicaSet名称匹配的标签,可以省略第一步的label_replace,直接关联即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:30:51