Graphite

如果請求的時間段大於 30 分鐘,石墨數據會消失

  • January 23, 2015

這是 CentOS 6.5 上一個相當新的 Graphite 安裝。它通過 Sensu 的 AMQP (RabbitMQ) 接收指標。

作為概念驗證,我有一個平均負載監視器,每 60 秒向 sensu/graphite 報告數據。我可以在 Graphite 的監聽器日誌中看到數據。

如果我選擇一些數據作圖,我只能看到我的周期在“過去 30 分鐘”內的數據。(那麼只有當我將線模式設置為“連接線”時它才可見,因為點消失了。)

如果我將時間段設置為“查看過去 31 分鐘”,則所有數據都會從圖表中消失。

我嘗試過使用 storage-schemas.conf,但沒有對此行為做出任何明顯的改變。

如果我超過 30 分鐘,數據是否會以某種方式被丟棄、過濾掉?我要檢查什麼?

這是 storage-schemas.conf:

[load_averages]
pattern = \.load_avg\.
retentions = 10s:14d,1m:90d

我很確定我現在明白這裡發生了什麼。

正如我所懷疑的,它與指標的採樣率以及 Whisper 數據庫所期望的採樣率有關。

關鍵是 storage-schemas.conf 文件,它指定要儲存的採樣率。

我使用 echocat/graphite puppet 模組配置了石墨。這將前 30 分鐘的預設頻率設置為 1s,前 1d 為 1m,2 年為 5m。

我試圖繪製的平均負載指標的採樣週期為 1m 或 60s。因此,whisper 數據庫每分鐘將儲存 59 個空值和一個值。當請求超過 30 分鐘時,graphite 丟棄了真實數據。

有兩件事必鬚髮生:

首先,更改 storage-schemas.conf 中的初始採樣率(使用 puppet),使儲存箱與採樣頻率匹配。

其次,必須丟棄現有的 Whisper 數據庫文件或調整其大小。

Whisper 有一個實用程序(whisper-resize.py),但就我而言,我沒有有價值的數據要保留。我擦除了受影響的 Whisper DB 文件並讓它們重新創建。

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