cacti是一套基於PHP,mysql,SNMP及RRDTool開發的網絡流量測試圖形分析工具 php
cacti是經過snmpget來獲取數據,使用RRDtool繪畫圖形 ,並且徹底能夠不須要了解RRDtool複雜的參數 ,它提供了很是強大的數據和用戶管理功能,能夠指定每一個用戶能查看樹狀結構,host以及任何一張圖,還能夠與LDAP結合進行用戶驗證,同時也能本身增長模板,功能很是強大完善。界面 友好,軟件cacti的發展是基於讓RRTool使用這更方便的使用該軟件,除了基本 的SNMP的流量更系統諮詢監控外,cacti也可外掛scripts及加上Temlates來作出各式各樣的監視html
cacti是用php語言實現 的軟件,它主要 功能是用snmp服務獲取數據,而後用rrdtool存儲和更新數據,當用戶須要查看數據的時候用rrdtool生成圖形呈現給用戶,所以,snmp和rrdtool是cacti的關鍵,snmp關係着數據收集 ,rrdtool關係這數據存儲和圖表的生成mysql
mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名,主機IP,snmp團體名,端口,模板信息等變量,snmp抓 到的數據不是存儲在mysql中的,而是存在rrdtool生成rrd文件的處理 ,rrd文件 是大小固定的檔案文件,它可以存儲的數據筆數在建立時就已經定義。ios
Cacti監控安裝及監控本機c++
Nagios zabbixweb
Cacti簡介sql
– 數據採集層:經過SNMP或自定義腳本進行數據採集數據庫
– 數據存儲層:經過cacti模板等數據存放至MYSQL中apache
– 數據展示層:經過WEB方式呈現出來vim
能夠把他理解爲一個php網站
1、安裝
1、安裝必須的軟件包
[root@cacti-server ~]# yum -y install httpd php php-mysql php-ldap php-xml mysql mysql-server
[root@cacti-server ~]# yum install –y net-snmp lm_sensors gcc gcc-c++ libart_lgpl-develzlib-devel libpng-devel freetype-devel net-snmp-utils
2、安裝rrdtool。Rrdtool是一個繪圖工具,系統光盤中沒有提供,因此須要手工安裝
(1)安裝rrdtool編譯時所需軟件
(2)解壓rrdtool並進行配置安裝
[root@cacti-server ~]# tar zxvf rrdtool-1.2.30.tar.gz -C /usr/src/cd
[root@cacti-server ~]# cd /usr/src/rrdtool-1.2.30/
[root@cacti-server rrdtool-1.2.30]# ./configure --prefix=/usr/local/
[root@cacti-server rrdtool-1.2.30]# make && make install
3、啓動mysql數據庫和httpd服務
[root@cacti-server ~]# /etc/init.d/httpd start
[root@cacti-server ~]# chkconfig --add httpd
[root@cacti-server ~]# chkconfig httpd on
[root@cacti-server ~]# /etc/init.d/mysqld start
[root@cacti-server ~]# chkconfig --add mysqld
[root@cacti-server ~]# chkconfig mysqld on
4、安裝cacti
(1)cacti本質上是一個PHP網站,只須要把它解壓並拷貝到/var/www/html/目錄下便可
[root@cacti-server ~]# tar zxvf cacti-0.8.8a.tar.gz -C /usr/src/
[root@cacti-server ~]# cd /usr/src/
[root@cacti-server src]# mv cacti-0.8.8a/ /var/www/html/cacti
[root@cacti-server src]# cd /var/www/html/cacti/
(2)建立cactiuser用戶,並設置相關目錄的屬主、屬組
[root@cacti-server cacti]# adduser cactiuser
[root@cacti-server cacti]# chown -R cactiuser.cactiuser rra/ log/
其中rra目錄是收集到的監控數據目錄,log目錄是日誌目錄
(3)建立數據庫。由於cacti並無把建立數據庫的腳本寫到網頁中,因此須要管理員手工建立相關數據庫。
進入Mysql數據庫
Mysql
建立數據
mysql> create database cactidb default character set utf8;
爲數據庫進行受權:
mysql> grant all on cactidb.* to 'cactiuser'@'localhost' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)
(4)以cactiuser的身份把sql腳本導入到數據庫
[root@cacti-server ~]# mysql -u cactiuser -p123.com cactidb < /var/www/html/cacti/cacti.sql
(5)修改相關的php文件,以便於apache經過php鏈接mysql數據庫時,能夠提供正確的用戶名、密碼等。
[root@cacti-server ~]# cd /var/www/html/cacti/
[root@cacti-server cacti]# vim include/config.php
26行$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cacti";
$database_port = "3306";
總結:
一、 先安裝cacti須要的系統包
二、 解壓安裝
三、 設置數據庫,導入cacti.sql
四、 修改config.php
(6)打開網頁按照嚮導完成安裝
在瀏覽器輸入http://192.168.20.138/cacti/install/
用戶名和密碼都是admin,首次登錄後,要求修改admin的密碼 123.com
修改完後便可進入界面
2、監控自身
CACTI監控的時候,是經過SNMP實現的。
SNMP:簡單網絡管理協議 UDP16一、162
查詢方法:
輪詢:監控端週期性地查詢被監控端161
陷阱:被監控端主動向監控端彙報事件162
SNMP消息類型:
get-request:監控端查詢被監控端
get-next-request:監控端查詢被監控端某一項更詳細內容
set-request:監控端設置被監控端的某些參數
get-response:被監控端迴應監控端
trap:陷阱,被監控端主動向監控端彙報事件
1、配置snmp
[root@cacti-server cacti]# vim /etc/snmp/snmpd.conf
41行定義安全組
85行定義視圖
62行向安全組受權相應的視圖
2、啓動服務
[root@cacti-server ~]# /etc/init.d/snmpd start
正在啓動 snmpd: [肯定]
[root@cacti-server ~]# netstat -anput | grep snmp
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 23462/snmpd
udp 0 0 0.0.0.0:161 0.0.0.0:* 23462/snmpd
[root@cacti-server ~]# chkconfig --add snmpd
[root@cacti-server ~]# chkconfig snmpd on
3、經過WEB頁面添加被監控主機
(1)刪除存在的主機
(2)添加要監控的主機
(3)添加監控項
上一步點擊Create後,把頁面拉到底部,後面顯示沒有數據,那麼它是無用的,點擊後面的X號,將其刪除。
添加上SNMP可以監控的項目
使用相同的辦法,把處理器信息也添加上。最後保存
(4)爲監控項繪製圖形
在WEB頁的最上端,點擊建立圖形
選項要監控的項目,而後點擊Create
(5)把建立的圖形加入到圖形樹
(6)爲圖形生成數據
在監控服務器上,以cactiuser的身份執行php命令
[root@cacti-server cacti]# su - cactiuser
[cactiuser@cacti-server ~]$ php /var/www/html/cacti/poller.php
F5刷新便可出線圖形
(7)設置計劃任務
爲了每隔1分鐘監控服務器都會獲取一次數據,須要使用計劃任務,每隔1分鐘生成一次數據
crontab -e
*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php &> /dev/null
過幾分鐘顯示下圖爲正常