提升Cacti數據採集精度 rrdtool保存圖的時間詳解

默認的Cacti監控圖形是以日、周、月、年 4個時間,每一個時間均可以任意縮放查看,可是你們確定也發現了, 默認的狀況下,日圖是每5分鐘頻率的平均值,周圖是30分鐘,月圖是2小時,年圖是1天;這樣的話,若是查看一週前的圖就會比當時的實際圖相差很大,監控值會低很多,查看一月或一年以前的就會相差更大;這裏咱們來講說怎麼解決此問題,或者說是縮小差值。php

Cacti主要是經過rrdtool這個工具來繪圖的,其實cacti只是個構造比較合理的框架。rrdtool 有一套本身的數據文件供其繪圖使用,Cacti主要使用了,rrdtool create, rrdtool graph, rrdtool update 三個功能,rrdtool的數據文件,和通常關係型數據庫不一樣的地方在於,它是環形數據庫,一個特別依賴時間的數據庫。在前面咱們說過了,在實際生產環境中,默認的Cacti圖形是以日、周、月、年 4個時間,每一個時間均可以任意縮放查看,可是你們應該發現了, 默認的狀況下,日圖是每5分鐘頻率的平均值,周圖是30分鐘,月是2小時,年圖是1天,而這些又表明什麼意思呢?下面會簡單解釋一下。html

你們在看當天的流量圖的時候(5分鐘) 會發現,它是5分鐘一個點,兩個點之間畫一條直線的。這樣一天下來會有288個點了,這樣就造成了一天的流量圖。通常狀況下,咱們天天生成的數據,會一直不停的變化更新,會有N個288,數據文件會變的無限大的。rrd文件就不會這樣,以前說過了它是環形數據庫,就在於他會合並數據。好比看周圖的時候, 你絕對看不了5分鐘一個點的,爲何呢?這個就是由於數據被合併了。6個5分鐘的點,合併成爲周圖中的一個點,也就是說,12個5分鐘點才畫成周圖中的一條線。月、年都是依次類推。合併以後是如何取值呢,默認狀況下,是取平均的,也就是爲何時間越大,數據越小的緣由了,時間越往前推差值就會越大。數據庫

既然在當天能夠看見5分鐘的流量圖,那麼多久以後就看不了,只能看見30分鐘的圖了呢?在默認狀況下,5分鐘的圖是保存50小時的,也就是說2天內,你還能夠看見那天的5分鐘圖,好比8月1號的流量圖在8月2號還能夠看見,到了3號就只能看見30分鐘了的。緩存

在【Console】-【Management】-【Data Sources】中,【---rras】下面有 日、周、月、年的循環歸檔,這個地方就能夠決定咱們數據保存週期。保存時間 = 時間 rows 。咱們來看看默認的Cacti 5分鐘的保存時間:基於以上公式,咱們算出來 (5 600) / 60m = 50h ≈ 2d框架

其它的時間均可以算出來。既然這樣能夠算出來的話,咱們能夠反過來想,咱們要保存一個月的5分鐘流量。應該怎麼寫rows呢?rows = (30d 24h 60m) / 5 ,這樣寫好rows以後,在一個月以內,你就能夠看見那個月某一天的詳細流量了(5分鐘平均值)。其中,要注意的是,時間,好比8月1號到8月31號 與8月1號到9月1號 是不一樣的概念的,到了9月1號纔算是過了一個月,Cacti用的是天然月。ide

參數解疑:工具

Steps(步進、步伐)設置爲:a
Rows(行)設置爲:b
Timespan(時間段)設置爲:c

這三個數值的關係是,steps 意思是每多少時間繪圖一次,timesspan 意思是某時間段、時間跨度,rows 意思是在這個時間跨度裏面保存多少個數據記錄。ui

如一天的參數:spa

steps設置爲1:表示每分鐘繪圖一次;
rows設置爲1440:表示這一天存儲1440行數據;
Timespan設置爲86400:表示一天的時間86400秒

採集精度詳細的修改實例,直接參考修改便可:rest

由於cacti默認5分鐘採集一次數據進行繪圖,採集精度不高,對要求高精度的採集需求,須要修改默認的採集精度。

一、修改rrdtool的存儲大小

【console】-【Management】-【Data Sources】-【RRAs】

修改模板裏面的參數

以下,好比採集一天的數據,按一分鐘的精度

Name設置爲:Daily (1 Minute Average)
Consolidation Functions設置爲:max、min、avg和last
X-Files Factor修改成:0.5
Steps設置爲:1
Rows設置爲:1440
Timespan設置爲:86400

參考模板參數以下:

Names Steps Rows Timespan**
Daily (1 Minute Average) 1 1440     86400     
Weekly (6 Minute Average) 6 1680     604800     
Monthly (24 Minute Average)     24 1860     2678400     
Yearly (1 Hour Average) 60 8760     31536000     
Two Yearly (2 Hour Average) 120 8760     63072000

二、修改數據索引

【console】-【Management】-【Templates】-【data templates】

1)在Associated RRA's添加剛剛建立的5個RRD模板
2)將step設置爲60(每60秒繪圖一次)
3)將Heartbeat設置爲120(120爲超時時間)

三、修改計劃任務crontab

將每5分鐘執行一次

    */5 * * * * /usr/bin/php /var/www/html/poller.php > /dev/null 2>&1

修改成每1分鐘執行一次

    */1 * * * * /usr/bin/php /var/www/html/poller.php > /dev/null 2>&1

四、重建採集器緩存

【console】-【System Utilities】-【Rebuild Poller Cache】,刷新一下網頁圖形就出來了

########################################################################

附加說明:
在Cacti或者其餘基於RRDTool的MRTG系統中,咱們可能會遇到這樣的問題:在修改了graph template和data template,圖像仍然顯示以前的5分鐘的間隔,而不是新的1分鐘間隔。

通過一個小研究發現這個問題是因爲RRDtool在建立rrd文件的時候對rrd的文件進行了step的設定,可是這個設定是不能被動態更改的,也就是說你不能只修改某個rrd文件的step參數。

[root@cacti~ rra]# rrdtool info abc_111.rrd | more
filename = "abc_111.rrd"
rrd_version = "0003"
step = 300

這個就須要用到rrdtool dump和restore來對rrd文件進行一些小的修改。

首先用rrdtool dump將rrd庫dump成一個xml文件。

[root@cacti~ rra]# rrdtool dump abc_111.rrd > abc_111.xml

以後用手動編輯的方法修改xml文件中的step值。如本例,能夠將300修改爲60。

相關文章
相關標籤/搜索