nagios監控系統配置過程

火星人 @ 2014-03-04 , reply:0


nagios監控系統配置過程

這篇文章是從網上看了很多資料,通過自己實踐,測試可以完成伺服器的基本監控,然後整理而成,希望可以幫助學習linux的朋友。

有很多朋友說我的文章和他做的有點出入,我在這裡說明下我的nagios是2.9的,現在最新的是3.0.5的,我也測試過了,3.0.5的和2.9的在配置文件上是有點變化的,不要死定著這篇文章,文章只是引導大家去學習原理,配置文件的變動還需要大家去相應的改動。

實驗環境:nagios監控伺服器為192.168.1.240  
          主機名為nagios
          nagios被監控伺服器為192.168.1.208
          主機名為apache
用到的軟體包:httpd-2.2.6.tar.gz、imagepak-base.tar.gz、mysql-5.1.22-rc-linux-i686-icc-glibc23.tar.gz、nagios-2.9.tar.gz、nagios-plugins-1.4.9.tar.gz、nrpe-2.12.tar.gz、perl-stable.tar.gz、php-5.2.4.tar.bz2、pnp-latest.tar.gz、rrdtool-1.0.50.tar.gz

在監控伺服器上進行下面的操作:
1.安裝nagios主程序
1)解壓縮:
tar -zxvf nagios-2.9.tar.gz
cd nagios-2.9
./configure --prefix=/usr/local/nagios   --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include

2)創建用戶並且設定許可權:
groupadd nagios
useradd -g nagios nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios

make all
make install               //來安裝主程序,CGI和HTML文件
make install-init          //在/etc/rc.d/init.d安裝啟動腳本
make install-commandmode   //來配置目錄許可權
make install-config
  //來安裝示例配置文件,安裝的路徑是/usr/local/nagios/etc.

3)驗證是否安裝成功:
驗證程序是否被正確安裝。切換目錄到安裝路徑(這裡是/usr/local/nagios),看是否存在 etc、bin、 sbin、 share、 var這五個目錄,如果存在則可以表明程序被正確的安裝到系統了。后表是五個目錄功能的簡要說明:
bin        Nagios執行程序所在目錄,nagios文件即為主程序
etc        Nagios配置文件位置,初始安裝完后,只有幾個*.cfg-sample文件
sbin        Nagios Cgi文件所在目錄,也就是執行外部命令所需文件所在的目錄

share        Nagios網頁文件所在的目錄
var        Nagios日誌文件、spid 等文件所在的目錄

var/archives        Empty directory for the archived logs
/var/rw                        Empty directory for the external command file


2.安裝插件
1)解壓縮:
tar -zxvf nagios-plugins-1.4.9.tar.gz
cd nagios-plugins-1.4.9
./configure  --prefix=/usr/local/nagios/
(在redhat系統上面安裝可能出現configure時,到這裡checking for redhat spopen problem...就不動了,所以需要在configure時再加上--enable-redhat-pthread-workaround )
make
make install
ls /usr/local/nagios/libexec/
會顯示安裝的插件文件,即所有的插件都安裝在libexec這個目錄下

注意:要是沒有這個插件目錄需要用下面的命令把插件複製過來
cp /usr/local/nagios-plugins/libexec /usr/local/nagios/

2)將apache的運行用戶加到nagios組裡面 :
從httpd.conf中過濾出當前的apache運行用戶
grep ^User /usr/local/apache2/conf/httpd.conf

我的是daemon,下面將這個用戶加入nagios組
usermod -G nagios daemon
  
3)修改apache配置:
修改apache的配置文件,增加nagios的目錄,並且訪問此目錄需要進行身份驗證
vi /usr/local/apache2/conf/httpd.conf,在最後增加如下內容 :

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthName "Nagios Access"
    AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd   //用於此目錄訪問身份驗證的文件
    Require valid-user
</Directory>
  
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthName "Nagios Access"
    AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd  //用於此目錄訪問身份驗證的文件
Require valid-user
</Directory>

4)增加驗證用戶:
也就是通過web訪問nagios的時候,必須要用這個用戶登陸.在這裡我們增加用戶test:密碼為123456
#/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd test   //用戶名
New password: //(輸入123456)
Re-type new password: (再輸入一次密碼)
Adding password for user test
  
5)查看認證文件的內容:
# less /usr/local/nagios/etc/htpasswd
test:OmWGEsBnoGpIc       //前半部分是用戶名test,後面是加密后的密碼

到這裡nagios的安裝也就基本完成了,你可以通過web來訪問了.
http://192.168.1.240/nagios 會彈出對話框要求輸入用戶名密碼
輸入test,密碼123456,就可以進入nagios的主頁面了
但是可以發現什麼也點不開,因為nagios還沒啟動呢!下面的工作就是修改配置文件,增加要監控的主機和服務

3.典型配置
nagios要用起來,就必須修改配置文件,增加要監控的主機和服務才行.在具體做這個動作之前,下面的概念必須要了解.
  
1)預備知識 :
在Nagios裡面定義了一些基本的對象,一般用到的有:
聯繫人        contact                        出了問題向誰報告?一般當然是系統管理員了
監控時間段        timeperiod        7X24小時不間斷還是周一至周五,或是自定義的其他時間段
被監控主機        Host                        所需要監控的伺服器,當然可以是監控機自己
監控命令        command                        nagios發出的哪個指令來執行某個監控,這也是自己定義的
被監控的服務 Service                        例如主機是否存活,80埠是否開,磁碟使用情況或者自定義的服務等

注意:多個被監控主機可以定義為一個主機組,多個聯繫人可以被定義為一個聯繫人組

2)將示例配置文件複製為真實配置文件名:

cd /usr/local/nagios/etc
把這裡.cfg-sample文件配置文件模板,全部重命名為.cfg

3)修改配置文件:
修改nagios的主配置文件nagios.cfg
vi nagios.cfg
cfg_file=/usr/local/nagios/etc/localhost.cfg      //在前面加#
cfg_file=/usr/local/nagios/etc/contacts.cfg      //聯繫人配置文件路徑
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //聯繫人組配置文件路徑
cfg_file=/usr/local/nagios/etc/commands.cfg      //命令配置文件路徑
cfg_file=/usr/local/nagios/etc/host.cfg          //主機配置文件路徑
cfg_file=/usr/local/nagios/etc/hostgroups.cfg    //伺服器組配置文件
cfg_file=/usr/local/nagios/etc/templates.cfg     //模板配置文件路徑
cfg_file=/usr/local/nagios/etc/timeperiods.cfg   //監視時段配置文件路徑
cfg_file=/usr/local/nagios/etc/services.cfg      //服務配置文件

其他配置文件以實際情況來進行配置

改check_external_commands=0為check_external_commands=1 .這行的作用是允許在web界面下執行重啟nagios、停止主機/服務檢查等操作。

把command_check_interval的值從默認的1改成command_check_interval=10s(根據自己的情況定這個命令檢查時間間隔,不要太長也不要太短)。
主配置文件要改的基本上就是這些,通過上面的修改,發現/usr/local/nagios/etc並沒有文件hosts.cfg等一干文件,怎麼辦?稍後手動創建它們。

4)然後檢查配置文件是否出錯
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

出現Total Warnings: 0
        Total Errors:   0     //這樣表示配置文件沒有錯誤

5)修改CGI腳本控制文件cgi.cfg

#vi cgi.cfg
第二個要修改的配置文件是cgi.cfg,它的作用是控制相關cgi腳本。先確保use_authentication=1。接下來修改default_user_name=test(前面創建的用戶名) ,再後面的修改在下表列出:
authorized_for_system_information=nagiosadmin,mandahang,test     //後面跟的都是用戶名
authorized_for_configuration_information=nagiosadmin,mandahang,test
authorized_for_system_commands=mandahang,test authorized_for_all_services=nagiosadmin,mandahang,test
authorized_for_all_hosts=nagiosadmin,mandahang,test
authorized_for_all_service_commands=nagiosadmin,mandahang,test
authorized_for_all_host_commands=nagiosadmin,mandahang,test

注意:在上面的配置文件裡面加上新加的用戶test
那麼上述用戶名打那裡來的呢?是執行命令 /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd test(用戶名test) 所生成的

6)配置各種配置文件

定義監控時間段,創建配置文件timeperiods.cfg :
# vi timeperiods.cfg
define timeperiod{
        timeperiod_name         24x7   //時間段的名稱,這個地方不要有空格
        alias                   24 Hours A Day,7Days A Week
        sunday                  00:00-24:00
        monday                  00:00-24:00
        tuesday                 00:00-24:00
        wednesday               00:00-24:00
        thursday                00:00-24:00
        friday                  00:00-24:00
        saturday                00:00-24:00
        }

定義了一個監控時間段,它的名稱是24x7,監控的時間是每天全天24小時:
  
定義聯繫人,創建配置文件contacts.cfg
# vi contacts.cfg
define contact{
        contact_name                    test    //聯繫人的名稱,這個地方不要有空格
        alias                           sys admin
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   notify-by-email
        host_notification_commands      host-notify-by-email        
email                           tfhudong@sohu.com
        pager                           1391119xxxx
        }

創建了一個名為test的聯繫人,下面列出其中重要的幾個選項做說明:

service_notification_period     24x7
服務出了狀況通知的時間段,這個時間段就是上面在timeperiods.cfg中定義的.

host_notification_period        24x7
主機出了狀況通知的時間段, 這個時間段就是上面在timeperiods.cfg中定義的

service_notification_options    w,u,c,r
當服務出現w—報警(warning),u—未知(unkown),c—嚴重(critical),或者r—從異常情況恢復正常,在這四種情況下通知聯繫人.

host_notification_options       d,u,r
當主機出現d­­­­—當機(down),u—返回不可達(unreachable),r—從異常情況恢復正常,在這3種情況下通知聯繫人
service_notification_commands   notify-by-email
服務出問題通知採用的命令notify-by-email,這個命令是在commands.cfg中定義的,作用是給聯繫人發郵件.

host_notification_commands      host-notify-by-email
同上,主機出問題時採用的也是發郵件的方式通知聯繫人

email                           yahoon@test.com
很明顯,聯繫的人email地址
Pager                           137xxxxxxxxxxxxxx  //電話
}

下面就可以將多個聯繫人組成一個聯繫人組,創建文件contactgroups.cfg :

# vi contactgroups.cfg
define contactgroup{
        contactgroup_name       sagroup    //聯繫人組的名稱,同樣不能空格       
     alias                                System Administrators        //別名       
     members                          test
//組的成員,來自於上面定義的contacts.cfg,如果有多個聯繫人則以逗號相隔
        }

定義被監控主機,創建文件hosts.cfg :
# vi hosts.cfg
define host{
        host_name        nagios         //被監控主機的名稱,最好別帶空格
        alias            nagios             //別名       
       address     192.168.1.240    //被監控主機的IP地址      
       check_command    check-host-alive
        //監控的命令check-host-alive,這個命令來自commands.cfg,用來監控主機是否存活
        max_check_attempts    5  //檢查失敗后重試的次數
        check_period          24x7
       //檢查的時間段24x7,同樣來自於我們之前在timeperiods.cfg中定義的
contact_groups        sagroup
       //聯繫人組,上面在contactgroups.cfg中定義的sagroup
notification_interval  10
        //提醒的間隔,每隔10秒提醒一次
notification_period   24x7
        //提醒的周期, 24x7,同樣來自於我們之前在timeperiods.cfg中定義的
notification_options            d,u,r
//指定什麼情況下提醒
        }

通過簡單的複製修改就可以定義多個主機了.我們在這加上另外一台機器
  
與聯繫人可以組成聯繫人組一樣,多個主機也可以組成主機組:
主機名為:apache         ip:192.168.1.208

創建文件hostgrops.cfg
# vi hostgroups.cfg
define hostgroup{
        hostgroup_name          linux-servers  //主機組名稱
        alias                   linux-servers  //別名
        members                 nagios,apache
//組的成員主機,多個主機以逗號相隔,必須是上面hosts.cfg中定義的
        }

下面是最關鍵的了,用nagios主要是監控一台主機的各種信息,包括本機資源,對外的服務等等.這些在nagios裡面都是被定義為一個個的項目(nagios稱之為服務,為了與主機提供的服務相區別,我這裡用項目這個詞),而實現每個監控項目,則需要通過commands.cfg文件中定義的命令.
例如我們現在有一個監控項目是監控一台機器的web服務是否正常, 我們需要哪些元素呢?最重要的有下面三點:首先是監控哪台機,然後是這個監控要用什麼命令實現,最後就是出了問題的時候要通知哪個聯繫人?
  
定義監控的項目,也叫服務,創建services.cfg :

# vi services.cfg
define service{
        host_name               nagios
       //被監控的主機,hosts.cfg中定義的
        service_description     check-host-alive
       //這個監控項目的描述,這個會在web頁面中出現     
     check_command           check-host-alive
        //所用的命令,是commands.cfg中定義的
        max_check_attempts      5    //重試的次數
        normal_check_interval   3    //循環檢查的間隔時間
        retry_check_interval    2   
        check_period            24x7
        //監控的時間段,是timeperiods.cfg中定義的
        notification_interval   10
        notification_period     24x7
        //通知的時間段
notification_options    w,u,c,r
        //在監控的結果是wucr時通知聯繫人
        contact_groups          sagroup
        //聯繫人組,是contactgroups.cfg中定義的
        }

這樣整個的配置過程就結束了.雖然功能很簡單,但是已經為以後擴展打下了良好的基礎.

在運行nagios之前首先做測試

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
看到下面這些信息就說明沒問題了

Total Warnings: 0
Total Errors:   0

作為守護進程後台啟動nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
  
登陸http://192.168.1.240/nagios/來查看吧.點左邊的Host Detail


http://w.886.cn/8lWX/169134031/169134031_51641.png
http://w.886.cn/8lWX/169134032/169134032_49114.png

[ 本帖最後由 wiliiwin 於 2008-11-21 13:53 編輯 ]
《解決方案》

4. 使用命令和插件監控更多信息

我們已經增加了二個監控項目,分別監控nagios,apache這二台主機是否存活.
nagios本身並沒有監控的功能,所有的監控是由插件完成的,插件將監控的結果返回給nagios,nagios分析這些結果,以web的方式展現給我們,同時提供相應的報警功能(這個報警的功能也是由插件完成的)
所有的這些插件是一些實現特定功能的可執行程序,默認安裝的路徑是/usr/local/nagios/libexec

這些程序都是可以獨立執行的,使用方法可以通過」命令名 –h」來查看

例如,我們查看check_disk這個插件的用法則可以使用check_disk –h
# ./check_disk -h
check_disk (nagios-plugins 1.4.9) 1.91
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 1999-2006 Nagios Plugin Development Team
        <nagiosplug-devel@lists.sourceforge.net>
This plugin checks the amount of used disk space on a mounted file system
and generates an alert if free space is less than one of the threshold values
Usage: check_disk -w limit -c limit [-p path | -x device] [-t timeout][-m] [-e] [-W limit] [-K limit] [-v] [-q] [-E]

輸出的資料十分詳細給出了這個插件的功能,使用方法,參數意義等,對於每一個插件都是這樣.所以當你不懂某個插件怎麼使用時就好好讀讀吧.從上面的輸出可以看到check_disk這個插件是用來檢查磁碟使用情況的.
我現在來獨立執行它,例如查看根分區的使用情況,執行
# ./check_disk -w 10% -c 5% /
命令的含義是檢查分區/的使用情況,若剩餘10%以下,為警告狀態(warning),5%以下為嚴重狀態(critical),

執行后我們會看到下面這條信息
DISK WARNING - free space: / 487 MB (6% inode=78%);| /=7449MB;7524;7942;0;8361
說明當前是warning的狀態,空閑空間只有6%了.如果nagios收到這些狀態結果就會採取報警等措施了
  
我們在定義某個監控項目時,所用的監控命令都是來自commands.cfg的,這和這些插件有什麼關係?想到了吧,commands.cfg中定義的監控命令就是使用的這些插件.舉個例子,之前我們已經不止一次用到了check-host-alive這個命令,打開commands.cfg就可以看到這個命令的定義,如下:
define command{
        command_name    check-host-alive
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
        }

command_name    check-host-alive
這句話的意思是定義的命令名是check-host-alive,也就是我們在services.cfg中使用的名稱
執行的操作是
$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
其中$USER1$是在resource.cfg文件中定義的,代表插件的安裝路徑.就如我們上面看到的那樣$USER1$=/usr/local/nagios/libexec,至於$HOSTADDRESS$,則默認被定義為監控主機的地址.
簡單的說,我們在services.cfg中定義了對dbpi執行check-host-alive命令,實際上就是執行了
/usr/local/nagios/libexec/ check_ping -H dbpi的ip地址 -w 3000.0,80% -c 5000.0,100% -p 1
實際上check-host-alive只是這一長串命令的簡稱而已,而在services.cfg中都是使用簡稱的.
在commands.cfg中定義了很多這樣的命令簡稱.基本上我們常用的監控項目都包含了,例如ftp,http,本地的磁碟,負載等等.
我們再看一個命令,check_local_disk定義如下
define command{
        command_name    check_local_disk
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
        }

check_local_disk實際上是執行的check_disk插件.這裡的$ARG1$, $ARG2$, $ARG3$是什麼意思呢?在之前我們已經提到了這個check_disk這個插件的用法,-w的參數指定磁碟剩了多少是警告狀態,-c的參數指定剩多少是嚴重狀態,-p用來指定路徑.
在使用check-host-alive的時候,只需要在services.cfg中直接寫上這個命令名check-host-alive.後面沒任何的參數.而使用check_local_disk則不同,在services.cfg中這要這麼寫
check_local_disk!10%!5%!/
在命令名後面用!分隔出了3個參數,10%是$ARG1$的值,5%是$ARG2$的值,/ 是$ARG3$的值,
  
簡單的一句話就是
services.cfg定義監控項目用某個命令

這個命令必須在commands.cfg中定義

定義這個命令時使用了libexec下的插件

如果命令不帶$ARG1$就可以在services.cfg中直接使用,如果帶了使用時就帶上參數,以!相隔
  
1).監控nagios的ftp
編輯services.cfg 增加下面的內容,基本上就是copy上節我們定義監控主機存活的代碼.
define service{
        host_name               nagios
      //要監控的機器,給出機器名,注意必須是hosts.cfg中定義的
        service_description     check ftp
      //給這個監控項目起個名字吧,任意起,你自己懂就行
        check_command           check_ftp
        max_check_attempts      5
        normal_check_interval   3
        retry_check_interval    2
        check_period            24x7
        notification_interval   10
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          sagroup
        }
  
修改了配置文件,當然就要重新啟動了,簡單的方法殺掉nagios進程,然後重新啟動
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

這裡只能監控監控伺服器的本地信息,需要監控被監控伺服器的信息,就需要下面的操作。

5.用NRPE監控LINUX上的」本地信息」
本節的目的,對系統為linux的主機apcahe進行如下監控:磁碟容量,登陸用戶數,http,ftp,mysql的狀況,其他功能自己可以自定義配置

對於像磁碟容量,cpu負載這樣的」本地信息」,nagios只能監測自己所在的主機,而對其他的機器則顯得有點無能為力.畢竟沒得到被控主機的適當許可權是不可能得到這些信息的.為了解決這個問題,nagios有這樣一個附加組件----NRPE.用它就可以完成對linux類型主機」本地信息」的監控.
  
所以我們按照圖示在監控主機(nagios)和被監控主機上安裝相應的軟體
  
在被監控主機上

1)增加用戶
useradd nagios

設置密碼
# passwd nagios
  
2)安裝nagios插件
tar -zxvf nagios-plugins-1.4.9.tar.gz
cd nagios-plugins-1.4.9
編譯安裝
./configure --enable-redhat-pthread-workaround
make
make install
這一步完成後會在/usr/local/nagios/下生成兩個目錄libexec和share
# ls /usr/local/nagios/
libexec  share

修改目錄許可權
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
  
3)安裝nrpe
解壓縮
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
編譯
./configure
NRPE的埠是5666
make all
接下來安裝NPRE插件,daemon和示例配置文件

安裝check_nrpe這個插件
make install-plugin
之前說過監控機需要安裝check_nrpe這個插件,被監控機並不需要,我們在這裡安裝它是為了測試的目的

安裝deamon
make install-daemon

安裝配置文件
make install-daemon-config
  
現在再查看nagios目錄就會發現有4個目錄了
# ls /usr/local/nagios/
bin      etc      libexec  share
將NRPE deamon作為xinetd下的一個服務運行的.在這樣的情況下xinetd就必須要先安裝好,不過一般系統已經默認裝了
  
4)安裝xinetd腳本
# make install-xinetd
輸出如下
/usr/bin/install -c -m 644 sample-config/nrpe.xinetd /etc/xinetd.d/nrpe

可以看到創建了這個文件/etc/xinetd.d/nrpe
編輯這個腳本
vi /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
        flags           = REUSE
        socket_type     = stream
        port            = 5666
        wait            = no
        user            = nagios
        group           = nagios
        server          = /usr/local/nagios/bin/nrpe
        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1    在後面增加監控主機的地址192.168.1.240,以空格間隔
}

改后
     only_from       = 127.0.0.1 192.168.1.240
  
編輯/etc/services文件,增加NRPE服務
vi /etc/services

增加如下
# Local services
nrpe            5666/tcp                        # nrpe

重啟xinetd服務
# service xinetd restart

查看NRPE是否已經啟動
# netstat -at|grep nrpe
tcp        0      0 *:nrpe                  *:*                     LISTEN   
# netstat -an|grep 5666
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN   
可以看到5666埠已經在監聽了
  
5)測試NRPE是否則正常工作

之前安裝了check_nrpe這個插件用於測試,現在就是用的時候.執行
/usr/local/nagios/libexec/check_nrpe -H localhost
會返回當前NRPE的版本
# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.8.1

也就是在本地用check_nrpe連接nrpe daemon是正常的

注:為了後面工作的順利進行,注意本地防火牆要打開5666能讓外部的監控機訪問
  
/usr/local/nagios/libexec/check_nrpe –h查看這個命令的用法
可以看到用法是check_nrpe –H 被監控的主機 -c要執行的監控命令
注意:-c後面接的監控命令必須是nrpe.cfg文件中定義的.也就是NRPE daemon只運行nrpe.cfg中所定義的命令
  
查看NRPE的監控命令
cd /usr/local/nagios/etc
vi nrpe.cfg

# The following examples use hardcoded command arguments...
command=/usr/local/nagios/libexec/check_users -w 5 -c 10
command=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command=/usr/local/nagios/libexec/check_procs -w 150 -c 200

注意:其他命令需要自行添加

也就是check_nrpe 的-c參數可以接的內容,等號=後面是實際執行的插件程序(只這與commands.cfg中定義命令的形式十分相似,不過是寫在了一行).也就是說check_users就是等號後面/usr/local/nagios/libexec/check_users -w 5 -c 10的簡稱.
我們可以很容易知道上面這5行定義的命令分別是檢測登陸用戶數,cpu負載,hda1的容量,殭屍進程,總進程數.各條命令具體的含義見插件用法(執行」插件程序名 –h」)
由於-c後面只能接nrpe.cfg中定義的命令,也就是說現在我們只能用上面定義的這五條命令.我們可以在本機實驗一下.執行
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_zombie_procs

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs

在運行nagios的監控主機上

之前已經將nagios運行起來了,現在要做的事情是:
– 安裝check_nrpe插件
– 在commands.cfg中創建check_nrpe的命令定義,因為只有在commands.cfg中定義過的命令才能在services.cfg中使用

創建對被監控主機的監控項目

安裝check_nrpe插件
# tar -zxvf nrpe-2.8.1.tar.gz
# cd nrpe-2.8.1
# ./configure
# make all
# make install-plugin
只運行這一步就行了,因為只需要check_nrpe插件
  
在apache剛裝好了nrpe,現在我們測試一下監控機使用check_nrpe與被監控機運行的nrpedaemon之間的通信.

# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.208
NRPE v2.8.1

看到已經正確返回了NRPE的版本信息,說明一切正常.
  
在commands.cfg中增加對check_nrpe的定義
vi /usr/local/nagios/etc/commands.cfg
在最後面增加如下內容
########################################################################
#
# 2007.9.5 add by yahoon
# NRPE COMMAND
#
########################################################################
# 'check_nrpe ' command definition
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

意義如下
command_name check_nrpe
定義命令名稱為check_nrpe,在services.cfg中要使用這個名稱.

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
這是定義實際運行的插件程序.這個命令行的書寫要完全按照check_nrpe這個命令的用法.不知道用法的就用check_nrpe –h查看

-c後面帶的$ARG1$參數是傳給nrpe daemon執行的檢測命令,之前說過了它必須是nrpe.cfg中所定義的那5條命令中的其中一條.在services.cfg中使用check_nrpe的時候要用!帶上這個參數

下面就可以在services.cfg中定義對apache主機磁碟容量的監控
define service{
        host_name              apache
被監控的主機名,這裡注意必須是linux且運行著nrpe,而且必須是hosts.cfg中定義的
        service_description     check-disk
        監控項目的名稱
        check_command           check_nrpe!check_disk
       監控命令是check_nrpe,是在commands.cfg中定義的,帶的參數是check_disk,是在nrpe.cfg中定義的
        max_check_attempts      5
        normal_check_interval   3
        retry_check_interval    2
        check_period            24x7
        notification_interval   10
        notification_period     24x7
        notification_options    w,u,c,r
        contact_groups          sagroup
        }
像這樣將其餘幾個監控項目加進來.

6.Nagios的性能分析圖表(此安裝在監控機上進行)
Nagios監控的側重點在「此時」服務是否正常,是一個瞬時狀態。通過對這個狀態的監控和告警,管理員可以第一時間對主機或者服務的故障做處理。但是我 們往往也非常關心主機的性能以及服務的響應時間等情況,這些情況是一個持續的變化曲線,並非一個實時的值,如果通過查看日誌數據來分析的話,既繁瑣有抽 象,所以,我們希望Nagios可以幫我們做這份工作,然後將報表提交給我們,這樣就非常方便了。這就是今天需要用到的Nagios的相關開源項目—— PNP

PNP是一個小巧的開源軟體包,它是基於PHP和PERL,利用rrdtool將Nagios採集的數據繪製成圖表。如果你要安裝PNP,那麼準備工作有如下3項:
1、整合Apache和PHP
2、安裝rrdtools
3、安裝Perl
1)安裝php
./configure \
--prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf \
--with-zlib-dir=/usr/lib --with-png-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2 --with-ttf \
--enable-sockets --enable-ftp --enable-mbstring

make && make install

#在httpd配置文件里加入,使apache支持php
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

#拷貝php配置文件到指定位置
cp php.ini-dist /usr/local/php/lib/php.ini

2)安裝rrdtools
./configure
make&&make install

3) 安裝Perl
rm -f config.sh Policy.sh
sh Configure -de
make
make test
make install

要介紹PNP工作原理,首先要說明一下Nagios提供的數據介面,也就是PNP的數據來源。在定義host或service 中都有一個定義項,名為process_perf_data,其值可以定義為0或1,其作用是是否啟用Nagios的數據輸出功能。如果你將此項賦值為 1,那麼Nagios就會將收集的數據寫入到某個文件中,以備提取。所以,如果你想讓Nagios將數據輸出的話,首先要將Nagios的主配置文件 nagios.cfg中相關的配置修改:

process_performance_data=1
service_perfdata_command=process-service-perfdata  #默認此句被註釋掉了,在這裡去掉前面的#

如果想要對某個監控對象做數據圖表,則需在所對應的host或者service定義中(一般寫在hosts.cfg或者services.cfg文件中),包含如下的定義:

process_perf_data   1

這 樣,Nagios就會調用相應的命令來輸出數據了。Nagios的command.cfg定義中默認有一項「process-service- perfdata」,該命令聲明了Nagios輸出哪些值到輸出的文件中。不過其定義相對簡單,PNP提供了一個perl腳本,更詳盡的定義了一個輸出數 據的方法。如果要使用PNP的話,我們需要在command.cfg的定義中,將「process-service-perfdata」命令對應的執行命令行的內 容替換成該腳本:

define command{
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}

這樣設置了之後,Nagios就會利用PNP提供的腳本進行相關的工作了。
剛剛定義命令時用到的腳本「process_perfdata.pl」現在還不存在。我們現在就來安裝,也就PNP的軟體包 安裝方法很簡單,過程也很順利

./configure --with-rrdtool=/usr/local/rrdtool-1.0.50/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata/
make all
make install

安裝結束之後,再去檢查一下Nagios的插件目錄(libexec),就會發現多了一個名為「process_perfdata.pl」的腳本。

ok,現在執行一下Nagios配置檢查命令
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果沒有什麼錯誤,那麼我們重新啟動Nagios。
/etc/init.d/nagios restart
驗收一下成果,在瀏覽器的地址欄中輸入:

http://IP/nagios/pnp/index.php

http://w.886.cn/8lWX/169134029/169134029_21695.png

基本上nagios的主要功能就有這些,nagios的使用關鍵在於如何活用那些豐富的插件.nagios可以說是一個對於linux/unix環境支持十分好的程序.

之前我說重啟nagios的時候都是用的殺進程的方式,其實也可以不這麼做.如果在安裝nagios的時候安裝了啟動腳本就可以使用/etc/init.d/nagios restart 還可以帶的參數有stop, start,status
如果報錯了,有可能是腳本裡面的路徑設置錯誤,解決辦法
vi /etc/init.d/nagios
將prefix=/usr/local/nagiosaa改為安裝的目錄/etc/init.d/nagios

注:在nagios安裝的時候說是將腳本安裝到了/etc/rc.d/init.d,其實這和/etc/init.d是一個目錄

[ 本帖最後由 wiliiwin 於 2008-11-17 22:56 編輯 ]
《解決方案》

回復 #1 wiliiwin 的帖子

比較的好,你的環境沒有描述的很好
不過按照上面的大致步驟是可以實現的
nagios在一些功能上比cacti要好
《解決方案》

哎 辛辛苦苦整理的文檔貌似沒有人看 看來白忙活了 版主見了趕緊刪了這個帖子 我看了后很傷心
《解決方案》

很好的貼子,我下了一個nagios的中文項目,安裝沒有hosts.cfg,serves.cfg等文件,你文章中說要自己創建,能貼個模板出來嗎?本人菜鳥一個,請多多關照,萬分感謝!!!
《解決方案》

文章裡面不是都有模板的嘛 你按照自己的具體情況來進行修改
《解決方案》

我創建完檢查的時候報錯,截了個圖,不知道是什麼原因,頭大啊
《解決方案》

原帖由 kns1024wh 於 2008-11-14 22:46 發表 http://linux.chinaunix.net/bbs/images/common/back.gif
比較的好,你的環境沒有描述的很好
不過按照上面的大致步驟是可以實現的
nagios在一些功能上比cacti要好
nagios在一些功能上比cacti要好  好在那裡,說出讓大家知道一下,:em02:
《解決方案》

報警功能要比cacti的報警功能強大,可以監控伺服器的服務狀態  是關閉還是啟動 還可以對服務進程的僵死狀態進行報警  它的分析圖也不錯 可以對伺服器的各種服務有詳細的數據 比如回應時間等等
《解決方案》

恩不錯,讓大家都知道,按他們自已的需要去取,偶收藏起來,改天也來搞來玩玩:lol:




[火星人 via ] nagios監控系統配置過程已經有280次圍觀

http://www.coctec.com/docs/service/show-post-11683.html