繁体   English   中英

无法计算 Prometheus 中两个指标的比率

[英]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 提供了ignoringon操作,可以应用于任何二元运算符(即/+-等)。 有关详细信息,请参阅相应的文档

因此,在您的情况下,您必须告诉 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM