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

如何通过Prometheus+Grafana展示K8s Pod状态时序数据

Grafana展示指定Namespace下Pod状态时序的配置方案

1. 冗余字段过滤与核心查询语句

直接通过PromQL聚合即可仅保留Pod名称、namespace、phase三类信息,自动丢弃其余冗余标签,指定Namespace的查询语句如下:

sum by (pod, namespace, phase) (kube_pod_status_phase{namespace="$namespace"})

语句说明:

  • {namespace="$namespace"} 是Grafana模板变量写法,查询固定Namespace直接替换为实际名称即可,比如{namespace="default"}
  • sum by (pod, namespace, phase) 会自动剔除括号外所有冗余标签,返回结果仅保留你需要的三个维度
  • 指标返回值为1代表对应Pod在该时间点处于当前phase状态,返回值为0代表不处于该状态

2. 同时展示历史变更与实时状态的面板配置

之前数据展示混乱是因为选错了可视化类型,不要用普通折线图,选择**状态时间线(State timeline)**面板即可满足需求,配置步骤:

  • 新建Grafana面板,可视化类型选择State timeline
  • 将上述PromQL填入查询框,根据需要的状态采集精度调整查询的Min step参数,比如需要15秒粒度的状态记录就设置为15s
  • 面板显示配置:
    • 配置Value mapping规则:将值1映射为对应phase的状态名,值0设置为透明隐藏,确保同一时间点每个Pod仅展示当前所处状态的色块
    • 为不同phase配置固定语义化颜色:比如Running状态配绿色、Failed配红色、Pending配黄色、Succeeded配蓝色、Unknown配灰色
    • 打开面板的Show current value开关,面板最右侧会自动展示所有Pod的最新实时状态
    • 调整面板时间范围为需要回溯的历史周期,即可直观看到每个Pod状态变更的准确时间点、每个状态的持续时长

补充说明

如果需要区分「Running但未就绪」的状态(kube_pod_status_phase的Running状态仅代表Pod进程启动,不代表业务就绪探针通过),可以额外关联kube_pod_status_ready指标补充就绪维度,基础场景下kube_pod_status_phase已经可以覆盖失败、运行、等待等核心状态展示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:06:08