如何在 Prometheus Grafana 中计算正常运行时间百分比或停机时间百分比

Posted

技术标签:

【中文标题】如何在 Prometheus Grafana 中计算正常运行时间百分比或停机时间百分比【英文标题】:How to calculate uptime % or Downtime % in Prometheus Grafana 【发布时间】:2020-09-01 23:54:06 【问题描述】:

如何使用以下查询 process_uptime_secondsapplication="$application", instance="$instance", job!="jobid" 计算 prometheus grafana 中的正常运行时间百分比

【问题讨论】:

【参考方案1】:

您不希望使用该指标来计算正常运行时间。数字重置的事实仅意味着该过程重新启动。

相反,我建议使用 Prometheus 自动创建的 up 指标。然后,您可能希望按应用程序对其进行分组并忽略实例和作业标识。

类似:

sum(upapplication="$application" == 1) by (application) /
 sum(upapplication="$application") by (application)

这样,您就可以将成功申请的人数除以该申请的总数。

【讨论】:

不幸的是,“sum(upapplication="$application" == 1) by (application)”行不起作用,我收到语法错误。我也无法通过应用程序找到指标,而是使用了实例 由于 up 是 prometheus 根据抓取实例时间创建的特殊指标,因此标签 application 只有在 Prometheus 抓取和/或重新标记期间出现时才会出现。我不确定你的语法错误是什么,因为它对我有用。 可以用instance和job来计算吗?您也可以分享计算正常运行时间百分比的确切表达式,这将非常有帮助。 有趣的是,如果您使用的是 Grafana-cloud-agent,这也有效!【参考方案2】:

对于up,你能做这样的事情吗?

(1 - avg_over_time(up[1d])) * 86400

这会给你最后一天的秒数。

【讨论】:

以上是关于如何在 Prometheus Grafana 中计算正常运行时间百分比或停机时间百分比的主要内容,如果未能解决你的问题,请参考以下文章

Grafana + Prometheus 如何在查询指标中使用正则表达式?

如何使用 grafana 可视化 prometheus 端点指标

如何在使用 grafana 和 prometheus-operator 时配置电子邮件警报

Grafana中如何使用Prometheus数据源监控elasticsearch

如何在 Grafana 表中显示多个 Prometheus 服务器名称?

如何使用 Grafana 警报显示 Prometheus 标签