|
一步步構(gòu)建Nagios監(jiān)控報(bào)警系統(tǒng) Nagios是一款功能強(qiáng)大,性能穩(wěn)定的開源的狀態(tài)變化監(jiān)控軟件,其優(yōu)良的特性征服了幾乎所有的運(yùn)維工程師,下面我們就具體了解一下nagios。 Nagios是一款遵循GPLv2的開源網(wǎng)絡(luò)監(jiān)控軟件,可用來監(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)簡潔的插件設(shè)計(jì)接口,使得用戶可以輕松開發(fā)所需的檢測腳本 4)并行服務(wù)模式 5)輕松描述網(wǎng)絡(luò)結(jié)構(gòu),并且能夠區(qū)辨“宕機(jī)”和“主機(jī)不可達(dá)” 6)通過郵件或用戶自定義的方式將主機(jī)或服務(wù)的工作狀態(tài)變化情況通知給管理員6)當(dāng)服務(wù)或主機(jī)問題產(chǎn)生與解決時(shí)將告警發(fā)送給聯(lián)系人(通過EMail、短信、用戶定義方式) 可以通過飛信,等方式實(shí)現(xiàn)時(shí),既可傳遞給管理員,可高效的保證服務(wù)器的維護(hù)。 7)自動(dòng)日志滾動(dòng) 8)支持以冗余方式進(jìn)行主機(jī)監(jiān)控 9)可以通過web方式直觀的查看當(dāng)前網(wǎng)絡(luò)狀態(tài)、通知和問題歷史、日志文件等等,此組件為可選 Nagios的工作原理: Nagios通常由一個(gè)主程序(Nagios)、一個(gè)插件程序(Nagios-plugins)和四個(gè)可選的ADDON(NRPE、NSCA、NSClient++和NDOUtils)組成 Nagios的監(jiān)控工作都是通過插件實(shí)現(xiàn)的,因此,Nagios和Nagios-plugins是服務(wù)器端工作所必須的組件。而四個(gè)ADDON (1)NRPE:用來在監(jiān)控的遠(yuǎn)程Linux/Unix主機(jī)上執(zhí)行腳本插件以實(shí)現(xiàn)對這些主機(jī)資源的監(jiān)控 (2)NSCA:用來讓 被監(jiān)控的遠(yuǎn)程Linux/Unix主機(jī)主動(dòng)將監(jiān)控信息發(fā)送給Nagios服務(wù)器(這在冗余監(jiān)控模式中特別要用到) (3)NSClient++:用來監(jiān)控 Windows主機(jī)時(shí)安裝在Windows主機(jī)上的組件 (4)NDOUtils:則用來將Nagios的配置信息和各event產(chǎn)生的數(shù)據(jù)存入數(shù)據(jù)庫,以實(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。可以通過以下命令來檢查nagios所依賴的rpm包是否已經(jīng)完全安裝: yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server (2)配置selinux 如果您的系統(tǒng)開啟了selinux服務(wù),則默認(rèn)系統(tǒng)將拒絕nagios web cgi程序的運(yùn)行,所以我們應(yīng)檢查系統(tǒng)是否開啟了selinux getenforce 如果上面命令的結(jié)果顯示開啟了selinux服務(wù),通過下面的命令暫時(shí)性的將其關(guān)閉: setenforce 0 如果想在以后完全關(guān)閉selinux,可以通過編輯/etc/sysconfig/selinux文件,將其中的selinux后面的值“force”修改為“disable”即可。 當(dāng)然,我們可以通過以下方式將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的過程: 1、添加nagios運(yùn)行所需要的用戶和組: groupadd nagcmd useradd -m nagios usermod -a -G nagcmd nagios 把apache加入到nagcmd組,以便于在通過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 編譯安裝開機(jī)啟動(dòng)程序 make install-config 編譯安裝配置文件 make install-commandmode 編譯安裝其命令 make install-webconf 編譯安裝web的配置文件,在httpd的配置文件目錄(conf.d)中創(chuàng)建Nagios的Web程序配置文件,能夠讓我們使用web對其進(jìn)行管理 由此我們可以看出nagios的安裝非常靈活,當(dāng)我們需要哪個(gè)程序的時(shí)候可以有針對性的安裝。 創(chuàng)建一個(gè)登錄nagios web程序的用戶,這個(gè)用戶賬號(hào)在以后通過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)頁路徑改為: /var/www 以上過程配置結(jié)束以后需要重新啟動(dòng)httpd: service httpd restart
3、編譯、安裝nagios-plugins nagios的所有監(jiān)控工作都是通過插件完成的,因此,在啟動(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ì)查看編譯的過程,看是否有跳過mysql的警告語句,具體顯示內(nèi)容如下: 
如果有,應(yīng)首先確定mysql的庫文件位置沒有錯(cuò),然后給編譯的過程指定mysql庫文件的位置,方法如下: cp /usr/lib/mysql到/usr/lib/pkgconfig 指定之后重新執(zhí)行 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql 編譯完成之后我們還要查看編譯過程,是否再次出現(xiàn)了跳過mysql的警告語句,如果還是有就拿出我們的殺手锏,方法如下 yum install mysql-devel -y mysql的這個(gè)組件就是解決在編譯時(shí)無法找到mysql的一些組件或是其他在編譯中產(chǎ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)檢查其主配置文件的語法是否正確: /var/www/nagios/bin/nagios -v /var/www/nagios/etc/nagios.cfg 如果顯示如下,則表示語法正確 
(3)如果上面的語法檢查沒有問題,接下來就可以正式啟動(dòng)nagios服務(wù)了: service nagios start (4)通過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)和密碼:  如果一切順利,成功登錄后將顯示如下部分畫面 
到此為止,nagios的監(jiān)控端已經(jīng)配置完成,現(xiàn)在我們只能進(jìn)行當(dāng)前主機(jī)的狀態(tài)監(jiān)控,如圖 對被監(jiān)控端的配置: 被監(jiān)控端的操作系統(tǒng)類型是很重要的,在開始的時(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 在安裝過程中只需要填寫nagios服務(wù)的主機(jī)地址,并查看任務(wù)管理器中的進(jìn)行是否已經(jīng)開啟:如圖 
2. 安裝完成后修改配置文件NSC.ini把需要的庫都打開, 找到配置文件的方法: 這個(gè)程序的配置文件默認(rèn)為C:\Program Files\NSClient++下的NSC.ini文件 打開這個(gè)文件進(jìn)行如下修改: (1)、打開需要的庫文件,將行的最前端帶有“;”的,將這個(gè)符號(hào)刪除即為打開。 具體修改結(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)行我們對nagios的主配置文件做一個(gè)連接 ln -vs /var/www/nagios/etc/nagios.cfg /etc/nagios.cfg 對配置文件/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對windows監(jiān)控已經(jīng)成功,關(guān)于對linux的監(jiān)控以及被監(jiān)控的主機(jī)狀態(tài)發(fā)生改變nagios為我們進(jìn)行報(bào)警的配置將在下篇文章中進(jìn)行詳細(xì)的介紹。
|