如何在 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