前言:php
基礎知識:建議先了解一下 rrdtool 及 rrd 數據庫的工做原理,參考閱讀《rrdtool學習筆記》數據庫
cacti主要使用了rrdtool這個工具來繪圖,因此看上去比zabbix的好看,其實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分鐘了的。框架
在 Data Sources 中,-rras 下面有 日、周、月、年的循環歸檔,這個地方就能夠決定咱們數據保存週期。保存時間 = 時間 * rows 。咱們來看看默認的cacti 5分鐘的保存時間:
基於以上公式,咱們算出來, (5 * 600) / 60m = 50h ≈ 2d工具
其它的時間均可以算出來。既然這樣能夠算出來的話,咱們能夠反過來想,咱們要保存一個月的5分鐘流量。應該怎麼寫rows呢?rows = (30d * 24h * 60m) / 5 ,這樣寫好rows以後,在一個月以內,你就能夠看見那個月某一天的詳細流量了。其中,要注意的是,時間,好比8月1號到8月31號 與8月1號到9月1號 是不一樣的概念的,到了9月1號纔算是過了一個月,cacti用的是天然月。post
這三個數值的關係是,steps爲每多少時間繪圖一次,timesspan爲時間跨度,rows爲在這個時間跨度裏面保存多少個數據記錄。
如一天的參數:
steps設置爲1:表示每分鐘繪圖一次;
rows設置爲1440:表示這一天存儲1440行數據;
Timespan設置爲86400:表示一天的時間86400秒。學習
配置:ui
要爲Cacti配置1分鐘的採集精度,在採集數據開始畫圖以前須要先作以下4個事情。url
建立1分鐘的RRA;
在Cacti Data Source 模板中修改「Step」和「Heartbeat」的值;
在系統 cron 中修改 poller 的輪詢時間間隔;
在 Cacti 配置中修改 poller 的輪詢時間間隔。
之因此首先要建立1分鐘的RRA,是由於一旦使用了錯誤的RRA採集數據,那麼就比較難修正了,意味着舊的數據要被丟棄從新開始收集(雖然在某些狀況下能夠經過rrdtool的 dump 和 restore 功能來在原有數據的基礎上進行修改,但那須要比較好的掌握 rrdtool 知識)。
只有網絡流量圖須要精度較高,因此我選擇建立新的1分鐘 RRA,保留5分鐘的默認 RRA 給其餘圖用(好比 Filesystem space、Memory free 監控等)。
一、首先先建立須要的1分鐘RRA:
「Console」 -> 「Management」 -> 「Data Sources」 -> RRAs ,Cacti 默認的 RRAs 以下:
這個RRA的定義能夠決定咱們不一樣精度的數據最大保存週期,保存時間 = Step * Steps * Rows 。好比默認的Cacti 5分鐘精度的 Daily (5 Miniute Average) 這個RRA精度的數據保存時間爲:(5 * 1 * 600) / 60m = 50h ≈ 2d,注意:
「Step」是步進時間,是在 Data Source 中定義的,Cacti 的話就是咱們下面第二步提到的在 Data template 裏定義的 Step 值(單位秒);
「Steps」是步進個數,便是指上圖 RRA 中定義的 Steps 值;
注:這個保存時間不是上圖中的 Timespan 的值,Timespan 指的是咱們點擊某一個圖以後出現的 詳細幾個分時間段的圖中 顯示的時間段的長度。
好了,正式開始咱們的RRA修改和建立方法說明。
爲了區分,咱們把默認的5分鐘精度的RRA的名字修改一下(別擔憂,Cacti是用ID來標識它們的),若是想保存的時間週期更長,把 Rows 數量也改大;
而後,咱們建立新的1分鐘精度的RRAs,好比(@min 表示1分鐘精度,@5min表示5分鐘精度):
最終以下:
咱們建立的1分鐘精度的RRA,其數據保存的時間週期的計算表格以下:
二、在Data Source模板中修改「Step」和「Heartbeat」
「Console」 -> 「Templates」 heading -> 「Data Templates」
選擇 Interface - Traffic 模板進行修改:
1) 「Associated RRAs」,選擇咱們剛纔建立的 @1min 的RRAs(去掉原選擇的 @5min 的RRAs):
注意 Steps 爲1的那個 Hourly RRA 爲必選,不然你的圖仍是5分鐘一個點。
2)Step改成60(秒):
3)Hearbeat改成120(秒,Step的2倍):
4)頁面下方點「Save」,而後注意把 標籤「2: traffic_out」的「Heartbeat」也再改一次。
最終如圖:
三、修改 cron 中的Poller輪詢間隔時間爲1分鐘
Debian下的配置位置爲:
# crontab -e
* * * * * www-data php
/usr/share/cacti/site/poller
.php 2>&1 >
/dev/null
|
if
[ -f
/usr/bin/ts
] ;
then
ts ;
else
tee
;
fi
>>
/var/log/cacti/poller-error
.log
四、在Cacti配置中修改Poller的輪詢時間間隔
「Console」 -> 「Configuration」 heading -> 「Settings」,點擊「Poller」標籤
五、重建 Poller 緩存
「Console」 -> 「Utilities」 heading -> 「System Utilities」,點擊「Rebuild Poller Cache」。
六、刪除本來的 .rrd 文件,等1分鐘後 cacti 重建。
# rm /var/lib/cacti/rra/*.rrd
緣由是咱們修改了全部的RRAs(默認的5分鐘的也修改了 rows 數),原來使用舊的RRA生成的rrd文件的定義,仍是舊的;用 rrdtool 命令能夠查看rrd文件的信息:
# rrdtool info localhost_mem_buffers_3.rrd
好了,等幾分鐘,刷新一下你的圖試試。Good luck!