計算直到磁碟已滿的天數
我們使用石墨來跟踪一段時間內的磁碟使用歷史。我們的警報系統會查看來自石墨的數據,以在可用空間低於一定數量的塊時提醒我們。
我想獲得更智能的警報——我真正關心的是“我需要多長時間才能對可用空間進行處理?”,例如,如果趨勢顯示 7 天后我將用完磁碟空間然後引發警告,如果少於 2 天則引發錯誤。
Graphite 的標準儀表板界面可以非常智能地使用衍生工具和 Holt Winters 信心帶,但到目前為止我還沒有找到將其轉換為可操作指標的方法。我也很擅長以其他方式處理數字(只需從石墨中提取原始數字並執行腳本即可)。
一個複雜的問題是圖表不平滑 - 文件被添加和刪除,但隨著時間的推移,總體趨勢是磁碟空間使用量增加,因此可能需要查看本地最小值(如果查看“無磁碟”指標) 並在波谷之間繪製趨勢。
有人做過嗎?
為此,我們使用統計趨勢及其標準偏差在簡單的靜態門檻值上添加更智能(不那麼愚蠢)的邏輯,為此目的保留“平均時間到滿”或“平均失敗時間”指標。
最簡單的警報:只是一個任意門檻值。不考慮與實際磁碟空間使用有任何關係。
- 範例:目前% > 90%
簡單的TTF:更聰明一點。計算未使用百分比減去緩衝區並除以零保護率。在統計上不是很可靠,但是當我的使用者上傳他們的貓影片語料庫(真實故事)時,我已經救了我幾次。
- 範例:(100% - 5% - current%) / MAX(rate(current%), 0.001%)
更好的 TTF:但我想避免在 99% 時對靜態只讀捲髮出警報(除非它們有任何更改),並且我希望更主動地通知嘈雜的捲,並檢測具有非託管磁碟空間足蹟的應用程序。哦,Simple TTF 中偶爾出現的負值讓我很困擾。
- 範例:MAX(100% - 1% - stdev(current%) - current%, 0) / MAX(rate(current%), 0.001%)
我仍然保持 1% 的靜態緩衝區。異常使用模式的標準偏差和消耗率都會增加,有時會過度補償。在graphana 或alertmanager 中,您最終會得到一些相當昂貴的子查詢。但我確實得到了更平滑的時間序列,並且我正在尋求更少的噪音警報。
- 例子:
clamp_min((100 - 1 - stddev_over_time(usedPct{}[12h:]) - max_over_time(usedPct{}[6h:])) / clamp_min(deriv(usedPct{}[12:]),0.00001), 0)
更安靜的驅動器可以提供非常流暢的警報。
更長的範圍甚至可以馴服最嘈雜的公共音量。