求Grafana实现kubectl get pods -A效果的查询或仪表盘导入方案
实现类似
kubectl get pods -A的Grafana表格(Prometheus数据源) 要在Grafana中复刻kubectl get pods -A的输出表格,你需要基于kube-state-metrics提供的kube_pod_*指标构建查询,以下是各字段对应的PromQL及配置步骤:
各字段查询与配置
1. NAMESPACE & NAME
直接基于kube_pod_info指标提取标签:
kube_pod_info
在Grafana表格中,分别提取namespace和pod标签作为这两列的内容。
2. READY(就绪容器数/总容器数)
需要两个查询配合计算:
- 就绪容器数:
别名设为sum by (namespace, pod) (kube_pod_container_status_ready{ready="true"})Ready - 总容器数:
别名设为sum by (namespace, pod) (kube_pod_container_info)Total
在表格的转换选项中选择「Merge」合并两个查询结果,再添加一个「计算字段」,公式为${Ready}/${Total},将其格式化为字符串作为READY列的显示内容。
3. STATUS(Pod状态)
使用kube_pod_status_phase指标,查询:
kube_pod_status_phase
该指标会为每个Pod的不同状态(Running/Pending/Failed等)生成值为1的时间序列。在Grafana的字段选项中添加「值映射」:
- 将
{phase="Running"}对应的值1映射为Running - 将
{phase="Pending"}对应的值1映射为Pending - 将
{phase="Failed"}对应的值1映射为Failed - 将
{phase="Succeeded"}对应的值1映射为Succeeded - 将
{phase="Unknown"}对应的值1映射为Unknown
最后在表格中仅保留映射后的文本作为STATUS列内容。
4. RESTARTS(容器重启总次数)
对每个Pod的所有容器重启次数求和:
sum by (namespace, pod) (kube_pod_container_status_restarts_total)
5. AGE(Pod运行时长)
计算当前时间与Pod创建时间的差值:
time() - kube_pod_created
在Grafana的字段选项中,将单位设置为「Duration」,格式选择d h m(天/时/分)即可实现类似kubectl的时长显示。
注意事项
确保你的Prometheus已经正确配置并采集了kube-state-metrics,上述所有kube_pod_*指标均来自该组件。
内容的提问来源于stack exchange,提问作者Peter Marcus
相关产品推荐
相关产品推荐

