Prometheus node_exporter 指標 - Grafana 中的巨大峰值
我們的設置包括:
- 一些帶有 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 的合併數據伺服器 - 這不會像您發現的那樣工作。