获取 Pod 处于挂起状态的平均时间

Bru*_*ira 5 grafana kubernetes prometheus

我正在尝试使用 prometheus 计算 pod 在 grafana 中处于挂起状态的平均时间。我可以使用此查询生成一个图表,以获取一段时间内处于挂起状态的 Pod 数量

sum(kube_pod_status_phase{phase="Pending"})
Run Code Online (Sandbox Code Playgroud)

但是,我真的很想获得 pod 在过去 X 小时内保持此状态的平均时间值。我怎样才能做到这一点?

小智 6

该指标kube_pod_status_phase{phase="Pending"}只会为您提供二进制值,即 0/1。如果 pod 处于挂起状态,则为 1,否则为 0。此外,数据每 30 秒更新一次。因此,要查找过去 X 小时内待处理的总时间,您可以执行类似的操作。

sum_over_time(kube_pod_status_phase{phase="Running"}[Xh]) * X * 30
Run Code Online (Sandbox Code Playgroud)

为了更好的可视化,您可以使用grafana中的表格。


Mic*_*bez 5

PromQL 提供随时间变化的聚合函数

您在表达式中指定时间范围;对于前 X 个小时,它将是:

avg_over_time(kube_pod_status_phase{phase="Pending"}[Xh])
Run Code Online (Sandbox Code Playgroud)