Nagios 3.0 安裝配置手冊(cè)默認(rèn)分類 2008-11-08 11:08:30 閱讀114 評(píng)論0 字號(hào):大中小 訂閱 一、前言: Nagios是什么?它有什么用? cacti采用的是snmp,不需要安裝agent,一般用來監(jiān)控網(wǎng)絡(luò)流量。 nagios可以用snmp,也可以用nrpe,nsclient等來獲取信息,更多的是采用后者,使用其強(qiáng)大的插件模塊。一般用來監(jiān)控進(jìn)程、服務(wù)。
二、實(shí)驗(yàn)環(huán)境:
三、Nagios定義的監(jiān)控狀態(tài) nagios定義了4中監(jiān)控狀態(tài),代表不同的嚴(yán)重級(jí)別,除了OK代表正常不用關(guān)心外,其余3種都要引起重視.
四、使用到的軟件 nagios-3.0.2.tar.gz (Nagios 主程序) nagios-plugins-1.4.13.tar.gz (Nagios 插件) nrpe-2.8.1.tar.gz (Nix 客戶端通信程序) NSClient++-Win32-0.3.5 (Win 客戶端通信程序) apache (httpd-2.2.10.tar) (Web Service)
五、nagios-server安裝 useradd nagios mkdir /usr/local/nagios chown nagios.nagios /usr/local/nagios
tar zxvf nagios-3.0.2.tar.gz cd nagios-3.0.2 ./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include/ make all make install (安裝主程序,CGI和HTML文件) make install-init (在 /etc/rc.d/init.d 安裝啟動(dòng)腳本) make install-commandmode (為外部命令文件配置目錄權(quán)限) make install-config (安裝示例配置文件) # make install-webconf (安裝Nagios接口配置文件模板,此模板需要手動(dòng)添加進(jìn)httpd.conf才可以生效。 默認(rèn)安裝位置:/etc/httpd/conf.d 安裝之前先:mkdir /etc/httpd/conf.d -p) 然后是驗(yàn)證程序是否被正確安裝。切換目錄到安裝路徑(這里是/usr/local/nagios),看是否存在 etc、bin、 sbin、 share、 var這五個(gè)目錄,如果存在則可以表明程序被正確的安裝到系統(tǒng)了。下表是五個(gè)目錄功能的簡(jiǎn)要說明:
六、安裝nagios插件 tar zxvf nagios-plugins-1.4.11.tar.gz cd nagios-plugins-1.4.11 ./configure--prefix=/usr/local/nagios --enable-redhat-pthread-workaround make all make install (插件是計(jì)算機(jī)軟件中的一種特殊程序,它不能單獨(dú)執(zhí)行,而必須依賴于某個(gè)軟件.在其他軟件的環(huán)境下,方可以調(diào)用.) 安裝完成后,查看下libexec下面是否有插件: ls /usr/local/nagios/libexec/
安裝Nrpe服務(wù)(服務(wù)端非必須,推薦安裝?。?/span>: tar zxvf nrpe-2.8.1.tar.gz cd nrpe-2.8.1 ./configure –prefix=/usr/local/nagios [./configure --enable-ssl --enable-command-args] make all (編譯) make install-plugin (安裝插件) make install-daemon (安裝 nrpe daemon) make install-daemon-config (安裝配置文件) make install-xinetd (安裝xinetd 腳本文件) 添加 nrpe 服務(wù)到xinetd: vi /etc/services nrpe 5666/tcp # nrpe
重新啟動(dòng)Xinetd服務(wù): service xinetd restart
測(cè)試Nrpe是否能正常工作: /usr/local/nagios/libexec/check_nrpe -H localhost
守護(hù)進(jìn)程: 首先,xinetd 是一大堆服務(wù)的管理程序(/etc/services),比如:telnet,ftp等。如果每個(gè)服務(wù)一個(gè)守護(hù)進(jìn)程,太占用資源。 所以就用xinetd統(tǒng)一監(jiān)聽端口,有人用了再把服務(wù)啟起來。在linux中一些不長期使用的服務(wù)沒有被作為單獨(dú)的守護(hù)進(jìn)程在開機(jī)時(shí)啟用,linux把這些服務(wù)監(jiān)聽端口全部由一個(gè)獨(dú)立的進(jìn)程xinetd集中監(jiān)聽,當(dāng)收到相應(yīng)的客戶端請(qǐng)求之后,xinetd進(jìn)程就臨時(shí)啟動(dòng)相應(yīng)服務(wù)并把相應(yīng)端口移交給相應(yīng)服務(wù),客戶端斷開之后,相應(yīng)的服務(wù)進(jìn)程結(jié)束,xinetd繼續(xù)監(jiān)聽。把一個(gè)服務(wù)配置成xinetd監(jiān)聽的服務(wù)后可以在 setup 中設(shè)置是否開機(jī)啟動(dòng),如nrpe!
所有結(jié)尾帶d的程序都是daemon程序,也就是守護(hù)進(jìn)程的程序,同樣,xinetd也是一個(gè)daemon程序。 守護(hù)程序分為2種處理模式: 第一個(gè)是stand alone狀態(tài)的,表示該程序始終監(jiān)聽,一直處于運(yùn)行狀態(tài),例如httpd 第二個(gè)是super daemon,它始終處于sleep狀態(tài),直到有人喚醒它,xinetd就是一個(gè)super daemon,但它的使命是將一個(gè)請(qǐng)求轉(zhuǎn)給其他服務(wù),是服務(wù)的管理者。
七、安裝Apache服務(wù) (略)
八、修改Apache配置 修改apache的配置文件,增加nagios的目錄,并且訪問此目錄需要進(jìn)行身份驗(yàn)證。 (注:如果不要設(shè)置身份驗(yàn)證,在httpd.conf 最后增加的內(nèi)容注釋掉“紅色字體”部分)
vi /usr/local/apache/conf/httpd.conf
增加驗(yàn)證用戶: 也就是通過web訪問nagios的時(shí)候,必須要使用用這個(gè)用戶才可以登陸,有時(shí)為了長時(shí)間監(jiān)控刷新,避免輸入密碼麻煩就不加密碼.注釋紅的行可以達(dá)到要求. 用戶:zhaohang 密碼為:123456 /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.zhaohang zhaohang # /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.admin admin
查看認(rèn)證文件的內(nèi)容: less /usr/local/nagios/etc/htpasswd.zhaohang test:OmWGEsBnoGpIc 前半部分是用戶名test,后面是加密后的密碼。 到這里為止nagios的安裝也就基本完成了,你可以通過web來訪問了。
九、Nagios配置 修改報(bào)警信息發(fā)送的郵箱地址: vi /usr/local/nagios/etc/objects/contacts.cfg
Nagios有一個(gè)很好的檢測(cè)程序,可以用來檢測(cè)你的Nagios配置是否正確: /usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg Total Warnings: 0 Total Errors: 0 則說明你的 Nagios 配置沒有問題,可以正常啟動(dòng)!
可以用以下方法啟動(dòng)Nagios: /etc/rc.d/init.d/nagios start/stop/status service nagios start/stop/status /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
十、監(jiān)控Linux服務(wù)器
客戶端配置: 建用戶: useradd nagios (可以在 /etc/password 里修改此帳戶的shell為 /sbin/nologin) passwd nagios
安裝插件: tar zxvf nagios-plugins-1.4.11.tar.gz cd nagios-plugins-1.4.11 ./configure--prefix=/usr/local/nagios --enable-redhat-pthread-workaround make all make install
修改權(quán)限: chown nagios:nagios /usr/local/nagios –R
安裝Nrpe服務(wù): tar zxvf nrpe-2.8.1.tar.gz cd nrpe-2.8.1 ./configure –prefix=/usr/local/nagios [./configure --enable-ssl --enable-command-args] make all (編譯) make install-plugin (安裝插件) make install-daemon (安裝 nrpe daemon) make install-daemon-config (安裝配置文件) make install-xinetd (安裝xinetd 腳本文件)
添加服務(wù)器IP: vi /etc/xinetd.d/nrpe only_from = 127.0.0.1 192.168.0.108
添加 nrpe 服務(wù): vi /etc/services Nrpe 5666/tcp # nrpe
重新啟動(dòng)Xinetd服務(wù): service xinetd restart
查看Nrpe服務(wù)是否開啟: netstat -ant|grep 5666
測(cè)試Nrpe是否能正常工作: /usr/local/nagios/libexec/check_nrpe -H localhost NRPE v2.8.1 (這表示在本地用check_nrpe連接nrpe daemon是正常的)
服務(wù)端配置: A 拷貝 localhost.cfg 模板文件,對(duì)192.168.112.101進(jìn)行監(jiān)控: cp /usr/local/nagios/etc/localhost.cfg /usr/local/nagios/etc/192.168.112.101.cfg vi 192.168.112.101.cfg 修改配置(主機(jī)名、IP、別名)
B 將192.168.112.101.cfg 加入nagios 主配置文件: vi /usr/local/nagios/etc/nagios.cfg cfg_file=/usr/local/nagios/etc/objects/192.168.112.101.cfg
C 驗(yàn)證配置文件是否正確,并重啟: /usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/object/nagios.cfg Service nagios restart (重啟nagios 使配置生效)
D 查看naigios監(jiān)控頁面,發(fā)現(xiàn)主機(jī)已經(jīng)被正常添加。
======================================================================================================== 服務(wù)端增加監(jiān)控服務(wù)(非必須): 在Command.cfg文件中增加check_nrpe的功能: vi /usr/local/nagios/etc/commands.cfg define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } 注意:-c后面帶的$ARG1$參數(shù)是傳給nrpe daemon執(zhí)行的檢測(cè)命令,在services.cfg中使用check_nrpe的時(shí)候要用!帶上這個(gè)參數(shù)。 額外知識(shí)點(diǎn): vi /usr/local/nagios/etc/nrpe.cfg 找到以下這段內(nèi)容: # The following examples use hardcoded command arguments... command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
[] 中是命令名,也就是check_nrpe 的-c參數(shù)可以接的內(nèi)容,=后面是實(shí)際執(zhí)行的插件程序commands.cfg中定義命令的形式十分相似,只不過是寫在了一行. 也就是說check_users就是等號(hào)后面/usr/local/nagios/libexec/check_users -w 5 -c 10的簡(jiǎn)稱.
我們可以很容易知道上面這5行定義的命令分別是檢測(cè)登陸用戶數(shù),cpu負(fù)載,hda1的容量,僵尸進(jìn)程,總進(jìn)程數(shù).用法: ./check_load --help 由于-c后面只能接nrpe.cfg中定義的命令,也就是說現(xiàn)在我們只能用上面定義的這五條命令。 ========================================================================================================
十一、監(jiān)控Windows服務(wù)器
在nagios的libexec下有check_nt這個(gè)插件,它就是用來檢查windows機(jī)器的服務(wù)的,其功能類似于第十章講的check_nrpe.不過還需要搭配另外一個(gè)軟件NSClient,它的功能類似于NRPE。 NSClient與Nrpe最大的區(qū)別就是: --被監(jiān)控機(jī)上安裝有nrpe,并且還有插件,最終的監(jiān)控是由這些插件來進(jìn)行的.當(dāng)監(jiān)控主機(jī)將監(jiān)控請(qǐng)求發(fā)給nrpe后,nrpe調(diào)用插件來完成監(jiān)控. --NSClient則不同,被監(jiān)控機(jī)上只安裝NSClient,沒有任何的插件.當(dāng)監(jiān)控主機(jī)將監(jiān)控請(qǐng)求發(fā)給NSClient后,NSClient直接完成監(jiān)控,所有的監(jiān)控是由NSClient完成的. 這也說明了NSClient的一個(gè)很大的問題,不靈活,沒有可擴(kuò)展性.它只能完成自己本身包含的監(jiān)控操作,不能由一些插件來擴(kuò)展.好在NSClient已經(jīng)做的不錯(cuò)了,基本上可以完全滿足我們的監(jiān)控需要。 客戶端: 在官方站點(diǎn)http://www.下載 NSClient 最新版本:(NSClient++-Win32-0.3.5) cd nsclient++ nsclient++ /install services.msc à nsclientpp à 登錄 à 勾選允許桌面與服務(wù)器交互 à 應(yīng)用 à 確定 nsclient++ /start nsclient++ /stop 編輯 nsclient++/nsc.ini:
nsclient++ /start netstat –an 查看端口 12489 是否正常監(jiān)聽!
check_command check_nt!UPTIME 監(jiān)控windows服務(wù)器運(yùn)行的時(shí)間 check_command check_nt!CPULOAD!-l 5,80,90 監(jiān)控Windows服務(wù)器的CPU負(fù)載 check_command check_nt!MEMUSE!-w 80 -c 90 監(jiān)控Windows服務(wù)器的內(nèi)存 check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90 監(jiān)控Windows服務(wù)器C空間 check_command check_nt!SERVICESTATE!-d SHOWALL -l telnet 監(jiān)控telnet服務(wù)的狀態(tài) check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe 監(jiān)控Explorer進(jìn)程狀態(tài)
服務(wù)端: A 拷貝 windows.cfg 模板文件,對(duì)192.168.112.103進(jìn)行監(jiān)控: cp /usr/local/nagios/etc/windows.cfg /usr/local/nagios/etc/192.168.112.103.cfg vi 192.168.112.103.cfg 修改配置(主機(jī)名、IP、別名)
B 將192.168.112.103.cfg 加入nagios 主配置文件: vi /usr/local/nagios/etc/nagios.cfg cfg_file=/usr/local/nagios/etc/objects/192.168.112.103.cfg
C 驗(yàn)證配置文件是否正確,并重啟: /usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/object/nagios.cfg (檢查配置文件是否正確) Service nagios restart (重啟nagios 使配置生效)
D 查看naigios監(jiān)控頁面,發(fā)現(xiàn)主機(jī)已經(jīng)被正常添加。
Nagios 問題處理: 1、監(jiān)控狀態(tài)不正常怎么辦? 答、建議從本機(jī)手動(dòng)check看看結(jié)果,檢查防火墻等防止端口被阻止訪問,造成監(jiān)控失誤。
2、nrpe在 ./configure時(shí)提示: checking for SSL... configure: error: Cannot find ssl libraries 答、把openssl-devel裝上就可以了.
3、nagios web界面提示: It appears as though you do not have permission to view information for any of the services you requested... 答、打開cgi.cfg配置文件, use_authentication=1 為了保障系統(tǒng)的安全性,nagios設(shè)置了這個(gè)參數(shù),默認(rèn)為1,改為0即可。
4、如果NSClient設(shè)置了連接需要密碼或者改變了端口,哪么服務(wù)器應(yīng)該怎么連接? 答、$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$ -p 指定 port -s 指定 password
5、Service Commands 中Enable notifications for this service時(shí)報(bào)錯(cuò): Sorry Dave, I can't let you do that... It seems that you have chosen to not use the authentication functionality of the CGIs. 答、修改cgi.cfg文件 修改use_authentication=1 (默認(rèn)) ,如果沒有添加,重啟nagios服務(wù)。
6、監(jiān)控mysql的時(shí)候提示錯(cuò)誤:is not allowed to connect to this MySQL server Server (nagios服務(wù)端192.168.0.132) #/usr/local/nagios/libexec/check_mysql -H 192.168.0.207 -u root -p xukixu 此時(shí)可能會(huì)出現(xiàn)錯(cuò)誤:Host '192.168.0.132' is not allowed to connect to this MySQL server 答、在客戶端client(192.168.0.207)做個(gè)mysql授權(quán)用戶訪問即可: mysql>grant all privileges on *.* to root@192.168.0.132 identified by '123456'; mysql>flush privileges;
7、如何添加一臺(tái)監(jiān)控 38101 端口的Linux服務(wù)器? 答、首先需要在 command.cfg 里邊定義 check_tcp (默認(rèn)已經(jīng)定義) 然后在拷貝 localhost 配置文件,修改主機(jī)名,ip,別名等信息,添加服務(wù)項(xiàng),check_tcp!38101 然后在 nagios.cfg 主配置文檔里添加該主機(jī)配置文件路徑; 檢查配置文件正確性,并重啟 nagios 使配置生效。
8、怎么樣比較清晰的管理盡千臺(tái)主機(jī)? 答、建議每個(gè)配置文件單獨(dú)管理一臺(tái)主機(jī),然后將所有主機(jī)的配置文件單獨(dú)放在通一個(gè)目錄底下,做好定期備份,這樣,可以方便修改不同主機(jī)上的不同服務(wù),而且可以很方便的臨時(shí)增加和刪除一個(gè)主機(jī)節(jié)點(diǎn)。
9、如何添加一個(gè)管理插件的配置? 答、在 command.cfg 配置文件里可以添加插件,要添加的插件必須存在于主機(jī)的 libexec/* 目錄下,否則,在檢測(cè)配置文件的時(shí)候會(huì)報(bào)錯(cuò)!
10、我裝了nagios-plugin沒有check_mysql check_snmp 等插件都沒有,為什么? 答、check_mysql在nagios-plugin的高版本中(nagios-plugins-1.4.13.tar)已經(jīng)帶了check_mysql插件,如果需要check_snmp,請(qǐng)安裝 net-snmp-devel 之后再重新編譯nagios來實(shí)現(xiàn)!
11、能舉例說明一下配置文件參數(shù)的意義么? 監(jiān)控windows服務(wù)器運(yùn)行的時(shí)間: check_command check_nt!UPTIME
監(jiān)控Windows服務(wù)器的CPU負(fù)載,如果5分鐘超過80%則是warning,如果5分鐘超過90%則是critical check_command check_nt!CPULOAD!-l 5,80,90
監(jiān)控Windows服務(wù)器的內(nèi)存使用情況,如果超過了80%則是warning,如果超過90%則是critical check_command check_nt!MEMUSE!-w 80 -c 90
監(jiān)控Windows服務(wù)器C:\盤的使用情況,如果超過80%已經(jīng)使用則是warning,超過90%則是critical, -l 后面接的參數(shù)用來指定盤符 check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
監(jiān)控Windows服務(wù)器D:\盤的使用情況,如果超過80%已經(jīng)使用則是warning,超過90%則是critical check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
監(jiān)控Windows服務(wù)器的W3SVC服務(wù)的狀態(tài),如果服務(wù)停止了,則是critical check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
監(jiān)控Windows服務(wù)器的Explorer.exe進(jìn)程的狀態(tài),如果進(jìn)程停止了,則是critical check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
command.cfg 里 command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$ 中,-p 后$ARG1$ $ARG2$ 表示在 host.cfg 配置文件中 check_tcp 可以跟兩個(gè)端口參數(shù),比如:check_tcp!20!21
Linux 監(jiān)控示意圖: Windows 監(jiān)控示意圖: |
|
|