Grafana

Prometheus node_exporter 指標 - Grafana 中的巨大峰值

  • March 28, 2020

我們的設置包括:

  • 一些帶有 Prometheus node_exporter v. 0.18.1 的 Debian 9.12 節點作為服務安裝
  • Prometheus 伺服器 v. 2.14.0(在 Windows Server 2016 上)從節點抓取指標
  • Grafana 視覺化指標

基本上,我們的負載可能是不穩定的,因此我們希望擷取詳細資訊,因此目前我們每 10 秒抓取一次指標,並在 Grafana 中顯示 1 分鐘的速率,查詢如下:

rate(node_network_receive_bytes_total{instance=~'$node',device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[1m])*8

在 Grafana 中,我們看到了巨大的峰值,對於平均吞吐量低於 100Mbit/s 的網路實例,峰值超過每秒數百千兆位,這在技術上顯然是不可能的。CPU 負載、CPU 等待時間、磁碟 iops 和其他node_exporter指標也是如此,通常看起來像這樣,看看平均值和最大值之間的巨大差異:

網路介面尖峰

顯然,發生這種情況是因為 Prometheus 似乎“錯過”了單點數據,並且根據其rate工作原理,它將“最後”點與零值與node_network_receive_bytes_total自上次啟動以來累積的電流進行比較,並迅速提高輸出。如果我們嘗試切換到irate尖峰,只需跳得更高,這似乎證明了我們的猜測。

在我們出​​現峰值的特定時間範圍內查詢我們的 Prometheus 收集伺服器以獲取數據點rate,我們沒有看到任何零點,“尖峰”時間範圍內的數據看起來像連續增加:

node_network_receive_bytes_total{device="ens8",instance="cassandra-xxxxxxxxx0:9100",job="cassandra-xxxxxxxxx"}
3173659836137 @1585311247.489
3173678570634 @1585311257.49
3173696782823 @1585311267.491
3173715943503 @1585311277.492
3173715937480 @1585311277.493
3173731328095 @1585311287.495
3173743034248 @1585311297.502
3173756482486 @1585311307.497
3173775999916 @1585311317.497
3173796096167 @1585311327.498
3173814354877 @1585311337.499
3173833456218 @1585311347.499
3173852345655 @1585311357.501

圖上相同:

普羅米修斯圖

rate查詢rate(node_network_receive_bytes_total{instance="cassandra-xxxxxxxxx0:9100",device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[1m])*8在同一時間範圍內顯示出驚人的不同圖片:

普羅米修斯速率圖

雖然 Prometheus 文件聲明它應該推斷失去的數據點,以及與rate/的某些問題irate廣泛認可,但現在我們對上述內容感到非常困惑。

我們最大的問題是尖峰使視覺化變得不可能,更重要的是,無法設置限制/警報。

現在我們只能確定 Grafana 是沒有問題的,問題在於我們的 Prometheus,問題是——你有沒有碰到類似的東西,也許?如果是,您如何處理?

如果沒有,也許您可以建議一些進一步的診斷方法?

無論如何,至少感謝大家閱讀直到這一點。

3173715943503 @1585311277.492
3173715937480 @1585311277.493

這些值正在倒退,這被視為計數器重置。這通常表明存在核心錯誤,但是鑑於這些值僅相隔一毫秒,我猜測發生的事情是您沒有提及關鍵細節,即這實際上是來自兩個不同 Prometheus 的合併數據伺服器 - 這不會像您發現的那樣工作。

引用自:https://serverfault.com/questions/1008693