作爲一名 Linux SA,日常最重要的就是保證網站正常穩定的運行,我們需要實時監控網站、服務器的運行狀態,這時需要藉助開源軟件(cacti、nagios、zabbix 等)監控來實現。Cacti 是用 php 語言實現的一個軟件,它的主要功能是用 snmp 服務獲取數據,然後用 rrdtool 儲存和更新數據,當用戶需要查看數據的時候用 rrdtool 生成圖表呈現給用戶。因此,snmp 和 rrdtool 是 cacti 的關鍵。Snmp 關係着數據的收集,rrdtool 關係着數據存儲和圖表的生成。snmp 抓到數據不是存儲在 mysql 中,而是存在 rrdtool 生成的 rrd 文件中(在 cacti 根目錄的 rra 文件夾下,一般以 rra 爲後綴名稱)。簡單原理圖如下:
安裝步驟:
安裝LAMP環境:
2.安裝rrdtool採集工具
3.安裝SNMP服務
4.安裝cacti主程序
下載cacti源碼包http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
5.創建cacti數據庫
把cacti數據導入cacti數據庫
6.修改cacti全局配置文件
7.添加Rrdtool抓圖任務計劃
http://192.168.1.3/cacti/ (192.168.1.3是你服務所在的ip)
第一次登錄需要修改密碼,這裏都改爲cacti
點擊device可以添加設備,默認顯示127.0.0.1這臺設備,右上角的add可以添加新的設備。
點擊名稱可以顯示詳細的信息。如圖
注,下面我們爲cacti主機增加圖形模板。
點擊右上腳的“Create Graphs for this Host”按鈕。咱們選中我們要監控的選項,點擊 ”Create“即可。圖形模板顏色選項,我們用默認即可。點擊”Create“。好了,到這裏我們的cacti主機就增加完成了。爲了我們查看圖形方便,我們將cacti主機加入”Graph Trees“中查看。點擊 ”Graph Trees“ –> 點擊”Default Tree“(當然你也可以增加新的圖形樹)。進入默認的圖形樹,我們選擇 ”Add“ 按鈕,在 ”Tree Item Type“ 中,我們選擇 ”Host“,其它默認即可。點擊 ”Create“。到這裏我們的圖形樹就增加完成了,我們點擊 ”Save“ 即可。下面我們查看一下 ”graphs“ 頁面,大家可以看到顯示的是 Default Tree 是裏有臺 cacti主機。圖形要過一會才能出現,大家耐心等一下默認5分鐘收集一下數據!
詳情見博客:http://www.tuicool.com/articles/BfamyiR
如果出現SNMP error 的情況,1 .snmp 服務沒啓動 -> service snmpd start 2. 執行下面命令確認被監控機器的snmp能否返回數據
snmpwalk -v 2c -c public 192.168.200.221 如果出現下面字樣則表示被監控機器的snmp服務沒有給監控機器授權
Timeout: No Response from 192.168.200.221或者
SNMPv2-SMI::mib-2 = No more variables left in this MIB View (It is past the end of the MIB tree)
打開被監控機器的/etc/snmp/snmp.conf文件,更改如下配置:
1. 查找以下字段
<p># sec.name source community </p><p>com2sec notConfigUser default public </p>
將"comunity"字段改爲你要設置的密碼.比如"public".
將“default”改爲你想哪臺機器可以看到你的snmp信息,如192.168.2.105
2. 查找以下字段:
<p>#### </p><p># Finally, grant the group read-only access to the systemview view. </p><p># group context sec.model sec.level prefix read write notif </p><p>access notConfigGroup "" any noauth exact systemview none none </p>
將"read"字段值改爲all.
<p>access notConfigGroup "" any noauth exact all none none </p>
3. 查找以下字段:
<p>## incl/excl subtree mask </p><p>#view all included .1 80 </p>
將該行前面的"#"去掉.
保存關閉.
4. 運行/etc/init.d/snmpd start命令運行snmpd.或 service snmpd start
再用snmpwalk執行,收到返回數據則表明snmp已經ok了