如何配置Prometheus告警检测Running状态Pod的就绪探针失败
解决Kubernetes Running状态Pod就绪探针失败的PromQL告警查询
要筛选出处于Running状态且至少有一个容器未就绪的Pod,直接用PromQL的and操作符合并两个查询即可,利用指标的标签自动匹配(如pod、namespace标签):
kube_pod_container_status_ready{} == 0 and kube_pod_status_phase{phase="Running"} == 1
说明
kube_pod_container_status_ready{} == 0:定位所有未就绪的容器(每个容器对应一条指标,值为0表示未就绪)kube_pod_status_phase{phase="Running"} == 1:定位所有处于Running状态的Pod(Pod级指标,值为1表示当前Phase为Running)and操作符会自动匹配两个指标中标签完全一致的条目,最终得到同时满足两个条件的结果——也就是Running状态下存在未就绪容器的Pod。
进阶优化(按Pod聚合)
如果希望按Pod维度聚合,只要Pod内有任意一个容器未就绪就触发告警,可以用求和聚合后判断:
sum by (pod, namespace) (kube_pod_container_status_ready{} == 0) > 0 and kube_pod_status_phase{phase="Running"} == 1
这个查询会先统计每个Pod下未就绪容器的数量,只要数量大于0,同时Pod处于Running状态,就会被筛选出来,适合避免同一Pod下多个未就绪容器重复触发告警的场景。
内容的提问来源于stack exchange,提问作者gurpsone
相关产品推荐
相关产品推荐

