1. 程式人生 > >提高Cacti數據采集精度 rrdtool保存圖的時間詳解

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

roo 大小 但是 需要 mes 創建 高精度 root 頻率

默認的Cacti監控圖形是以日、周、月、年 4個時間,每個時間都可以任意縮放查看,但是大家肯定也發現了, 默認的情況下,日圖是每5分鐘頻率的平均值,周圖是30分鐘,月圖是2小時,年圖是1天;這樣的話,如果查看一周前的圖就會比當時的實際圖相差很大,監控值會低不少,查看一月或一年之前的就會相差更大;這裏我們來說說怎麽解決此問題,或者說是縮小差值。

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

大家在看當天的流量圖的時候(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用的是自然月。

參數解疑:

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

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

如一天的參數:

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

采集精度詳細的修改實例,直接參考修改即可:

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

1、修改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

2、修改數據索引

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

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

3、修改計劃任務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

4、重建采集器緩存

【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。

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