小编Pau*_*anu的帖子

当 Pod 运行时间过长时 Prometheus 发出警报

对于一个看似简单的问题,我遇到了一些麻烦。

我的场景:我有一个可以随时运行的 k8s 作业(不是 cronJob),它又创建一个 pod 来执行某些任务。一旦 pod 执行了它的任务,它就完成了,从而完成了产生它的工作。

我想要的:如果 pod 处于运行状态超过 1 小时,我想通过 prometheus 发出警报,表明该任务花费了太多时间。我有兴趣仅在附图中箭头所示的持续时间超过 1 小时时发出警报。当 Pod 不再运行时也不会触发警报。在此输入图像描述

我尝试过的:以下普罗米修斯指标,它是一个即时向量,可以是 0(pod 未运行)或 1(pod 正在运行):

kube_pod_status_ready{condition="true",pod_name=~".+POD-A.+"}
Run Code Online (Sandbox Code Playgroud)

我想我尝试使用此指标和以下公式来计算该指标在一天中为一的持续时间

(1 - avg_over_time(kube_pod_status_ready{condition="true",pod_name=~".+POD-A.+"}[1d])) * 86400 > 3600
Run Code Online (Sandbox Code Playgroud)

由于这些 Pod 来来去去,并不总是存在,所以我遇到了以下问题:

  • 上面的 expr 从 86400 值开始,最终在容器运行时下降,这将触发警报
  • Pod 最终消失,我不想为不再运行的 Pod 发送虚假警报(尽管它们运行了 1 个小时以上)

docker grafana kubernetes prometheus

4
推荐指数
1
解决办法
3156
查看次数

标签 统计

docker ×1

grafana ×1

kubernetes ×1

prometheus ×1