【问题标题】:Prometheus query for Kubernetes pod uptimePrometheus 查询 Kubernetes pod 正常运行时间
【发布时间】:2021-12-23 20:54:02
【问题描述】:

我有一个安装了 kube-prometheus-stack 的 Kubernetes 集群(Prometheus 2.27.1,kube-state-metrics v2.0.0)

我想查询每个 pod 在过去 24 小时内运行了多少时间

  • 如果 Pod 仍在运行,从创建到现在的时间
  • 如果帖子已终止,则从创建到完成的时间

重要的是,我需要 pod 存在的确切时间,而不是 CPU 使用率。

我可以这样做:

kube_pod_completion_time - kube_pod_created

但对于仍在运行的 pod,它不会返回任何内容。而且,由于 Prometheus 不会返回超过 5 分钟的指标,因此它不会报告任何已终止和删除的 pod。

如果没有这些问题,我如何查询 Prometheus?

【问题讨论】:

  • 用的是哪个prometheus版本?它是如何部署的? (只是为了清楚地了解确切的设置和可用指标)
  • 你好@VladimirPrus。有更新吗?
  • 我已经添加了设置细节,谢谢。
  • @VladimirPrus 感谢您的回复。还有两个问题:使用哪个 kubernetes 版本/它是如何设置的(云或本地)?如果您只查询kube_pod_completion_time,您会看到响应/结果吗?我安装了一个新的 prometheus 并没有返回任何东西给我。
  • 我通过 AWS EKS 使用 Kubernetes 1.19。是的,kube_pod_completion_time 返回结果。无论如何,一位同事已经提供了一个解决方案,所以我会用它来更新问题。

标签: kubernetes prometheus monitoring


【解决方案1】:

一个可行的解决方案是这样的:

sum by(namespace, pod) (

   (last_over_time(kube_pod_completion_time[1d]) 
   - last_over_time(kube_pod_created[1d])) 

  or 

    (time() - kube_pod_created)

)

sum 中的第一部分处理 pod 已终止的情况。我们选择kube_pod_completion_timekube_pod_stared 的最后一个值并计算差值。

第二部分处理仍在运行的 pod。在这种情况下,kube_pod_created 指标有一个新值,我们可以从当前时间中减去它。

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多