Nagios在對主機的監控方面的成就大家都是有目共睹的.但也正是因為它的強大,所以讓很多人學起來頭大,更有人戲稱它為"難夠死".其實讓它執行起來一點都不麻煩,只要理清了頭序,一切都簡單了.不信,我們一起來看看.
俗話說"巧婦難為無米之炊",所以開始設定前需要下載相關的軟體.當然如果有必要的話相應的文件也是不可少的.軟體的下載位置為[url]http://www.nagios.org/download/[/url];這裡還用到了一個傳送Email的小程式SendEmail([url]http://caspian.dotconf.net/menu/Software/SendEmail/[/url]).也許有人會說為什麼不用系統的sendmail呢.這個是為了保持更好的獨立性而且使用也簡單;如果想要直觀的顯示資料,pnp這個元件也是少不了的([url]http://www.pnp4nagios.org/pnp/start[/url]);而對於windows的處理就要用到NSClient++([url]http://trac.nakednuns.org/nscp/[/url])了.
網上關於nagios的安裝和設定文章比較多,一些文章都非常優秀,都可以做一些參考:[url]http://yahoon.blog.51cto.com/13184/41300[/url];[url]http://gzmaster.blog.51cto.com/299556/79944[/url];[url]http://blog.chinaunix.net/u/28387/showart_371655.html[/url].
如果上面這兩幅效果圖讓你心動的話,那麼一起加入吧.
在開始之有有些基本的東西要搞清楚.在nagios管理中,所有的設定都放在相應的檔案中.其中在配置資料夾中第一層的幾個檔案是非常重要的,少了它服務可以執行不起來.這些檔案是nagios.cfg,cgi.cfg,resource.cfg.其中nagios.cfg是主要的設定檔案,類似於指揮中心,所有的排程從這裡開始,它來指揮nagios去相應的檔案中查收其所需的資料;cgi.cfg則主要是用於處理web請求;resource.cfg則是主要用來定義會重複用到的變數,這裡所定義的都是全域性變數;而在objects資料夾下還有一個重要的檔案command.cfg,所有的指令都從這裡執行.而指定所用到的變數則是在resource.cfg中定義.
給個例子你可能就容易理解了.假設公安局nagios.cfg要打掉一個近30個人的國際販毒集團,並實時通報情況.那麼通報情況由cgi.cfg處理;而resource.cfg中存放了各個毒販的資料;支隊代號host.cfg和支隊人員service.cfg通過檢視resource.cfg中各毒販的資料採取不同的行動command.cfg來完成任務並按事情的輕重timeperidos.cfg上報contact.cfg,然後郵cgi.cfg通報出來.大約這樣理解就差不多了.
安裝過程如下:
adduser nagios mkdir -pv /usr/local/nagios chown nagios.nagios /usr/local/nagios grep "^User" /etc/httpd/conf/httpd.conf groupadd nagcmd usermod -G nagios daemon usermod -G nagcmd daemon usermod -G nagcmd nagios tar zxvf nagios-3.0.2.tar.gz cd nagios-3.0.2 ./configure --prefix=/usr/local/nagios --sysconfdir=/etc/nagios --with-httpd-conf=/etc/httpd.conf --with-gd-lib=/usr/local/gd/lib --with-gd-inc=/usr/local/gd/include/ --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagcmd make all make install make install-config make install-init make install-webconf
這裡的假定情況是你已安裝了apache及GD庫這些相關的元件,否則請先安裝.安裝方法可以參考:([url]http://waringid.blog.51cto.com/65148/58144[/url]).修改配置檔案cgi.cfg,它的作用是控制相關cgi指令碼。先確保use_authentication=1。曾看過不少的文章,都是建議把use_authentication的值設定成”0″來取消驗證,這是一個十分糟糕的想法。接下來修改default_user_name=nagios,再後面的修改在下表列出:
authorized_for_system_information=nagiosadmin,nagios authorized_for_configuration_information=nagiosadmin,nagios authorized_for_system_commands=nagios //多個使用者之間用逗號隔開 authorized_for_all_services=nagiosadmin,nagios authorized_for_all_hosts=nagiosadmin,nagios authorized_for_all_service_commands=nagiosadmin,nagios authorized_for_all_host_commands=nagiosadmin,nagios
下面指令的設定則是針對apache伺服器的.用來生成相應的認證檔案.
/usr/local/httpd/bin/htpasswd -c /etc/nagios/htpasswd.users nagios cp -R /tmp/nagios-3.0.2/sample-config/ /etc/nagios/sample chmod g+s /usr/local/nagios/var/rw
這裡需要對http.conf做設定
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin"> # SSLRequireSSL Options ExecCGI AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users Require valid-user </Directory> Alias /nagios "/usr/local/nagios/share" <Directory "/usr/local/nagios/share"> # SSLRequireSSL Options None AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users Require valid-user </Directory>
安裝相應的元件:
編輯/etc/services檔案,增加NRPE服務,增加nrpe 5666/tcp # nrpe.
tar zxvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure make make install make all make install-plugin tar zxvf nagios-plugins-1.4.12.tar.gz cd nagios-plugins-1.4.12 ./configure make make install
圖形顯示元件的安裝:
圖形顯示元件需要rrdtool及perl的支援,所以必須先安裝它們.有關安裝rrdtool可以參考[url]http://waringid.blog.51cto.com/65148/58580[/url].
tar zxvf pnp-0.4.10.tar.gz ./configure --with-nagios-user=nagios --with-nagios-group-nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata make make all make install make install-config make install-init
這些安裝好後,需要進行相關的設定,這裡就不詳細介紹各引數,只撿重要的說;可以參考/etc/nagios/objects/localhost.cfg檔案.host.cfg用來定義主機名及對應的IP;主機組則是將定義的主機名加入這個組.類似於下面:
define host{ #定義主機名 use remote-server host_name re.ftp alias ftp server address 192.168.42.7 } define host{ use remote-server host_name re.edc #用下面的語句可顯示太陽圖示 action_url /nagios/cgi-bin/extinfo.cgi?host=$HOSTNAME$ process_perf_data 1 alias dc address 192.168.42.6 } define hostgroup{ #定義主機組 hostgroup_name windows-servers alias Windows Servers members re.win.client } define hostgroup{ hostgroup_name remote-server alias remote-server members re.edc,re.dc,re.exchange,re.sus,re.back,re.file, re.phone,re.hr,re.uf,re.oa,re.qy,re.prod,re.ftp }
服務則是用來處理相應的監控請求,和主機檔案一樣,有相應的服務和服務組.如下所示:
define service{ use remote-service host_name re.edc,re.dc,re.exchange,re.sus,re.back,re.file,re.phone, re.hr,re.uf,re.oa,re.qy,re.prod,re.ftp service_description PING #顯示服務的太陽符號 action_url /nagios/cgi-bin/extinfo.cgi?host=$HOSTNAME$&srv=$SERVICEDESC$ process_perf_data 1 #產生圖形資料 check_command check_ping!100.0,20%!500.0,60% notifications_enabled 1 #提示聯絡人 } define service{ use generic-service host_name re.win.client service_description Explorer check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe } define servicegroup{ servicegroup_name remote-service alias Check Remote Servers members re.ftp,FTP } define servicegroup{ servicegroup_name windows-service alias Check Windows servers members re.win.client,Explorer }
commands.cfg是處理監控動作的命令檔案,這裡需要對傳送郵件和產生圖形的方式重新定義下,因為需要用到新的命令來執行.
define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$ " | /usr/local/nagios/bin/sendEmail -f [email]root@test.com[/email] -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -xu root -xp password } # `notify-service-by-email` command definition define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$" | /usr/local/nagios/bin/sendEmail -f [email]root@test.com[/email] -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu root -xp password }
安裝方法如下,使用方法為:
-f 表示傳送者的郵箱
-t 表示接收者的郵箱
-s 表示SMTP伺服器的域名或者ip
-u 表示郵件的主題
-xu 表示SMTP驗證的使用者名稱
-xp 表示SMTP驗證的密碼(注意,這個密碼貌似有限制,例如我用d!5neyland就不能被正確識別)
-m 表示郵件的內容
-t 表示接收者的郵箱
-s 表示SMTP伺服器的域名或者ip
-u 表示郵件的主題
-xu 表示SMTP驗證的使用者名稱
-xp 表示SMTP驗證的密碼(注意,這個密碼貌似有限制,例如我用d!5neyland就不能被正確識別)
-m 表示郵件的內容
tar -zxvf sendEmail-v1.55.tar.gz cd sendEmail-v1.55 cp sendEmail /usr/local/nagios/bin
要產生圖形資料還需在commands.cfg中重定義命令:
define command{ command_name process-service-perfdata command_line /usr/local/nagios/libexec/process_perfdata.pl }
產生圖形資料還要設定nagios.cfg檔案:
process_performance_data=1 service_perfdata_command=process-service-perfdata #預設此句被註釋掉了
設定好這些後可以輸入service nagios start來啟動服務.
監控windows相關應用只需安裝NSClient++就行了,編輯C:NSClient++下的NSC.ini檔案,將 [modules]部分的所有模組前面的註釋都去掉,除了CheckWMI.dll and RemoteConfiguration.dll這兩個在[Settings]部分設定`password`選項來設定密碼,作用是在nagios連線過來時要求提供密碼.這一步是可選的,我這裡方便起見跳過它,不要密碼.將[Settings]部分`allowed_hosts`選項的註釋去掉,並且加上執行nagios的監控主機的IP.我改為如下這樣allowed_hosts=127.0.0.1/32,192.168.44.77,192.168.44.200 以逗號相隔.這個地方是支援子網的,如果寫成192.168.0.0/24則表示該子網內的所有機器都可以訪問.如果這個地方是空白則表示所有的主機都可以連線上來.注意是[Settings]部分的,因為[NSClient]部分也有這個選項.必須保證[NSClient]的`port`選項並沒有被註釋,並且它的值是`12489`,這是NSClient的預設監聽埠,我這裡把它改為20000。
nagios的管理遠遠還沒有完,而且很多方面的設定這裡都沒有詳細的解說.所以這裡的記錄只是領進linux管理的大門.門內的風景還是要自己去發覺.畢竟各人的感覺不同啊. 附件是相關的設定檔案。