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