2014-03-07 46 views
0

我創建了一個默認步長爲5mn(300s)的標準RRDTool數據庫。 我有不同類型的值,它是一些容易處理的計量器,但我有其他值,我會在COUNTER,但這裏是我的問題: 我讀了一個程序中的數據,並獲得兩個值之間的差異步驟是好的,但計數器增量少於時間(在一個步驟中它可以增加少於300),所以我的失敗值是錯誤的。RRDTool計數器增量低於時間

是否有可能改變計數不是一個數字秒,但一步一步或類似的東西,如果不是我想我必須計算我的程序中的差異?

謝謝你的幫助。

回答

0

RRDTool能夠處理小數值,因此如果計數器的增量小於自上次更新以來的秒數,則不會出現問題。

RRDTool將所有內容存儲爲費率。如果您的DS的類型是GAUGE,那麼RRDTool會假定傳入值是一個速率,並且僅應用數據標準化(稍後會詳細介紹)。如果類型是COUNTER或DERIVE,那麼您正在更新的值/時間點將與之前的值/時間點進行比較,以獲得如下比率:r=(x2 - x1)/(t2 - t1)。然後獲得的速率歸一化。另一種DS類型是ABSOLUTE,它假定計數器在上次讀取時被重置,給出r=x2/(t2 - t1)

標準化步驟基於假設來自上一個數據點的線性級數來調整數據點,以便它恰好位於區間邊界上。例如,如果您的步驟是5分鐘,並且您在12:06更新,則數據點將調整回到12:05時的數據點,並在12:05時進行存儲。但是最後一個未經調整的DP仍然保留下次更新使用,因此總體速率是正確的。

因此,如果您有300秒(5分鐘)的時間間隔,並且該值增加150,則存儲的速率將爲0.5。

如果您正在繪製圖表的值很小,例如'打印的頁數',這看起來可能違反直覺,但對於網絡流量計數器(這是RRDTool的設計目標)等高速率,這種方法效果很好。

如果您確實不想在生成的圖形或輸出中顯示小數值,則可以使用格式字符串(例如%.0f)來強制執行無小數位,並且顯示的數字將四捨五入爲最接近的整數。

+0

謝謝你的回答,這很好解釋。非常有幫助。 – user3224275