簡體   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