用lnmp與cacti實現網絡監控

    這段時間,大家跟着我一塊已經看了很多lnmp——即Linux-nginx-mysql-php,這個架構真的很了不起,它可以實現很多功能,譬如通過整合nginx做負載均衡、虛擬主機....,接下來繼續給大家介紹lnmp架構。本博文是通過整合lnmp+cacti實現網絡監控功能。

    大家都知道,cacti本身是用來做監控的,通過snmp採集數據,並將採集到的數據通過rrdtool繪成圖形,而用戶主機之類的信息都記錄在rra文件中,rra文件大小都是固定的,比如當客戶端想看到自己磁盤的使用情況,它會向cacti發送請求,cacti根據請求的內容命令rrdtool繪圖,最後回送給用戶。官方文檔:http://docs.cacti.net/wiki:documentation,可以根據自己所用軟件的版本,選擇合適的Document以供參考,方便大家打架。

    官方文檔很壯觀啊,全英文,對於英語不好的童鞋們就該暈了,那麼,爲了大家能夠快速而準確的搭建平臺,本博主將自己的學習記錄粘貼到下面,供大家參考學習。想看的更全面,大家課選擇下載下面的附件。

###############工具介紹#######################

snmp:數據採集工具

rrdtool:繪畫圖表,儲存更新數據

cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據


##############cacti簡介########################

Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool複雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。軟件 Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖。

cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據,當用戶需要查看數據的時候用rrdtool生成圖表呈現給用戶。因此,snmp和rrdtool是cacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。

Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ip、snmp團體名、端口號、模板信息等變量。

snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它能夠存儲的數據筆數在創建時就已經定義。關於RRDTool的知識請參閱RRDTool教學。


########################實現過程############################

需要安裝的包有:rrdtool,php,php-mysql,php-xml,php-snmp,net-snmp*



cacti-0.0.8a版本以後都不需要裝插件,所以0.0.8a之前的cacti需要安裝插件cacti-plugin


cacti-spine-0.8.8b.tar.gz cacti-0.8.8b.tar.gz


[root@server34 ~]# yum install php mysql-server php-gd -y



[root@server34 ~]# tar zxf cacti-0.8.8b.tar.gz -C /var/www/html/



[root@server34 html]# mv cacti-0.8.8b/ cacti


[root@server34 html]# yum install rrdtool -y


[root@server34 html]# yum install php-mysql php-xml -y



安裝php-snmp之前先查看系統php的版本


[root@server34 html]# rpm -q php


php-5.3.3-3.el6_2.8.x86_64





[root@server34 ~]# yum localinstall php-snmp-5.3.3-3.el6_2.8.x86_64.rpm -y



修改時區,因爲要做crontab,


[root@server34 ~]# vim /etc/php.ini


date.timezone = Asia/Shanghai



[root@server34 ~]# /etc/init.d/httpd start


Starting httpd:                                            [  OK  ]



用於檢測所需要的包是否均安裝成功


[root@server34 html]# vim index.php


<?php


phpinfo()


?>



依次檢查mysql,session,sockets,xml,pcre是否安裝成功


http://192.168.0.34                                                                              



數據庫首次啓動,是初始化,目地創建表結構


[root@server34 ~]# /etc/init.d/mysqld start



mysql加密        


[root@server34 ~]# mysql_secure_installation




[root@server34 ~]# yum list net-snmp*


Loaded plugins: product-id, subscription-manager


Updating certificate-based repositories.


Unable to read consumer identity


Installed Packages


net-snmp.x86_64                        1:5.5-41.el6                 @rhel-source


net-snmp-libs.x86_64                   1:5.5-41.el6                 @rhel-source


Available Packages


net-snmp-devel.i686                    1:5.5-41.el6                 rhel-source


net-snmp-devel.x86_64                  1:5.5-41.el6                 rhel-source


net-snmp-libs.i686                     1:5.5-41.el6                 rhel-source


net-snmp-perl.x86_64                   1:5.5-41.el6                 rhel-source


net-snmp-python.x86_64                 1:5.5-41.el6                 rhel-source


net-snmp-utils.x86_64                  1:5.5-41.el6                 rhel-source



安裝snmp簡單網絡管理工具


[root@server34 ~]# yum install net-snmp-utils.x86_64 -y


[root@server34 ~]# vim /etc/snmp/snmpd.conf


允許snmp採集本機和192.168.0.0/24網段的數據,密鑰是public(但這是安全漏洞)


com2sec local localhost public


com2sec mynetwork 192.168.0.0/24 public



group MyRWGroup v1 local  //定義組


group MyRWGroup v2c local


group MyRWGroup usm local


group MyROGroup v1 mynetwork


group MyROGroup v2c mynetwork


group MyROGroup usm mynetwork



view    systemview    included   .1.3.6.1.2.1


view    systemview    included   .1.3.6.1.2.1.25.1.1


view    all    included  .1     80



access  MyROGroup       ""      any     noauth  exact all       none    none


access  MyRWGroup       ""      any     noauth  exact all       all    none



syslocation RHEL6.3


syscontact Root <[email protected]>




disk / 10000  //打開


# % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9



[root@server34 ~]# /etc/init.d/snmpd start


Starting snmpd:                                            [  OK  ]



[root@server34 ~]# snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9


UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1


UCD-SNMP-MIB::dskPath.1 = STRING: /


UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/VolGroup-lv_root


UCD-SNMP-MIB::dskMinimum.1 = INTEGER: 10000


UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1


UCD-SNMP-MIB::dskTotal.1 = INTEGER: 19134332


UCD-SNMP-MIB::dskAvail.1 = INTEGER: 16993208


UCD-SNMP-MIB::dskUsed.1 = INTEGER: 1169144


UCD-SNMP-MIB::dskPercent.1 = INTEGER: 6


UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 2


UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 19134332


UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0


UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 16993208


UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0


UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 1169144


UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0


UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)


UCD-SNMP-MIB::dskErrorMsg.1 = STRING:



檢測:


[root@server34 ~]# snmpwalk -v 1 localhost -c public IP-MIB::ipAdEntIfIndex


IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1


IP-MIB::ipAdEntIfIndex.192.168.0.34 = INTEGER: 2   //出現主機ip時則成功


[root@server34 ~]# snmpwalk -v 1 192.168.0.34 -c public IP-MIB::ipAdEntIfIndex


IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1


IP-MIB::ipAdEntIfIndex.192.168.0.34 = INTEGER: 2



將web運行用戶與apache的用戶分開,安全運行cacti web頁面


[root@server34 cacti]# pwd


/var/www/html/cacti


[root@server34 cacti]#useradd -u 1000 cacti


創建cacti庫


[root@server34 cacti]# mysql -pwestos


mysql> create database cacti;




將表cacti.sql的內容導入到cacti庫中


[root@server34 cacti]# mysql -pwestos cacti < cacti.sql



關聯cacti`數據庫與php


[root@server34 include]# vim config.php


$database_type = "mysql";


$database_default = "cacti";


$database_hostname = "localhost";


$database_username = "cacti";  //登錄數據庫的用戶,登錄數據庫的用戶與運行cacti的用戶不是同一個


$database_password = "westos";  //登錄數據庫的密碼


$database_port = "3306";


$database_ssl = false;



$url_path = "/cacti/";


$cacti_session_name = "Cacti";



給cacti用戶授予運行cacti數據庫所有操作權限。


mysql> grant all on cacti.* to cacti@localhost identified by 'westos';



運行以下命令,若能進入則授權成功


[root@server34 include]# mysql -ucacti -pwestos cacti



重啓apache


[root@server34 include]# /etc/init.d/httpd restart


Stopping httpd:                                            [  OK  ]


Starting httpd:                                            [  OK  ]



採集數據,每隔5分鐘採集一次數據


[cacti@server34 include]$ crontab -e


*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1




測試:


http://192.168.0.34/cacti


若無紅色出現表示安裝成功


注:第一次登錄用戶密碼都是admin



點擊graphs,等待五分鐘,會繪出圖形或者查看rra目錄,rra目錄下有文件則說明已經採集到數據了。


[cacti@server34 rra]$ ls


localhost_load_1min_5.rrd    localhost_mem_swap_4.rrd  localhost_users_6.rrd


localhost_mem_buffers_3.rrd  localhost_proc_7.rrd


[cacti@server34 rra]$ pwd


/var/www/html/cacti/rra




安裝spine:

spine: a backend data gatherer for Cacti (spine是cacti的後端數據採集者)

用spine加快snmp採集數據的速度

poller輪詢器

cacti-spine的版本必須與之前下載的cacti包的版本一致

[root@server34 ~]# tar zxf cacti-spine-0.8.8b.tar.gz


安裝編譯spine的依賴性

[root@server34 ~]# yum install automake autoconf dos2unix gcc make glibc-headers kernel-headers  libtool -y

[root@server34 cacti-spine-0.8.8b]# sh bootstrap


編譯

[root@server34 cacti-spine-0.8.8b]# ./configure


錯誤1:

checking whether we are using Linux Capabilities... no

configure: error: Cannot find MySQL headers.  Use --with-mysql= to specify non-default path.

解決;

[root@server34 cacti-spine-0.8.8b]# yum install mysql-devel -y


再次編譯

錯誤2:

configure: error: Cannot find SNMP headers.  Use --with-snmp= to specify non-default path.

解決:

[root@server34 cacti-spine-0.8.8b]# yum install net-snmp-devel -y


最後編譯成功

[root@server34 cacti-spine-0.8.8b]# ./configure


[root@server34 cacti-spine-0.8.8b]# make && make install


[root@server34 etc]# cp -p spine.conf.dist /etc/spine.conf


[root@server34 etc]# pwd


/usr/local/spine/etc


更改spine的配置文件

[root@server34 etc]# vim spine.conf


DB_Host         localhost


DB_Database     cacti


DB_User         cacti


DB_Pass         westos


DB_Port         3306


DB_PreG         1


運行spine,出現以下信息則正確

[root@server34 etc]# /usr/local/spine/bin/spine

SPINE: Using spine config file [spine.conf]

SPINE: Version 0.8.8b starting

SPINE: Time: 0.2860 s, Threads: 5, Hosts: 2


瀏覽器中設置:

http://192.168.0.34/cacti

1.setting->path->添加啓動路徑‘/usr/local/spine/bin/spine’->save

2.seting->poller->選擇spine->save(輪詢方式爲spine)











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章