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.編譯安裝
- 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*
- #這里將編譯安裝中所需的依賴果斷全部yum了
- tar xvf rrdtool-1.4.5.tar.gz
- #解壓文件
- cd rrdtool-1.4.5
- ./configure --prefix=/usr/local/rrdtool
- make && make install
- #編譯安裝
ii.本地yum安裝
- 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
- #下載并安裝包含所有rrdtool依賴關系的rpm包和rrdtool
Ps:由于沒有找到rrdtool-1.4.5的rpm包...囧,這里就只能使用1.4.4版了
2.安裝pnp4nagios
- tar zxvf pnp4nagios-0.6.14.tar.gz
- #解壓
- cd pnp4nagios-0.6.14
- ./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-nagios-user=nagios --with-nagios-group=nagcmd --with-httpd-conf=你的apache的conf.d目錄
- #注意這里的nagios用戶和nagcmd組已在安裝nagios時創建完成
注意:這里作者在使用編譯安裝rrdtool時遇到報錯

解決方法:
- cp -R /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/* /usr/lib/perl5/5.8.8/i386-linux-thread-multi/
- ./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-nagios-user=nagios --with-nagios-group=nagcmd
- #將需要與perl相關文件復制過去后,重新編譯
Ps:使用yum安裝rrdtool,則忽略此步驟。
- make all && make install && make install-webconf && make install-config && make install-init
- #編譯安裝,生成相應的配置及初始化文件
- cd /usr/local/pnp4nagios/etc
- mv misccommands.cfg-sample misccommands.cfg
- mv nagios.cfg-sample nagios.cfg
- mv rra.cfg-sample rra.cfg
- cd /usr/local/pnp4nagios/etc/pages/
- mv web_traffic.cfg-sample web_traffic.cfg
- cd ../check_commands
- mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
- mv check_nrpe.cfg-sample check_nrpe.cfg
- mv check_nwstat.cfg-sample check_nwstat.cfg
- #將上述配置文件重命名,使之能夠被程序識別
重啟服務
- service npcd restart
修改nagios相關配置文件中參數
- process_performance_data=1
- #將此變量值設為1
- host_perfdata_command=process-host-perfdata
- service_perfdata_command=process-service-perfdata
- #取消這兩項的注釋
- cd /usr/local/nagios/etc/objects
- vim commands.cfg
- #對nagios命令配置文件進行設置
- # 'process-host-perfdata' command definition
- define command{
- command_name process-host-perfdata
- command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl
- }
- # 'process-service-perfdata' command definition
- define command{
- command_name process-service-perfdata
- command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl
- }
- #添加上面兩行在文件的末行 ,并刪除或注釋掉原有對process-host-perfdata和process-service-perfdata進行定義的字段
說明:command.cfg文件的默認設置對process-host-perfdata 和 process-service-perfdata有定義,如果直接添加而不刪除默認定義會發生沖突,進而而導致在檢測配置文件時報錯。
- vim templates.cfg
- #對nagios的模板配置文件進行修改
- define host {
- name host-pnp
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
- register 0
- }
- define service {
- name srv-pnp
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
- register 0
- }
- #在模版中添加pnp4nagios的定義
- cp ../pnp4nagios-0.6.14/contrib/ssi/* /usr/local/nagios/share/ssi/
- #回到解壓目錄下,復制鼠標懸停圖標顯示,預覽繪圖所需的文件
定義監控服務/主機
- cd /usr/local/nagios/etc/
- vim mylinux.cfg
- #自定義監控主機和監控服務
- define host{
- use linux-server
- host_name mylinux
- alias mylinux
- address 192.168.0.72
- }
- #定義監控主機
- define service{
- host_name mylinux
- use generic-service,srv-pnp
- service_description PING
- check_command check_ping!100.0,20%!500.0,60%!
- }
- define service{
- hostgroup_name mylinux
- use generic-service,srv-pnp
- service_description remote_load
- check_command check_nrpe!check_load
- }
- #定義監控的服務
- define serviceextinfo {
- host_name mylinux #與主機名對應
- service_description remote_load #與要顯示的服務對應
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
- }
- #這是向nagios監控界面對應服務添加pnp4nagios圖標的方法
說明:pnp4naigos在安裝關聯nagios后會對所監控的服務進行圖形化顯示,但是并非所有服務都會自動在nagios監視見面出現pnp4nagios的圖標,故用以上字段予以定義。
Ps:具體的監控主機以及監控服務在Nagios遠程監控軟件的安裝與配置詳解中有詳細說明,這里就不做重復介紹了^_^
- nagios -v /var/www/nafios/etc/nagios.cfg
- #檢測配置文件語法,在先前nagios配置中已經定義過nagios命令的PATH故直接使用nagios命令
- service nagios restart
- #重啟服務
刷新nagios界面,您會發現在之前定義的服務后面對應的回出現pnp4nagios的圖標

且支持鼠標懸停顯示

點擊pnp4nagios圖標后進圖繪圖界面

二、安裝配置nconf
首先對mysql數據庫進行定義
- service mysqld start
- #啟動mysql
- mysqladmin -uroot -p password 'RedHat';
- #給mysql添加管理員密碼
- mysql –uroot –p
- #進入mysql數據庫
- mysql> create database nconf;
- #創建nconf數據庫
- mysql> grant all privileges on nconf.* to nconf@localhost identified by 'nconf';
- #創建nconf用戶并賦權
- mysql> flush privileges;
- #刷新特權表
- mysql>quit
解壓nconf到指定目錄下
- tar -zxf nconf-1.2.6-0.tgz -C /var/www/html/
- cd /var/www/html/nconf
- chown -R apache.apache config/ temp/ static_cfg/ output/
- #給相關文件賦予權限
SELINUX安全上下文
- chcon -R -t httpd_sys_content_t /var/www/html/nconf/
- chcon -t httpd_sys_script_exec_t /var/www/html/nconf/bin/nagios
- #修改文件的安全上下文
Ps:如果您的SELinux已經關閉,忽略此步操作
http://您nagios監控端的IP/nconf
在web頁面按照安裝提示一步步安裝



#使用剛才創建的nconf數據庫和nconf數據庫用戶/密碼

#成功連接mysql數據庫

#輸入用于通過nconf生成nagios配置文件所需的nconf路徑和nagios命令路徑

#設置nconf管理員密碼,此時默認登錄用戶為admin

#網頁安裝完成
- rm -rf INSTALL INSTALL.php UPDATE UPDATE.php
- #刪除安裝所需的初始化文件
- ln -s /usr/local/nagios/bin/nagios bin/nagios
- #給nagios命令創建符號鏈接
- chmod +x /var/www/html/nconf/bin/generate_config.pl
- #給與nagios關聯的配置文件賦予執行權限
- chown -R apache.apache bin
- #修改文件的屬組和屬主
重新刷新頁面,輸入admin/您設置的密碼,進入nconf頁面

#nconf的主頁面

#嘗試生成配置文件,以測試是否與nagios成功關聯
到此nconf就安裝完成了!
NConf 使用方法: 查看這兩個文件是否有執行權限
- chmod +x /var/www/html/nconf/bin/generate_config.pl
- #用來將web頁面的配置設置轉化成文nagios配置文件的腳本,其需要apache用戶有可執行權限
- chmod +x /usr/local/nagios/bin/nagios
- #給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自帶配置文件導入腳本
- chmod +x /var/www/html/nconf/ADD-ONS/deploy_local.sh
- #這一步不解釋,你懂的
- /var/www/html/nconf/ADD-ONS/deploy_local.sh
- #手動執行此腳本,將在/usr/local/nagios/etc下生成兩目錄Default_collector與global
3.修改nagios主配置文件
- vim /usr/local/nagios/etc/nagios.cf
- #將其中cfg_file=*******字段全部注釋
- cfg_dir=/usr/local/nagios/etc/Default_collector
- cfg_dir=/usr/local/nagios/etc/global
- #添加將其配置文件指向
- service nagios reload
- #重載nagios配置文件使之生效
4.添加到crontab
- crontab -e
- */1 * * * * /var/www/html/nconf/ADD-ONS/deploy_local.sh
- #每分鐘監測一下是否有更新,有更新就自動覆蓋最新的配置文件
|
四、安裝配置ndoutils
- mysql -u root -p
- mysql>create database nagios;
- mysql> grant all privileges on nagios.* TO nagios@localhost identified by 'nagios';
- #安裝之前先創建nagios數據庫,并將此數據庫所有權限賦予nagios用戶
- mysql>flush privileges;
Ps:如果之前過程中nagios已經創建,此步驟忽略
- tar -xvf ndoutils-1.4b9.tar.gz
- cd ndoutils-1.4b9
- cp /root/ndoutils1.4b9_light.patch ./
- patch -p1 -N < ./ndoutils1.4b9_light.patch
- #給ndoutils打補丁
- ./configure --prefix=/usr/local/nagios/ --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
- #指定安裝目錄為nagios程序位置
- make
向mysql中導入數據
- cd db
- ./installdb -u root -p 您數據庫的密碼 -d nagios
- #將初始數據導入數據庫
檢測數據導入情況
- mysql -u root -p
- mysql>use nagios;
- mysql>show tables;
- mysql>quit

- cd ndoutils-1.4b9
- cp ./src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
- cp ./src/ndo2db-3x /usr/local/nagios/bin/ndo2db
- cp ./config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
- cp ./config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
- #拷貝相關配置文件到對應目錄
- chmod 774 /usr/local/nagios/bin/*
- chown nagios:nagios /usr/local/nagios/bin/*
- chown nagios:nagios /usr/local/nagios/etc/*
- #修改文件的屬主屬組權限
調整配置文件
- vim /usr/local/nagios/etc/ndo2db.cfg
- #修改ndo的主配置文件
- db_name=nagios
- #指定數據庫為nagios
- db_user=nagios
- db_pass=nagios
- #設置以nagios用戶登入mysql的賬號密碼
- vi /usr/local/nagios/etc/nagios.cfg
- #修改nagios主配置文件
- broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
- #在末行添加
收尾工作
- cp ./daemon-init /etc/init.d/ndo2db
- chmod +x /etc/init.d/ndo2db
- chkconfig --add ndo2db
- chkconfig ndo2db on
- #添加啟動腳本
- service nagios restart
- service ndo2db start
- #重啟服務
查看日志文件,以驗證ndoutils配置是否成功
- tail -20 /usr/local/nagios/var/nagios.log
- #或者
- tail -20 /var/log/messages

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