如果請求的時間段大於 30 分鐘,石墨數據會消失
這是 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 文件並讓它們重新創建。