nagios 監控

運維監控利器Nagios


Nagios的概念、結構和功能


1、使用Nagios的必要性


大量的IT基礎設施系統管理繁瑣、複雜。

減少管理和維護成本

優化系統、合理利用服務資源


監控軟件侷限性:

沒有任何工具可以監視你所需的一切內容。

要讓工具完全適應你的需求需要做許多自定義工作。


2什麼是Nagios

        Nagios—NagiosAin’t Gonna Insist on Sainthood

最初項目名字是NetSaint,程序主體由ANSI C編制.

        Nagios是一款開源的免費網絡監視工具,其功能強大,靈活性強。能有效監控WindowsLinuxUnix的主機狀態,交換機、路由器等網絡設置,打印機等,在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。

商業IT管理系統,如 IBM Tivoli, HPOpenView/Operations


官方站點:http://www.nagios.org/


3Nagios的結構

        Nagios可分爲核心和插件兩個部分。

        Nagios的核心部分只提供了很少的監控功能,因此要搭建一個完善的IT監控管理系統,用戶還需要給Nagios安裝相應的插件,插件可以從Nagios官方網站下載,也可以根據實際要求自己編寫所需的插件。

        Nagios必須運行在linux/Unix平臺下,需要gcc編譯器支持,nagios還提供了一個web監控界面。


4  Nagios可實現的功能

      (1)監視本地或者遠程主機資源 (內存、進程、磁盤等)

    2)監視網絡服務資源 (HTTPPINGFTPSMTPPOP3)

    3)允許用戶編寫自己的插件來監控特定的服務。

    4)當被監控對象出現異常時,可以通過郵件、短信等方式通知管理人員。

    5)可以事先定義事件處理程序,當主機或者服務出現故障時自動調用指定的處理程序。

    6)可以通過web界面來監控各個主機或服務的運行狀態。


5  Nagios監控實現原理

         Nagios軟件需要安裝在一臺獨立的服務器上運行,這臺服務器稱爲監控中心,這個監控中心服務器可以採用Linux或者Unix操作系統。每一臺需要監視的硬件主機或者服務都運行一個與監控中心服務器進行通信的Nagios軟件後臺程序。監控中心服務器根據讀取配置文件中的指令與遠程的守護程序進行通信,並且指示遠程的守護程序進行必要的檢查。雖然nagios軟件必須在Linux或者Unix操作系統上運行,但是,遠程被監控的機器可以是任何能夠與其進行通信的主機。根據遠程主機返回的應答,Nagios將根據配置以合適的行動進行迴應。接着,Nagios將通過本地的機器進行測試。如果檢查返回的值不正確,Nagios將通過一種或者多種方式報警。這也是根據事先的配置而採取的行動。

配置:

系統需求:

系統環境——linuxgcc;網絡;web服務-CGIphp);

[root@tx nagios]# yum install  -y httpd php glibc glibc-common gd gd-develgcc


構建基本環境:

[root@tx nagios]# useradd nagios

[root@tx nagios]# groupadd nagcmd

[root@tx nagios]# usermod -a -G nagcmd apache

[root@tx nagios]# usermod -a -G nagcmd nagios


開始安裝:

1)安裝核心程序:nagios-3.2.3.tar.gz

# tar zxf nagios-3.2.3.tar.gz-C /usr/local/src


[root@tx nagios-3.2.3]#pwd

/usr/local/src/nagios-3.2.3


[root@tx nagios-3.2.3]#./configure --prefix=/usr/local/nagios --with-command-group=nagcmd

#指定nagios的安裝目錄,這裏指定nagios安裝到/usr/local/nagios目錄

General Options:

-------------------------

      Nagios executable:  nagios

      Nagios user/group:  nagios,nagios

     Command user/group:  nagios,nagcmd

          Embedded Perl:  no

           Event Broker:  yes

      Install ${prefix}: /usr/local/nagios

               Lock file:  ${prefix}/var/nagios.lock

 Check result directory: ${prefix}/var/spool/checkresults

         Init directory:  /etc/rc.d/init.d

Apache conf.d directory: /etc/httpd/conf.d

           Mail program:  /bin/mail

                 Host OS:  linux-gnu


[root@tx nagios-3.2.3]#make all

[root@tx nagios-3.2.3]#make install

# make install用來安裝nagios的主程序,CGIHTML文件

[root@tx nagios-3.2.3]#make install-init

#通過make install-init命令可以在/etc/rc.d/init.d目錄下創建nagios啓動腳本

[root@tx nagios-3.2.3]#make install-config

#make install-cofig命令用來安裝nagios示例配置文件,這裏安裝的路徑

[root@tx nagios-3.2.3]#make install-commandmode

#通過make install-commandmode命令來配置目錄權限

[root@tx nagios-3.2.3]#make install-webconf

安裝nagiosweb接口


3Nagios目錄介紹

Nagios安裝完成後,各個目錄結構以及功能說明如下表所示:


wKioL1MBpquC5jxmAAIucFvkhpo643.jpg


# cd /etc/httpd/conf.d

# vim nagios.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/usr/local/nagios/etc/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 /usr/local/nagios/etc/htpasswd.users

  Require valid-user

</Directory>

[root@tx nagios]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

New password:

Re-type new password:

Adding password for user nagiosadmin


3)啓動服務:

[root@tx libexec]# /etc/init.d/httpd restart

Stopping httpd:                                           [  OK  ]

Starting httpd:                                           [  OK  ]

[root@tx libexec]# /etc/init.d/nagios start

Starting nagios:/etc/bashrc

done.


打開瀏覽器訪問:

[root@tx libexec]# firefox http://192.168.8.4/nagios&

        nagiosadmin

        密碼是自己設的

-------------------------------------------------------

1、介紹nagios的配置文件:

[root@tx etc]# pwd

/usr/local/nagios/etc

[root@tx etc]# cd objects/

wKioL1MBqZ_Q0HNNAASS_Z6Dq8E300.jpg


2、配置文件之間的關係

nagios的配置過程中涉及到的幾個定義有:主機、主機組,服務、服務組,聯繫人、聯繫人組,監控時間,監控命令等,從這些定義可以看出,nagios各個配置文件之間是互爲關聯,彼此引用的。

成功配置出一臺nagios監控系統,必須要弄清楚每個配置文件之間依賴與被依賴的關係,最重要的有四點:

第一:定義監控哪些主機、主機組、服務和服務組

第二:定義這個監控要用什麼命令實現,

第三:定義監控的時間段,

第四:定義主機或服務出現問題時要通知的聯繫人和聯繫人組。


3、開始配置nagios

爲了能更清楚的說明問題,同時也爲了維護方便,建議將nagios各個定義對象創建獨立的配置文件:

即爲:

創建hosts.cfg文件來定義主機和主機組,被監控的主機

創建services.cfg文件來定義服務,監控的服務

用默認的contacts.cfg文件來定義聯繫人和聯繫人組,出了問題向誰發信息

用默認的commands.cfg文件來定義命令,監控用的命令

用默認的timeperiods.cfg來定義監控時間段,7x24;  workhour

用默認的templates.cfg文件作爲資源引用文件


1templates.cfg文件

define host{

       name                           linux-server    #主機名稱

       use                             generic-host    #use表示引用,也就是將主機generic-host的所有屬性引用到linux-server中來,在nagios配置中,很多情況下會用到引用。

       check_period                    24x7            #這裏的check_period告訴nagios檢查主機的時間段

       check_interval                  5                #nagios對主機的檢查時間間隔,這裏是5分鐘。

       retry_interval                  1               #重試檢查時間間隔,單位是分鐘。

       max_check_attempts              10               #nagios對主機的最大檢查次數,也就是nagios在檢查發現某主機異常時,並不馬上判斷爲異常狀況,而是多試幾次,因爲有可能只是一時網絡太擁擠,或是一些其他原因,讓主機受到了一點影響,這裏的10就是至少試10次的意思。

       check_command                   check-host-alive  #指定檢查主機狀態的命令,其中“check-host-alive”在commands.cfg文件中定義。

       notification_period             workhours      #主機故障時,發送通知的時間範圍,其中“workhours”在timeperiods.cfg中進行了定義,下面會陸續講到。


       notification_interval           120            #在主機出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你覺得,所有的事件只需要一次通知就夠了,可以把這裏的選項設爲0

       notification_options            d,u,r          #定義主機在什麼狀態下可以發送通知給使用者,ddown,表示宕機狀態,uunreachable,表示不可到達狀態,rrecovery,表示重新恢復狀態。

       contact_groups                  admins         #指定聯繫人組,這個“admins”在contacts.cfg文件中定義。

       register                        0

       }


define service{

       name                           generic-service   #定義一個服務名稱

       active_checks_enabled           1  

       passive_checks_enabled          1  

       parallelize_check                1    

       obsess_over_service             1  

       check_freshness                0

       notifications_enabled            1              

       event_handler_enabled           1                

       flap_detection_enabled           1                  

       failure_prediction_enabled        1                

       process_perf_data               1                

       retain_status_information       1                  

       retain_nonstatus_information    1                      

       is_volatile                     0

       check_period                    24x7      #這裏的check_period告訴nagios檢查服務的時間段。

       max_check_attempts              3         #nagios對服務的最大檢查次數。

       normal_check_interval           10       #此選項是用來設置服務檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間,這裏是10分鐘。

       retry_check_interval            2        #重試檢查時間間隔,單位是分鐘。

       contact_groups                  admins   #指定聯繫人組,同上。

       notification_options            w,u,c,r  #這個定義的是“通知可以被髮出的情況”。wwarn,表示警告狀態,uunknown,表示不明狀態,ccriticle,表示緊急狀態,rrecover,表示恢復狀態。也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復後都發送通知給使用者。

       notification_interval           60       #在服務出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你認爲,所有的事件只需要一次通知就夠了,可以把這裏的選項設爲0

       notification_period             24x7     #指定“發送通知”的時間段,也就是可以在什麼時候發送通知給使用者。

        register                        0                    

       }


2resource.cfg文件


      resource.cfgnagios的變量定義文件,文件內容只有一行:

$USER1$=/usr/local/nagios/libexec

其中,變量$USER1$指定了安裝nagios插件的路徑,如果把插件安裝在了其它路徑,只需在這裏進行修改即可。需要注意的是,變量必須先定義,然後才能在其它配置文件中進行引用。


3)理解Nagios宏及其工作機制

Nagios配置非常靈活,繼承和引用是一大特徵,另一個重要特徵就是可以在命令行的定義裏使用宏,通過定義宏,nagios可以靈活的獲取主機、服務和其它對象的信息。

Macro),香港臺灣稱爲巨集,是一種批量批量處理的稱謂。

計算機科學裏的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。解釋器或編譯器在遇到宏時會自動進行這一模式替換。

宏的工作機制

在執行命令之前,nagios將對命令裏的每個宏替換成它們應當取得的值。這種宏替換髮生在Nagios執行各種類型的宏時候。例如主機和服務的檢測、通知、事件處理等。

宏的分類

默認宏、按需而成的宏、用戶自定製宏等。

默認宏

主機IP地址宏

當在命令定義中使用主機或服務宏時,宏將要執行所用的值指向主機或服務所帶有值。看下面這個例子,假定在check_ping命令定義裏使用了一個主機對象,例如這樣:

define host{

                 host_name                        ixdba

                 address               192.168.12.246

                 check_command              check_ping

                 ...

                 }

define command{

                 command_name    check_ping

                 command_line    /usr/local/nagios/libexec/check_ping -H$HOSTADDRESS$ -w 100.0,90% -c 200.0,60%

                 }

那麼執行這個主機檢測命令時展開並最終執行的將是這樣的:

        /usr/local/nagios/libexec/check_ping -H192.168.12.246 -w 100.0,90% -c 200.0,60%



命令參數宏

同樣你可以向命令傳遞參數,這樣可以保證命令定義更具通用性。參數指定在對象(象主機或服務)中定義,用一個“!”來分隔,例如這樣:

define service{

                 host_name                   linuxbox

                 service_description      PING

                 check_command             check_ping!200.0,80%!400.0,40%

                 ...

                 }

在上例中,服務的檢測命令中含有兩個參數(請參考$ARGn$),而$ARG1$宏將是"200.0,80%",同時$ARG2$將是"400.0,40%"(都不帶引號)。假定使用之前的主機定義並這樣來定義你的check_ping命令:

define command{

                 command_name    check_ping

                 command_line    /usr/local/nagios/libexec/check_ping -H$HOSTADDRESS$ -w $ARG1$ -c $ARG2$

                 }

那麼對於服務的檢測命令最終將是這樣子的:

/usr/local/nagios/libexec/check_ping-H 192.168.12.246 -w 200.0,80% -c 400.0,40%


Nagios可用的全部的宏

主機宏

$HOSTNAME$  主機簡稱("web"),取自於主機定義裏的host_name

$HOSTADDRESS$  主機地址。取自於主機定義裏的address

服務宏

$SERVICESTATE$ 服務狀態描述,有wuc

$SERVICEDESC$   對當前服務的描述

聯繫人宏

$CONTACTNAME$   表示聯繫人,在聯繫人文件中定義

通知宏

$NOTIFICATIONTYPE$    返回下面信息:("PROBLEM", "RECOVERY","ACKNOWLEDGEMENT", "FLAPPINGSTART","FLAPPINGSTOP", "FLAPPINGDISABLED","DOWNTIMESTART", "DOWNTIMEEND", or"DOWNTIMECANCELLED").

日期/時間宏

$LONGDATETIME$  當前的日期/時間戳

文件宏

$LOGFILE$  日誌文件的保存位置。

$MAINCONFIGFILE$  主配置文件的保存位置。

其他宏

$ADMINEMAIL$  全局的管理員EMail地址

$ARGn$  指向第n個命令傳遞參數(通知、事件處理、服務檢測等)Nagios支持最多32個參數宏


4commands.cfg文件

此文件默認是存在的,無需修改即可使用,當然如果有新的命令需要加入時,在此文件進行添加即可。這裏並未列出文件的所有內容,僅僅介紹了配置中用到的一些命令。


#下面是notify-host-by-email命令的定義

define command{

       command_name    notify-host-by-email    #命令名稱,即定義了一個主機異常時發送郵件的命令。

       command_line    /usr/bin/printf "%b" "*****Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState:$HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time:$LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$    #命令具體的執行方式,“-H $HOSTADDRESS$是定義目標主機的地址,這個地址在hosts.cfg文件中定義了。

       }

#下面是notify-service-by-email命令的定義

define command{

       command_name    notify-service-by-email   #命令名稱,即定義了一個服務異常時發送郵件的命令

       command_line    /usr/bin/printf "%b" "*****Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService:$SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState:$SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditionalInfo:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"$CONTACTEMAIL$

       }


#下面是check-host-alive命令的定義

        define command{

       command_name    check-host-alive    #命令名稱,用來檢測主機狀態。

      command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w3000.0,80% -c 5000.0,100% -p 5     #這裏的變量$USER1$resource.cfg文件中進行定義,即$USER1$=/usr/local/nagios/libexec

,那麼check_ping的完整路徑爲/usr/local/nagios/libexec/check_ping-w 3000.0,80%”中“-w”說明後面的一對值對應的是“WARNING”狀態,“80%”是其臨界值。“-c 5000.0,100%”中“-c”說明後面的一對值對應的是“CRITICAL”,“100%”是其臨界值。“-p 1說明每次探測發送一個包。

       }

#下面是check_ftp命令的定義

        define command{

       command_name    check_ftp

       command_line    $USER1$/check_ftp -H $HOSTADDRESS$$ARG1$        #$ARG1$是指在調用這個命令的時候,命令後面的第一個參數。

       }

#下面是check_http命令的定義

        define command{

       command_name    check_http

       command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$

       }

#下面是check_ssh命令的定義

        define command{

       command_name    check_ssh

       command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$

       }

。。。。。。

5 hosts.cfg文件

此文件默認不存在,需要手動創建,hosts.cfg主要用來指定被監控的主機地址以及相關屬性信息,一個配置好的實例如下:


define host{

       use                     linux-server          #引用主機linux-server的屬性信息,linux-server主機在templates.cfg文件中進行了定義。

       host_name               web                              #主機名

       alias                    ixdba-web            #主機別名

       address                 192.168.12.251               #被監控的主機地址,這個地址可以是ip,也可以是域名。

       }


        define host{

       use                     linux-server

       host_name              mysql

       alias                    ixdba-mysql

       address                 192.168.12.237

       }


        define hostgroup{                                                     #定義一個主機組

        hostgroup_name  sa-servers                    #主機組名稱,可以隨意指定。

        alias           sa servers                            #主機組別名

        members         web,mysql                       #主機組成員,其中“web”、“mysql”就是上面定義的兩個主機。

        }


6 services.cfg文件

此文件默認也不存在,需要手動創建,services.cfg文件主要用於定義監控的服務和主機資源,例如監控http服務、ftp服務、主機磁盤空間、主機系統負載等等。

#################  ixdba  web  #####################

define service{

       use                             local-service  #引用local-service服務的屬性值,local-servicetemplates.cfg文件中進行了定義。

       host_name                       web               #指定要監控哪個主機上的服務,“web”在hosts.cfg文件中進行了定義。

       service_description             PING           #對監控服務內容的描述,以供維護人員參考。

       check_command                  check_ping!100.0,20%!500.0,60%    #指定檢查的命令,check_ping命令在commands.cfg中定義,後跟兩個參數,命令與參數間用!分割。

       }


        define service{

       use                            local-service

       host_name                       web

       service_description              SSH

       check_command                  check_ssh              # check_ssh命令也在commands.cfg中定義。

       }


        define service{

       use                            local-service

       host_name                       web

       service_description              SSHD

       check_command                  check_tcp!22

       }


(7) contacts.cfg文件

   contacts.cfg是一個定義聯繫人和聯繫人組的配置文件,當監控的主機或者服務出現故障,nagios會通過指定的通知方式(郵件或者短信)將信息發給這裏指定的聯繫人或者使用者。


define contact{

       contact_name                    sasystem                 #聯繫人名稱

       use                             generic-contact       #引用generic-contact的屬性信息,其中“generic-contact”在templates.cfg文件中進行定義

       alias                          sa-system                 #聯繫人別名

       email                          [email protected]  #聯繫人的郵件地址

       }

define contactgroup{

     contactgroup_name    admins #聯繫人組名稱

     alias                system administrator group      #聯繫人組描述

     members             sasystem             #聯繫人組成員,其中“sasystem”就是上面定義的聯繫人

}

8 timeperiods.cfg文件

此文件只要用於定義監控的時間段,下面是一個配置好的實例:

#下面是定義一個名爲24x7的時間段,即監控所有時間段

define timeperiod{

       timeperiod_name 24x7  

       alias           24 Hours A Day, 7 Days 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

       }

#下面是定義一個名爲workhours的時間段,即工作時間段。

define timeperiod{

       timeperiod_name workhours

       alias           Normal Work Hours

       monday          09:00-17:00

       tuesday         09:00-17:00

       wednesday       09:00-17:00

       thursday        09:00-17:00

       friday          09:00-17:00

       }


9 cgi.cfg文件

此文件用來控制相關cgi腳本,如果想在nagiosweb監控界面執行cgi腳本,例如重啓nagios進程、關閉nagios通知、停止nagios主機檢測等,這時就需要配置cgi.cfg文件了。

所以只需在cgi.cfg文件中添加此用戶的執行權限就可以了,需要修改的配置信息如下:


authorized_for_system_information=nagiosadmin

authorized_for_configuration_information=nagiosadmin

authorized_for_system_commands=nagiosadmin

authorized_for_all_services=nagiosadmin

authorized_for_all_hosts=nagiosadmin

authorized_for_all_service_commands=nagiosadmin

authorized_for_all_host_commands=nagiosadmin

10 nagios.cfg文件

       Nagios.cfg默認的路徑爲/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置文件,所有的對象配置文件都必須在這個文件中進行定義才能發揮其作用,這裏只需將對象配置文件在Nagios.cfg文件中進行引用即可。


log_file=/usr/local/nagios/var/nagios.log

log_file”變量用來定義nagios日誌文件的路徑。

cfg_file=/usr/local/nagios/etc/hosts.cfg

cfg_file=/usr/local/nagios/etc/services.cfg

cfg_file=/usr/local/nagios/etc/commands.cfg

cfg_file=/usr/local/nagios/etc/contacts.cfg

cfg_file=/usr/local/nagios/etc/timeperiods.cfg

cfg_file=/usr/local/nagios/etc/templates.cfg

cfg_file”變量用來引用對象配置文件,如果有更多的對象配置文件,在這裏依次添加即可。

object_cache_file=/usr/local/nagios/var/objects.cache

該變量用於指定一個“所有對象配置文件”的副本文件,或者叫對象緩衝文件

resource_file=/usr/local/nagios/etc/resource.cfg

該變量用於指定nagios資源文件的路徑,可以在Nagios.cfg中定義多個資源文件。

status_file=/usr/local/nagios/var/status.dat

該變量用於定義一個狀態文件,此文件用於保存nagios的當前狀態、註釋和宕機信息等。

status_update_interval=10

該變量用於定義狀態文件(即status.dat)的更新時間間隔,單位是秒,最小更新間隔是1秒。

nagios_user=nagios

該變量指定了Nagios進程使用哪個用戶運行。

nagios_group=nagios

該變量用於指定Nagios使用哪個用戶組運行。

check_external_commands=1

該變量用於設置是否允許nagiosweb監控界面運行cgi命令,也就是是否允許nagiosweb界面下執行重啓nagios、停止主機/服務檢查等操作。“1爲運行,“0爲不允許。

command_check_interval=2

該變量用於設置nagios對外部命令檢測的時間間隔,如果指定了一個數字加一個"s"(10s),那麼外部檢測命令的間隔是這個數值以秒爲單位的時間間隔。如果沒有用"s",那麼外部檢測命令的間隔是以這個數值的“時間單位”的時間間隔。

interval_length=60

該變量指定了nagios的時間單位,默認值是60秒,也就是1分鐘,即在nagios配置中所有的時間單位都是分鐘


例子:

定義一個new contact

        #vim/usr/local/nagios/etc/objects/contacts.cfg

                 define contact{

      contact_name                   matrix

      alias                          administrator

      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-service-by-email

      host_notification_commands      notify-host-by-email

      email                          matrix@localhost

      }


#vim /usr/local/nagios/etc/objects/remotehost.cfg

define host{

host_name             apache

alias                 apache

address               192.168.8.6

max_check_attempts    5

check_period          24x7

normal_check_interval  5

retry_check_interval   1

contact_groups         admins

notification_period    24x7

notification_options   d,u,r

}


#vim/usr/local/nagios/etc/objects/services.cfg

define service{

use            local-service

host_name       apache

service_description  remotehost_boot

check_command        check_nrpe!check_sda1

}


define service{

use             local-service

host_name       apache

service_description  apache_alive

check_command        check_ping!100.0,20%!500.0,60%

}


define service{

host_name       apache

service_description  check_tcp 80

max_check_attempts    5

check_period          24x7

normal_check_interval  5

retry_check_interval   2

contact_groups         admins

notification_period    24x7

notification_options   w,u,c,r

check_command       check_tcp!80

}

修改主配置文件,加入你自己編寫的remotehost.cfgservices.cfg

                 vim /usr/local/nagions/etc/nagios.cfg            


cfg_file=/usr/local/nagios/etc/objects/remotehost.cfg

cfg_file=/usr/local/nagios/etc/objects/services.cfg

檢查主配置文件,確定是否書寫正確

                 #/usr/local/nagios/bin/nagios -v  /usr/local/nagions/etc/nagios.cfg


重新啓動nagios服務:

                 # /etc/init.d/nagios restart

                          Runningconfiguration check...done.

                          Stoppingnagios: .done.

                          Starting nagios: done.

=====================================================================


利用NRPE外部構件監控遠程主機

1、nrpe實現監控遠程主機原理

   NRPE是nagios的一個功能擴展,它可在遠程Linux/Unix主機上執行插件程序,通過在遠程服務器上安裝nrpe構件以及nagios插件程序,來向nagios監控平臺提供該服務器的一些本地的情況。例如,cpu負載、內存使用、硬盤使用等等。

wKiom1MBrqfjZHaIAAEwU0FhZBM174.jpg

在被監控端安裝所需的軟件:  192.168.8.6


# wget http://192.168.8.4/nagios-bj/nagios-plugins-1.4.15.tar.gz


# wgethttp://192.168.8.4/nagios-bj/nrpe-2.12.tar.gz


#useradd -s /sbin/nologin     -M nagios


# pwd

/usr/local/src/nagios-plugins-1.4.15


# ./configure --prefix=/usr/local/nagios

# make

# make install


安裝NRPE

  nagios的遠程插件執行程序,負責收集被監控端的信息,並傳輸到監控端。

在客戶端安裝nrpe插件過程要比在服務端安裝複雜,因爲nrpe在客戶端是作爲一個守護進程在運行的

# tar xvzf nrpe-2.12.tar.gz -C/usr/local/src


                 # pwd

                          /usr/local/src/nrpe-2.12

# cd nrpe-2.12


# ./configure --prefix=/usr/local/nagios/

checking for SSL headers... configure:error: Cannot find ssl headers


# yum search ssl

openssl.i386 : The OpenSSL toolkit

openssl.i686 : The OpenSSL toolkit

openssl-devel.i386 : Files for developmentof applications which will

                  : use OpenSSL


# yum install -y openssl openssl-devel


# ./configure--prefix=/usr/local/nagios/  再跑一遍

General Options:

-------------------------

NRPEport:    5666

NRPEuser:    nagios

NRPEgroup:   nagios

Nagios user: nagios

Nagios group: nagios


# make all

# make install-plugin

# make install-daemon

# make install-daemon-config

# make install-xinetd


配置nrpe,添加nrpe服務:

                 #vim /etc/services

                          418nrpe        5666/tcp            # nrpe


                 # vim /etc/xinetd.d/nrpe

                          only_from       = 192.168.8.4  127.0.0.1


# /etc/init.d/xinetd restart

Stopping xinetd:                                          [  OK  ]

Starting xinetd:                                          [  OK  ]

# netstat -antpul | grep nrpe

# netstat -antpul | grep 5666

tcp       0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      32502/xinetd    


# cd /usr/local/nagios/etc/


# vim nrpe.cfg

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_sda1]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda1

command[check_sda2]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda2

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


本地測試:

# /usr/local/nagios/libexec/check_nrpe -Hlocalhost -c check_sda1

DISK OK - free space: /boot 82 MB (88%inode=99%);| /boot=11MB;78;88;0;98


# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2             9.7G2.8G6.5G 31% /

/dev/sda1              99M12M83M 12% /boot

tmpfs                 252M     0  252M   0% /dev/shm

/dev/hdc              2.9G2.9G    0 100% /iso

# df -i

Filesystem            Inodes   IUsed  IFree IUse% Mounted on

/dev/sda2            2621440  105226 2516214    5% /

/dev/sda1              26104      34  26070    1% /boot

tmpfs                  64413       1  64412    1% /dev/shm

=================================================================

監控服務器配置監控端的nrpe

[root@tx nagios-bj]# tar zxfnrpe-2.12.tar.gz -C /usr/local/src/


[root@tx nagios-bj]# cd/usr/local/src/nrpe-2.12/


[root@tx nrpe-2.12]# yum install -y opensslopenssl-devel


[root@tx nrpe-2.12]# ./configure--prefix=/usr/local/nagios/


[root@tx nrpe-2.12]# make all


[root@tx nrpe-2.12]# make install-plugin


手動測試:

[root@tx nrpe-2.12]# cd/usr/local/nagios/libexec/


[root@tx libexec]#  /usr/local/nagios/libexec/check_nrpe -H  192.168.8.6 -c check_sda1

DISK OK - free space: /boot 82 MB (88%inode=99%);| /boot=11MB;78;88;0;98


[root@tx objects]# pwd

/usr/local/nagios/etc/objects


# vim/usr/local/nagios/etc/objects/commands.cfg

# "check_nrpe" command define

define command{

      command_name    check_nrpe

      command_line    /usr/local/nagios/libexec/check_nrpe-H $HOSTADDRESS$ -c $ARG1$

}


# vim/usr/local/nagios/etc/objects/remotehot.cfg

# 192.168.8.6 linux_host

define host{

      host_name       apache

      address         192.168.8.6

      check_period    24x7

      check_interval  5

      retry_interval  1

      max_check_attempts      10

      notification_period     24x7

      notification_options    d,u,r

# d - down

# u - unreachable

# r - 從異常恢復正常

      contact_groups          admins

}


#vim /usr/local/nagios/etc/objects/services.cfg

# define 192.168.8.6  "/boot"

define service{

      use             local-service

      host_name       apache

      service_description     bootpartition

      check_command          check_nrpe!check_sda1

}


# define 192.168.8.6  "login users"

define service{

      use             local-service

      host_name       apache

      service_description     loginusers

      check_command          check_nrpe!check_users

}

# define 192.168.8.6  "/"

define service{

      use             local-service

      host_name       apache

      service_description     rootpartition

      check_command          check_nrpe!check_sda2

}


寫完之後注意這個文件的權限:


在主配置文件要聲明監控主機使用的文件:


檢查配置文件的正確性:***

[root@tx etc]# /usr/local/nagios/bin/nagios-v /usr/local/nagios/etc/nagios.cfg

Total Warnings: 0

Total Errors:   0


[root@tx etc]# /etc/init.d/nagios restart


監控被監控端的服務:

要求:被監控端的服務一定要開啓!~

http   ssh    mysql  ftp


----------------------------------------------------------------------------------------------------------------------------

http://bbs.it-adv.net/viewthread.php?tid=1010&extra=page%3D1



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章