计算多个 prometheus 指标的百分比并在 Grafana 中显示

Posted

技术标签:

【中文标题】计算多个 prometheus 指标的百分比并在 Grafana 中显示【英文标题】:Calculate percentage of multiple prometheus metrics and display in Grafana 【发布时间】:2021-09-08 09:56:22 【问题描述】:

我有以下指标:

total_number_of_visitors 这是一个gauge,当访问者进入网站时增加,当他们离开时减少

paid_visitors,这是一个counter,当付费访问者进入网站并停留至少 5 分钟时递增。

这些指标中的每一个都有两个常见标签 device [移动设备、桌面设备、其他] 和 browser [ Chrome、Safari、Firefox、Edge 和其他]

我想使用 PromQL 计算付费访问者的百分比,并按这两个标签中的任何一个进行过滤以显示在 Grafana 的图表中。 我该怎么做?

【问题讨论】:

【参考方案1】:

以下查询将返回过去 5 分钟内网站上付费访问者的平均百分比:

100 * rate(paid_visitors[5m]) / avg_over_time(total_number_of_visitors[5m])

devicebrowser标签过滤可以通过以下方式进行:

100 * rate(paid_visitorsdevice="$device",browser="$browser"[5m]) / avg_over_time(total_number_of_visitorsdevice="$device",browser="$browser"[5m])

只需将$device$browser 替换为所需的值即可。

devicebrowser标签的分组可以通过以下方式进行:

100 * sum(rate(paid_visitors[5m])) by (device, browser) / sum(avg_over_time(total_number_of_visitors[5m])) by (device, browser)

【讨论】:

以上是关于计算多个 prometheus 指标的百分比并在 Grafana 中显示的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus cpu 秒到百分比

使用 Prometheus 获取总磁盘空间和可用磁盘空间

Prometheus - 计算给定指标标签的指标增加

#yyds干货盘点#Prometheus 最佳实践原则

如何使用联合从多个 Prometheus 实例(每个使用 instance="localhost:9090")中收集 Prometheus 的指标

如何使用 grafana singlestat 和 prometheus 计算正常运行时间百分比