如何将Prometheus采集的K8s容器多状态指标转换为单一状态值?
Kubernetes容器状态表格展示解决方案
一、多指标合并为单一状态的PromQL查询
要把三个状态指标转换为明确的状态文本,可使用以下PromQL语句,它会将每个容器的状态映射为对应的文本标签:
label_replace(kube_pod_container_status_running == 1, "status", "Running", "", "") or label_replace(kube_pod_container_status_terminated == 1, "status", "Terminated", "", "") or label_replace(kube_pod_container_status_waiting == 1, "status", "Waiting", "", "")
在Grafana表格视图中配置时,只需选择以下标签作为表格列:
namespace(命名空间)pod(Pod名称)container(容器名称)status(转换后的状态文本)
二、澄清kube_pod_container_status_running与ready的差异
你对这两个指标的理解有误,二者并不重复:
kube_pod_container_status_running:仅标识容器处于运行中状态,只要容器完成启动进入running阶段就会返回1,和容器是否能对外提供服务无关。kube_pod_container_status_ready:要求容器不仅处于running状态,还必须通过Pod定义的**就绪探针(readinessProbe)**检查。只有该指标为1时,容器才会被纳入集群服务的负载均衡范围,接收外部流量。比如容器启动后加载配置的阶段,running是1,但ready会保持0,直到就绪探针验证通过才会切换为1。
内容的提问来源于stack exchange,提问作者Joseph Gagnon
相关产品推荐
相关产品推荐

