[英]Unable to calculate the ratio of two metrics in Prometheus
我正在使用ZFS Exporter从 Linux 服务器收集 Prometheus v.2.19 中的 ZFS 指标。 正在从所有目标收集数据并且值是正确的,但是有一个奇怪的问题:我想计算 ARC 未命中率与 ARC 命中率的百分比,所以我使用以下公式:
100 * rate(zfs_arc_stats{stat='misses'}[5m]) / rate(zfs_arc_stats{stat='hits'}[5m])
但它不会产生任何数据。 我可以单独从每个速率表达式中获取值,但不能从上面的公式中获取。 如果我使用具有相同标签的公式,即:
100 * rate(zfs_arc_stats{stat='hits'}[5m]) / rate(zfs_arc_stats{stat='hits'}[5m])
它给出了 100 的正确结果,因为未命中与未命中或命中与命中的比率始终为 1:1。 我尝试了使用其他来源(即 PCP、Collectd)的指标的类似公式,这些公式运行良好,即。 我可以计算具有不同标签的相同指标的比率,因此问题似乎可能特定于 ZFS Exporter 的指标。 此导出器的指标很少,但每个指标都有许多不同的统计信息,由“stat”label 的值标识。 所有指标都是量规类型,但我认为 PromQL 中的 function rate
并不重要。 无论如何,就像我之前提到的可以单独计算比率,只有比率失败。 有人请建议如何解决这个问题。
Prometheus 仅当所有标签及其两个指标的值都相同时,才会将一个指标除以另一个指标。 在这种情况下, /
左侧的指标具有 label {stat='misses'}
,而右侧的指标具有不同的stat
label 值: {stat='hits'}
。 Prometheus 提供了ignoring
和on
操作,可以应用于任何二元运算符(即/
、 +
、 -
等)。 有关详细信息,请参阅相应的文档。
因此,在您的情况下,您必须告诉 Prometheus 在执行计算时忽略stat
label :
100 * rate(zfs_arc_stats{stat='misses'}[5m]) / ignoring(stat) rate(zfs_arc_stats{stat='hits'}[5m])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.