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 表示郵件的內容
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管理的大門.門內的風景還是要自己去發覺.畢竟各人的感覺不同啊. 附件是相關的設定檔案。