mac*_*13k 1 metrics prometheus promql
我正在使用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])
Run Code Online (Sandbox Code Playgroud)
但它不产生任何数据。我可以分别从每个速率表达式中获取值,但不能从上面的公式中获取值。如果我使用具有相同标签的公式,即:
100 * rate(zfs_arc_stats{stat='hits'}[5m]) / rate(zfs_arc_stats{stat='hits'}[5m])
Run Code Online (Sandbox Code Playgroud)
它给出的正确结果为 100,因为未命中与未命中或命中与命中的比率始终为 1:1。我尝试了使用其他来源(即 PCP、Collectd)的指标的类似公式,这些公式工作得很好,即。我可以计算具有不同标签的相同指标的比率,因此问题似乎可能特定于 ZFS Exporter 的指标。该导出器的指标非常少,但每个指标都有许多不同的统计数据,由“stat”标签的值标识。rate所有指标都是仪表类型,但我认为这对于PromQL 中的函数来说并不重要。无论如何,就像我之前提到的,比率可以单独计算,只有比率失败。有人请建议如何解决这个问题。
仅当两个指标的所有标签及其值都相同时,Prometheus 才会将一个指标除以另一个指标。在这种情况下,左侧的指标/具有 label {stat='misses'},而右侧的指标具有不同的statlabel值{stat='hits'}。Prometheus 提供了ignoring和on操作,可以应用于任何二元运算符(即/、+、-等)。详细信息请参阅相应的文档。
stat因此,在您的情况下,您必须告诉 Prometheus在执行计算时忽略标签:
100 * rate(zfs_arc_stats{stat='misses'}[5m]) / ignoring(stat) rate(zfs_arc_stats{stat='hits'}[5m])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |