一步步構(gòu)建Nagios監(jiān)控報(bào)警系統(tǒng) Nagios是一款功能強(qiáng)大,性能穩(wěn)定的開(kāi)源的狀態(tài)變化監(jiān)控軟件,其優(yōu)良的特性征服了幾乎所有的運(yùn)維工程師,下面我們就具體了解一下nagios。 Nagios是一款遵循GPLv2的開(kāi)源網(wǎng)絡(luò)監(jiān)控軟件,可用來(lái)監(jiān)控指定的多種系統(tǒng)的主機(jī)、服務(wù),并可在它們的工作狀態(tài)發(fā)生變化時(shí)通知管理員。 Nagios的功能及特性: 1)監(jiān)控網(wǎng)絡(luò)服務(wù)(HTTP、POP3、SMTP、PING、MySQL等) 2)監(jiān)控主機(jī)資源(磁盤空間利用率、內(nèi)存利用率、CPU負(fù)載等) 3)簡(jiǎn)潔的插件設(shè)計(jì)接口,使得用戶可以輕松開(kāi)發(fā)所需的檢測(cè)腳本 4)并行服務(wù)模式 5)輕松描述網(wǎng)絡(luò)結(jié)構(gòu),并且能夠區(qū)辨“宕機(jī)”和“主機(jī)不可達(dá)” 6)通過(guò)郵件或用戶自定義的方式將主機(jī)或服務(wù)的工作狀態(tài)變化情況通知給管理員6)當(dāng)服務(wù)或主機(jī)問(wèn)題產(chǎn)生與解決時(shí)將告警發(fā)送給聯(lián)系人(通過(guò)EMail、短信、用戶定義方式) 可以通過(guò)飛信,等方式實(shí)現(xiàn)時(shí),既可傳遞給管理員,可高效的保證服務(wù)器的維護(hù)。 7)自動(dòng)日志滾動(dòng) 8)支持以冗余方式進(jìn)行主機(jī)監(jiān)控 9)可以通過(guò)web方式直觀的查看當(dāng)前網(wǎng)絡(luò)狀態(tài)、通知和問(wèn)題歷史、日志文件等等,此組件為可選 Nagios的工作原理: Nagios通常由一個(gè)主程序(Nagios)、一個(gè)插件程序(Nagios-plugins)和四個(gè)可選的ADDON(NRPE、NSCA、NSClient++和NDOUtils)組成 Nagios的監(jiān)控工作都是通過(guò)插件實(shí)現(xiàn)的,因此,Nagios和Nagios-plugins是服務(wù)器端工作所必須的組件。而四個(gè)ADDON (1)NRPE:用來(lái)在監(jiān)控的遠(yuǎn)程Linux/Unix主機(jī)上執(zhí)行腳本插件以實(shí)現(xiàn)對(duì)這些主機(jī)資源的監(jiān)控 (2)NSCA:用來(lái)讓 被監(jiān)控的遠(yuǎn)程Linux/Unix主機(jī)主動(dòng)將監(jiān)控信息發(fā)送給Nagios服務(wù)器(這在冗余監(jiān)控模式中特別要用到) (3)NSClient++:用來(lái)監(jiān)控 Windows主機(jī)時(shí)安裝在Windows主機(jī)上的組件 (4)NDOUtils:則用來(lái)將Nagios的配置信息和各event產(chǎn)生的數(shù)據(jù)存入數(shù)據(jù)庫(kù),以實(shí)現(xiàn) 這些數(shù)據(jù)的快速檢索和處理 這四個(gè)ADDON(附件)中,NRPE和NSClient++工作于客戶端,NDOUtils工作于服務(wù)器端,而NSCA則需要同時(shí)安裝在服務(wù)器端和客戶端
Nagios各組件之間的調(diào)用關(guān)系: 
Nagios的安裝: 安裝前的準(zhǔn)備工作 (1)解決安裝Nagios的依賴關(guān)系: Nagios基本組件的運(yùn)行依賴于httpd、gcc和gd??梢酝ㄟ^(guò)以下命令來(lái)檢查nagios所依賴的rpm包是否已經(jīng)完全安裝: yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server (2)配置selinux 如果您的系統(tǒng)開(kāi)啟了selinux服務(wù),則默認(rèn)系統(tǒng)將拒絕nagios web cgi程序的運(yùn)行,所以我們應(yīng)檢查系統(tǒng)是否開(kāi)啟了selinux getenforce 如果上面命令的結(jié)果顯示開(kāi)啟了selinux服務(wù),通過(guò)下面的命令暫時(shí)性的將其關(guān)閉: setenforce 0 如果想在以后完全關(guān)閉selinux,可以通過(guò)編輯/etc/sysconfig/selinux文件,將其中的selinux后面的值“force”修改為“disable”即可。 當(dāng)然,我們可以通過(guò)以下方式將nagios的CGI程序運(yùn)行于SELinux/targeted模式而不用關(guān)閉selinux: chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin chcon -R -t httpd_sys_content_t /usr/local/nagios/share 但是為了實(shí)驗(yàn)?zāi)軜?gòu)成功我們還是關(guān)閉selinux 在當(dāng)前主機(jī)上架設(shè)nagios的過(guò)程: 1、添加nagios運(yùn)行所需要的用戶和組: groupadd nagcmd useradd -m nagios usermod -a -G nagcmd nagios 把apache加入到nagcmd組,以便于在通過(guò)web Interface操作nagios時(shí)能夠具有足夠的權(quán)限: usermod -a -G nagcmd apache 2、編譯安裝nagios: tar zxf nagios-3.2.3tar.gz cd nagios ./configure --with-command-group=nagcmd --enable-event-broker --prefix=/var/www/nagios make all 將所有的編譯環(huán)境都進(jìn)行編譯 make install make install-init 編譯安裝開(kāi)機(jī)啟動(dòng)程序 make install-config 編譯安裝配置文件 make install-commandmode 編譯安裝其命令 make install-webconf 編譯安裝web的配置文件,在httpd的配置文件目錄(conf.d)中創(chuàng)建Nagios的Web程序配置文件,能夠讓我們使用web對(duì)其進(jìn)行管理 由此我們可以看出nagios的安裝非常靈活,當(dāng)我們需要哪個(gè)程序的時(shí)候可以有針對(duì)性的安裝。 創(chuàng)建一個(gè)登錄nagios web程序的用戶,這個(gè)用戶賬號(hào)在以后通過(guò)web登錄nagios認(rèn)證時(shí)所用: htpasswd -c /var/www/nagios/etc/htpasswd.users nagiosadmin 修改配置文件/etc/httpd/conf/httpd.conf,將httpd服務(wù)的默認(rèn)網(wǎng)頁(yè)路徑改為: /var/www 以上過(guò)程配置結(jié)束以后需要重新啟動(dòng)httpd: service httpd restart
3、編譯、安裝nagios-plugins nagios的所有監(jiān)控工作都是通過(guò)插件完成的,因此,在啟動(dòng)nagios之前還需要為其安裝官方提供的插件。 tar zxf nagios-plugins-1.4.13.tar.gz cd nagios-plugins-1.4.13 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql 在編譯完成之后我們要仔細(xì)查看編譯的過(guò)程,看是否有跳過(guò)mysql的警告語(yǔ)句,具體顯示內(nèi)容如下: 
如果有,應(yīng)首先確定mysql的庫(kù)文件位置沒(méi)有錯(cuò),然后給編譯的過(guò)程指定mysql庫(kù)文件的位置,方法如下: cp /usr/lib/mysql到/usr/lib/pkgconfig 指定之后重新執(zhí)行 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql 編譯完成之后我們還要查看編譯過(guò)程,是否再次出現(xiàn)了跳過(guò)mysql的警告語(yǔ)句,如果還是有就拿出我們的殺手锏,方法如下 yum install mysql-devel -y mysql的這個(gè)組件就是解決在編譯時(shí)無(wú)法找到mysql的一些組件或是其他在編譯中產(chǎn)生的怪異問(wèn)題 這步正確完成之后,就進(jìn)行如下的步驟: make make install
4、配置并啟動(dòng)Nagios (1)把nagios添加為系統(tǒng)服務(wù)并將之加入到自動(dòng)啟動(dòng)服務(wù)隊(duì)列: chkconfig --add nagios chkconfig nagios on (2)檢查其主配置文件的語(yǔ)法是否正確: /var/www/nagios/bin/nagios -v /var/www/nagios/etc/nagios.cfg 如果顯示如下,則表示語(yǔ)法正確 
(3)如果上面的語(yǔ)法檢查沒(méi)有問(wèn)題,接下來(lái)就可以正式啟動(dòng)nagios服務(wù)了: service nagios start (4)通過(guò)web界面查看nagios: http://192.168.0.82/nagios 這是主機(jī)的IP,根據(jù)自己主機(jī)的IP進(jìn)行相應(yīng)的修改 如果成功的話將出現(xiàn)如下內(nèi)容,進(jìn)行身份認(rèn)證,輸入我們之前設(shè)定的web認(rèn)證賬號(hào)和密碼:  如果一切順利,成功登錄后將顯示如下部分畫(huà)面 
到此為止,nagios的監(jiān)控端已經(jīng)配置完成,現(xiàn)在我們只能進(jìn)行當(dāng)前主機(jī)的狀態(tài)監(jiān)控,如圖 對(duì)被監(jiān)控端的配置: 被監(jiān)控端的操作系統(tǒng)類型是很重要的,在開(kāi)始的時(shí)候我們介紹了不同操作系統(tǒng)的被監(jiān)控端應(yīng)進(jìn)行相應(yīng)不同的的配置: 如果被監(jiān)控端是windows操作系統(tǒng),我們采取如下配置: 首先關(guān)閉windows上的防火墻 1. 被監(jiān)控端安裝NSClient++-0.3.8-Win32.msi 在安裝過(guò)程中只需要填寫nagios服務(wù)的主機(jī)地址,并查看任務(wù)管理器中的進(jìn)行是否已經(jīng)開(kāi)啟:如圖 
2. 安裝完成后修改配置文件NSC.ini把需要的庫(kù)都打開(kāi), 找到配置文件的方法: 這個(gè)程序的配置文件默認(rèn)為C:\Program Files\NSClient++下的NSC.ini文件 打開(kāi)這個(gè)文件進(jìn)行如下修改: (1)、打開(kāi)需要的庫(kù)文件,將行的最前端帶有“;”的,將這個(gè)符號(hào)刪除即為打開(kāi)。 具體修改結(jié)果如下: [modules] NRPEListener.dll NSClientListener.dll NSCAAgent.dll CheckWMI.dll FileLogger.dll Checksystem.dll CheckEventLog.dll CheckHelpers.dll ;# NSCLIENT++ MODULES ;# A list with DLLs to load at startup. ; You will need to enable some of these for NSClient++ to work. ; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ; * * ; * N O T I C E ! ! ! - Y O U H A V E T O E D I T T H I S * ; * * ; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FileLogger.dll CheckSystem.dll CheckDisk.dll NSClientListener.dll NRPEListener.dll SysTray.dll CheckEventLog.dll CheckHelpers.dll CheckWMI.dll (2)、配置nagios服務(wù)器的IP地址: 修改結(jié)果如下: ;# ALLOWED HOST ADDRESSES
allowed_hosts=192.168.0.82 保存配置文件即可
3. 在監(jiān)控服務(wù)器上修改nagios配置文件nagios.cfg 為了配置的方便進(jìn)行我們對(duì)nagios的主配置文件做一個(gè)連接 ln -vs /var/www/nagios/etc/nagios.cfg /etc/nagios.cfg 對(duì)配置文件/etc/nagios.cfg進(jìn)行如下修改 去掉cfg_file=/var/www/nagios/etc/objects/windows.cfg 的注釋 定義windows.cfg 修改/var/www/nagios/etc/objects/windows.cfg文件,修改結(jié)果如下 define host{ use windows-server ; Inherit default values from a template host_name winserver ; The name we're giving to this host alias My Windows Server ; A longer name associated with the host address 192.168.0.254 ; windows主機(jī)的IP,我的為192.168.0.254 } 保存退出即可: 重新啟動(dòng)nagios服務(wù) service nagios restart 查看我們的nagios是否監(jiān)控到了windows主機(jī): 如圖顯示則表示監(jiān)控成功: 
到此,nagios對(duì)windows監(jiān)控已經(jīng)成功,關(guān)于對(duì)linux的監(jiān)控以及被監(jiān)控的主機(jī)狀態(tài)發(fā)生改變nagios為我們進(jìn)行報(bào)警的配置將在下篇文章中進(jìn)行詳細(xì)的介紹。
|