Cacti如何實現(xiàn)被動數(shù)據(jù)獲取
cacti 我們也用了很久了,但是它的表結(jié)構(gòu)一直都沒有去關(guān)心過,得空抽了半個晚上的時間,把它的庫表結(jié)構(gòu)大概看了下,某些字段的含義跟大家分享下:
cacti 的數(shù)據(jù)都是存放在rrdtool 中的,數(shù)據(jù)庫存放的其實只是配置數(shù)據(jù),cacti 的邏輯對象主要分為三種,data (數(shù)據(jù))、graph (圖片)、host (設(shè)備),這在它的表設(shè)計中也能很容易的看出來。所以,就分三個大類來討論了
Cacti 如何實現(xiàn)被動數(shù)據(jù)獲取
了解到它的數(shù)據(jù)結(jié)構(gòu)以后,我們就可以想辦法來實現(xiàn) cacti 的被動數(shù)據(jù)獲取了,因為并不是所有場合, snmp 都可以取到數(shù)據(jù)的,也許有時候我們要取的 ip 在另外一個局域網(wǎng)里,也許我們覺得 cacti 的負載太高,不能讓它取太多的數(shù)據(jù)。
1 、方式
方式很簡單,在 cacti 中定義好 host , data , graph ,然后只要我們能定時的把數(shù)據(jù)插入到它的 rrd 文件中就可以了。
2 、方法
方法可以有兩種:
***種用腳本, cacti 支持自寫腳本取數(shù)據(jù)。最土的辦法,就是定時的將數(shù)據(jù)推送到 cacti 的機器上,追加到一個文件里,然后 cacti 通過一個腳本讀取這個文件來獲取數(shù)據(jù)。
第二種就是直接插 rrd 文件, cacti 正常的獲取數(shù)據(jù)方式是用 crontab 跑 poller ,或者 spine ,去定時取數(shù)據(jù)。我們在 poller 或者 spine 的過程中不需要讓它去取數(shù)據(jù),直接跳過,而定時的從外部把數(shù)據(jù)推送進來,然后插入 rrd 文件即可。
3 、步驟
a 、添加一個 host (如果這個 host 無法訪問到,那么可用性檢查會失敗,但是沒關(guān)系)
b 、添加數(shù)據(jù)源,需要 insert 以下幾張表: data_local 、 data_template_data 、 data_template_data_rra 、 data_template_rrd
c 、創(chuàng)建 rrd 文件,打開 data source 頁面,應(yīng)該已經(jīng)可以看到我們添加的數(shù)據(jù)源了,打開那個數(shù)據(jù)源的 debug 模式,將 rrdtool 的命令拷貝到 shell 中執(zhí)行一次即可(注意權(quán)限)
d 、創(chuàng)建一個圖片,需要 insert 以下幾張表: graph_local 、 graph_template_graph 、 graph_template_item
e 、定時的向 rrd 文件中插入數(shù)據(jù)(用你喜歡的方式,同時要注意 rrd 文件的權(quán)限)
【編輯推薦】