如何在Grafana中查看特定Deployment的运行Pod数及Pod运行时长
如何在Grafana中展示特定Deployment的Pod数量及Pod运行时长
一、展示特定Deployment的Pod数量
- 确保Prometheus已配置采集Kubernetes指标(依赖
kube-state-metrics组件,它会暴露Deployment与Pod的关联状态数据) - 在Grafana中创建新面板:
- 选择Prometheus作为数据源
- 在查询框中输入以下PromQL语句(替换
your-deployment-name和your-namespace为实际值):# 方式1:直接获取Deployment的可用副本数(官方推荐,关联Deployment原生状态) kube_deployment_status_replicas_available{deployment="your-deployment-name", namespace="your-namespace"} # 方式2:统计该Deployment下所有运行中的Pod数量(通过Pod的归属关联) count(kube_pod_info{owner_name="your-deployment-name", owner_kind="Deployment", namespace="your-namespace", pod_status="running"}) - 选择可视化类型(
Stat面板适合展示实时数值,Graph面板可展示数量变化趋势) - 调整面板标题、单位等配置后保存
二、获取Pod的运行时长
1. 查看当前运行中Pod的实时运行时长
- 在Grafana面板中使用以下PromQL语句(替换命名空间和Deployment前缀):
time() - kube_pod_container_status_start_time{pod=~"your-deployment-name-.*", namespace="your-namespace"} - 选择
Table可视化类型,可展示每个Pod的名称、运行时长(在Grafana的单位设置中选择Time > hh:mm:ss,将秒数转换为易读格式)
2. 获取已终止Pod的生命周期时长(从启动到终止的持续时间)
由于Pod终止后指标会从Prometheus中消失,需依赖历史数据计算:
- 先定位Pod终止的时间点:
max_over_time(kube_pod_status_phase{pod="terminated-pod-name", namespace="your-namespace", phase="Terminated"}[7d]) - 再获取该Pod的启动时间:
last_over_time(kube_pod_container_status_start_time{pod="terminated-pod-name", namespace="your-namespace"}[7d]) - 两者差值即为Pod的生命周期时长,可通过Grafana变量或Prometheus记录规则批量计算多个已终止Pod的时长
内容的提问来源于stack exchange,提问作者trey
相关产品推荐
相关产品推荐

