【发布时间】:2020-07-24 16:17:22
【问题描述】:
我正在使用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”标签的值标识。所有指标都是量规类型,但我认为 PromQL 中的 rate 函数并不重要。无论如何,就像我之前提到的可以单独计算比率,只有比率失败。有人请建议如何解决这个问题。
【问题讨论】:
-
我实际上是在命中百分比之后,公式为:
100 * rate(zfs_arc_stats{stat='hits'}[5m]) / ignoring(stat) (rate(zfs_arc_stats{stat='hits'}[5m]) + ignoring(stat) rate(zfs_arc_stats{stat='misses'}[5m])) -
在github.com/mac133k/zfs_exporter 中进行了提交以解决此问题,因此现在主分支中的代码包含一个新的度量名称空间,没有过多的标签。
labelhell分支中仍然可以使用旧的指标命名。
标签: prometheus metrics promql