開源監控解決方案nagios+pnp4nagios+nconf+ndoutils整合部署

Nagios在監控方面的強大功能,以及基於GPLv2的開源特性,使其在監控領域具有超羣的性價比,深的廣大運維師的好評。
 
而今天作者這裏提到的“nagios+pnp4nagios+nconf+ndoutils”是以nagios爲核心、伴以多款開源軟件來進行的整合部署,從而實現監控信息圖形化、web頁面定義定義監控配置、監控信息存儲等一系列功能的解決方案。 
 
下面就除nagios之外需要用到的幾個開源軟件進行簡要介紹:
 
pnp4nagios是基於RRD輪循(環狀)數據庫中所提供的綜合信息,以可視化圖形的方式呈現給用戶的一款nagios插件;
nconf是基於PHP使用戶通過web頁面實現對nagios各項屬性進行配置,諸如模板定義、添加修改監控的主機/服務等操作;
ndoutils可以導出nagios通過SNMP捕獲到的當前和歷史數據並存儲到MySQL數據庫中,並且自身以一個獨立守護進程的狀態存在。
 
下圖簡述他們之間協同工作的原理
以下的內容作者將一步步的剖析整套方案的部署過程:
一、成功安裝配置nagios
在上一篇博文Nagios遠程監控軟件的安裝與配置詳解中作者已經對nagios的工作原理以和安裝及配置流程進行了詳細地說明,這裏就不在贅述。
Ps:爲了不影響後面步驟的正常進行,請保證您已成功安裝nagios、nagios-plugins和nrpe。
 
二、rrdtool與pnp4nagios的安裝與配置
1.rrdtool的安裝需要一系列繁雜的依賴關係下面提供兩種安裝方法
i.編譯安裝
  1. yum install -y pango pango-devel freetype freetype-devel libpng libpng-devel gettext gettext-devel libjpeg libjpeg-devel gd gd-devel libxml2 libxml2-devel libiconv libiconv-devel  qpixman qpixman-devel glib glib-devel cairo cairo-devel libart*   
  2. #這裏將編譯安裝中所需的依賴果斷全部yum了  
  3. tar xvf rrdtool-1.4.5.tar.gz  
  4. #解壓文件 
  5. cd rrdtool-1.4.5  
  6. ./configure --prefix=/usr/local/rrdtool  
  7. make && make install  
  8. #編譯安裝 

ii.本地yum安裝

  1. yum localinstall -y rrdtool-perl-1.4.4-1.el5.wrl.i386.rpm rrdtool-devel-1.4.4-1.el5.wrl.i386.rpm rrdtool-1.4.4-1.el5.wrl.i386.rpm  
  2. #下載並安裝包含所有rrdtool依賴關係的rpm包和rrdtool  

Ps:由於沒有找到rrdtool-1.4.5的rpm包...囧,這裏就只能使用1.4.4版了

2.安裝pnp4nagios
  1. tar zxvf pnp4nagios-0.6.14.tar.gz  
  2. #解壓  
  3. cd pnp4nagios-0.6.14  
  4. ./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-nagios-user=nagios --with-nagios-group=nagcmd  
  5. #注意這裏的nagios用戶和nagcmd組已在安裝nagios時創建完成  

注意:這裏作者在使用編譯安裝rrdtool時遇到報錯

解決方法:
  1. cp -R /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/* /usr/lib/perl5/5.8.8/i386-linux-thread-multi/  
  2. ./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-nagios-user=nagios --with-nagios-group=nagcmd  
  3. #將需要與perl相關文件複製過去後,重新編譯  

Ps:使用yum安裝rrdtool,則忽略此步驟。

  1. make all && make install && make install-webconf && make install-config && make install-init  
  2. #編譯安裝,生成相應的配置及初始化文件  
  1. cd   /usr/local/pnp4nagios/etc 
  2. mv misccommands.cfg-sample  misccommands.cfg 
  3. mv nagios.cfg-sample nagios.cfg 
  4. mv rra.cfg-sample rra.cfg 
  5. cd /usr/local/pnp4nagios/etc/pages/ 
  6. mv web_traffic.cfg-sample web_traffic.cfg 
  7. cd ../check_commands 
  8. mv check_all_local_disks.cfg-sample  check_all_local_disks.cfg 
  9. mv check_nrpe.cfg-sample  check_nrpe.cfg 
  10. mv check_nwstat.cfg-sample  check_nwstat.cfg 
  11. #將上述配置文件重命名,使之能夠被程序識別 

重啓服務

  1. service npcd restart  

修改nagios相關配置文件中參數

  1. process_performance_data=1  
  2. #將此變量值設爲1  
  3. host_perfdata_command=process-host-perfdata  
  4. service_perfdata_command=process-service-perfdata  
  5. #取消這兩項的註釋  
  1. cd /usr/local/nagios/etc/objects 
  2. vim commands.cfg 
  3. #對nagios命令配置文件進行設置 
  4. # 'process-host-perfdata' command definition 
  5. define command{ 
  6.        command_name   process-host-perfdata 
  7.        command_line   /usr/local/pnp4nagios/libexec/process_perfdata.pl 
  8.        } 
  9. # 'process-service-perfdata' command definition 
  10. define command{ 
  11.        command_name   process-service-perfdata 
  12.        command_line   /usr/local/pnp4nagios/libexec/process_perfdata.pl 
  13.        } 
  14. #添加上面兩行在文件的末行 ,並刪除或註釋掉原有對process-host-perfdata和process-service-perfdata進行定義的字段 

說明:command.cfg文件的默認設置對process-host-perfdata 和 process-service-perfdata有定義,如果直接添加而不刪除默認定義會發生衝突,進而而導致在檢測配置文件時報錯。

  1. vim templates.cfg  
  2. #對nagios的模板配置文件進行修改  
  3. define host {  
  4. name          host-pnp  
  5. action_url    /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_  
  6. register   0  
  7. }  
  8. define service {  
  9. name         srv-pnp  
  10. action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$  
  11. register   0  
  12. }  
  13. #在模版中添加pnp4nagios的定義  
  1. cp ../pnp4nagios-0.6.14/contrib/ssi/* /usr/local/nagios/share/ssi/ 
  2. #回到解壓目錄下,複製鼠標懸停圖標顯示,預覽繪圖所需的文件 

定義監控服務/主機

  1. cd /usr/local/nagios/etc/  
  2. vim mylinux.cfg  
  3. #自定義監控主機和監控服務  
  4. define host{  
  5.            use             linux-server  
  6.           host_name     mylinux  
  7.           alias            mylinux  
  8.           address        192.168.0.72  
  9.         }  
  10. #定義監控主機  
  11. define service{  
  12.         host_name               mylinux  
  13.         use                     generic-service,srv-pnp  
  14.         service_description     PING  
  15.         check_command           check_ping!100.0,20%!500.0,60%!  
  16.         }  
  17. define service{  
  18.        hostgroup_name           mylinux  
  19.        use                    generic-service,srv-pnp  
  20.         service_description     remote_load  
  21.         check_command           check_nrpe!check_load  
  22.        }  
  23. #定義監控的服務  
  24. define serviceextinfo {  
  25.   host_name             mylinux     #與主機名對應  
  26.   service_description   remote_load     #與要顯示的服務對應  
  27.   action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$  
  28. }  
  29. #這是向nagios監控界面對應服務添加pnp4nagios圖標的方法  

說明:pnp4naigos在安裝關聯nagios後會對所監控的服務進行圖形化顯示,但是並非所有服務都會自動在nagios監視見面出現pnp4nagios的圖標,故用以上字段予以定義。

Ps:具體的監控主機以及監控服務在Nagios遠程監控軟件的安裝與配置詳解中有詳細說明,這裏就不做重複介紹了^_^
  1. nagios -v /var/www/nafios/etc/nagios.cfg         
  2. #檢測配置文件語法,在先前nagios配置中已經定義過nagios命令的PATH故直接使用nagios命令  
  3. service nagios restart  
  4. #重啓服務  

刷新nagios界面,您會發現在之前定義的服務後面對應的回出現pnp4nagios的圖標

且支持鼠標懸停顯示
點擊pnp4nagios圖標後進圖繪圖界面
 
二、安裝配置nconf
首先對mysql數據庫進行定義
  1. service mysqld start  
  2. #啓動mysql  
  3. mysqladmin -uroot -p password 'redhat';  
  4. #給mysql添加管理員密碼  
  5. mysql –uroot –p  
  6. #進入mysql數據庫  
  7. mysql> create database nconf;   
  8. #創建nconf數據庫  
  9. mysql> grant all privileges on nconf.* to nconf@localhost identified by 'nconf';  
  10. #創建nconf用戶並賦權    
  11. mysql> flush privileges;    
  12. #刷新特權表  
  13. mysql>quit  

解壓nconf到指定目錄下

  1. tar -zxf nconf-1.2.6-0.tgz -C /var/www/html/  
  2. cd /var/www/html/nconf  
  3. chown -R apache.apache config/ temp/ static_cfg/ output/  
  4. #給相關文件賦予權限  

SELINUX安全上下文

  1. chcon -R -t httpd_sys_content_t /var/www/html/nconf/   
  2. chcon -t httpd_sys_script_exec_t /var/www/html/nconf/bin/nagios   
  3. #修改文件的安全上下文   

 Ps:如果您的SELinux已經關閉,忽略此步操作

 http://您nagios監控端的IP/nconf
 在web頁面按照安裝提示一步步安裝
 
#使用剛纔創建的nconf數據庫和nconf數據庫用戶/密碼
#成功連接mysql數據庫
#輸入用於通過nconf生成nagios配置文件所需的nconf路徑和nagios命令路徑
#設置nconf管理員密碼,此時默認登錄用戶爲admin
#網頁安裝完成
  1. rm -rf INSTALL INSTALL.php  UPDATE UPDATE.php   
  2. #刪除安裝所需的初始化文件  
  3. ln -s /usr/local/nagios/bin/nagios bin/nagios   
  4. #給nagios命令創建符號鏈接  
  5. chmod +x /var/www/html/nconf/bin/generate_config.pl   
  6. #給與nagios關聯的配置文件賦予執行權限  
  7. chown -R apache.apache  bin  
  8. #修改文件的屬組和屬主  

重新刷新頁面,輸入admin/您設置的密碼,進入nconf頁面

#nconf的主頁面
#嘗試生成配置文件,以測試是否與nagios成功關聯
到此nconf就安裝完成了!
NConf 使用方法:
查看這兩個文件是否有執行權限
  1. chmod +x /var/www/html/nconf/bin/generate_config.pl   
  2. #用來將web頁面的配置設置轉化成文nagios配置文件的腳本,其需要apache用戶有可執行權限  
  3. chmod +x  /usr/local/nagios/bin/nagios  
  4. #給other執行權限,用來檢測nagios配置文件是否有語法錯誤  

使用流程:

注意:nconf在點擊【Generate Nagios config】後將您的生成nagios配置文件是/var/www/html/nconf/output/NagiosConfig.tgz,而並非直接導入nagios中
 
1.在web頁面對監控服務和主機配置完畢,點擊【Generate Nagios config】
2.deploy_local.sh是nconf自帶配置文件導入腳本
  1. chmod +x /var/www/html/nconf/ADD-ONS/deploy_local.sh          
  2. #這一步不解釋,你懂的  
  3. /var/www/html/nconf/ADD-ONS/deploy_local.sh  
  4. #手動執行此腳本,將在/usr/local/nagios/etc下生成兩目錄Default_collector與global  

3.修改nagios主配置文件

  1. vim /usr/local/nagios/etc/nagios.cf  
  2. #將其中cfg_file=*******字段全部註釋  
  3. cfg_dir=/usr/local/nagios/etc/Default_collector  
  4. cfg_dir=/usr/local/nagios/etc/global  
  5. #添加將其配置文件指向  
  6. service nagios reload  
  7. #重載nagios配置文件使之生效  

4.添加到crontab

  1. crontab -e  
  2. */1 * * * *  /var/www/html/nconf/ADD-ONS/deploy_local.sh  
  3. #每分鐘監測一下是否有更新,有更新就自動覆蓋最新的配置文件  

四、安裝配置ndoutils

  1. mysql -u root -p  
  2. mysql>create database nagios;  
  3. mysql> grant all privileges on nagios.* TO nagios@localhost identified by 'nagios';  
  4. #安裝之前先創建nagios數據庫,並將此數據庫所有權限賦予nagios用戶  
  5. mysql>flush privileges;   

Ps:如果之前過程中nagios已經創建,此步驟忽略

  1. tar -xvf ndoutils-1.4b9.tar.gz  
  2. cd ndoutils-1.4b9  
  3. cp /root/ndoutils1.4b9_light.patch ./  
  4. patch -p1 -N < ./ndoutils1.4b9_light.patch  
  5. #給ndoutils打補丁  
  6. ./configure --prefix=/usr/local/nagios/ --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios  
  7. #指定安裝目錄爲nagios程序位置  
  8. make  

向mysql中導入數據

  1. cd db  
  2. ./installdb -u root -p 您數據庫的密碼 -d nagios  
  3. #將初始數據導入數據庫  

檢測數據導入情況

  1. mysql -u root -p  
  2. mysql>use nagios;  
  3. mysql>show tables;   
  4. mysql>quit  

  1. cd ndoutils-1.4b9  
  2. cp ./src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o  
  3. cp ./src/ndo2db-3x /usr/local/nagios/bin/ndo2db  
  4. cp ./config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg  
  5. cp ./config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg  
  6. #拷貝相關配置文件到對應目錄  
  7. chmod 774 /usr/local/nagios/bin/*  
  8. chown nagios:nagios /usr/local/nagios/bin/*  
  9. chown nagios:nagios /usr/local/nagios/etc/*  
  10. #修改文件的屬主屬組權限  

調整配置文件

  1. vim /usr/local/nagios/etc/ndo2db.cfg   
  2. #修改ndo的主配置文件  
  3. db_name=nagios  
  4. #指定數據庫爲nagios  
  5. db_user=nagios  
  6. db_pass=nagios  
  7. #設置以nagios用戶登入mysql的賬號密碼  
  8. vi /usr/local/nagios/etc/nagios.cfg  
  9. #修改nagios主配置文件  
  10. broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg  
  11. #在末行添加  

收尾工作

  1. cp ./daemon-init /etc/init.d/ndo2db  
  2. chmod +x /etc/init.d/ndo2db  
  3. chkconfig --add ndo2db   
  4. chkconfig ndo2db on 
  5. #添加啓動腳本  
  1. service nagios restart 
  2. service ndo2db start 
  3. #重啓服務 

查看日誌文件,以驗證ndoutils配置是否成功

  1. tail -20 /usr/local/nagios/var/nagios.log   
  2. #或者  
  3. tail -20 /var/log/messages  

mysql數據庫與nagios通過ndoutils關聯成功!
至此關於對實現nagios+pnp4nagios+nconf+ndoutils的整合部署就告一段落,以上內容在您實現過程中出現的任何問題,或對以上任何內容的補充,都歡迎在此交流; 並請各位高手前輩大神達人予以批評指正,謝謝!

 

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