1. 程式人生 > >nagios 安裝部署試驗

nagios 安裝部署試驗

RH5.3 + VMware +Nagios

11
+ 環境 虛擬機器vmware
+ 作業系統 linux rh5.3

步驟

  • rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel
  • yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

    遇見問題:This system is not registered with RHN

    • Redhat之所以會出現這個錯誤是因為沒有註冊RHN,我們只需要更新一下yum的源就可以了。使用命令 cd /etc/yum.repos.d/ 進入yum的配置目錄。
    • 然後將原有的rhel-debuginfo.repo備份一下,使用命令mv CentOS-Base.repo rhel-debuginfo.repo,將CentOS- Base.repo重新命名成rhel-debuginfo.repo。
    • 成功以後,使用yum install build-essential安裝成功。
  • 建立Nagios使用者和使用者組

    # useradd -s /sbin/nologin nagios
    # mkdir /usr/local/nagios
    # chown -R nagios.nagios /usr/local/nagios
    
  • 檢視Nagiox目錄許可權
    # ll -d /usr/local/nagios/
  • 編譯安裝Nagios

        # wget http://www.mirrorservice.org/sites/dl.sourceforge.net/pub/sourceforge/n/na/nagios/nagios-3.x/nagios-3.4.3/nagios-3.4.3.tar.gz    
        # tar zxvf nagios-3.4.3.tar.gz    
        # cd nagios    
        # ./configure --prefix=/usr/local/nagios(返回結果包含Review the options above for accuracy. If they look Okay. Type'make all'....)
        # make all(返回結果包含Enjoy)
        # make install(返回結果包含Make[1]:Leaving directory 'root/nagios')
        # make install-init(返回結果包含init script installed)
        # make install-commandmode(返回結果包含external command directory configured)
        # make install-config(返回結果包含config files installed)
        # chkconfig --add nagios
        # chkconfig --level 35 nagios on
        # chkconfig --list nagios(返回結果包含:nagios 0:off 1:off 2:off 3:on 4:on 5:on 6:off)
    
  • 驗證程式是否安裝正確

    切換目錄到安裝路徑(這裡是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 這五個目錄,如果存在則可以表明程式被正確的安裝到系統了。Nagios 各個目錄用途說明如下:

    bin             Nagios 可執行程式所在目錄        
    etc             Nagios 配置檔案所在目錄     
    sbin            Nagios CGI 檔案所在目錄,也就是執行外部命令所需檔案所在的目錄
    share           Nagios網頁檔案所在的目錄     
    libexec         Nagios 外部外掛所在目錄     
    var             Nagios 日誌檔案、lock 等檔案所在的目錄       
    var/archives    Nagios 日誌自動歸檔目錄     
    var/rw          用來存放外部命令檔案的目
    
  • 安裝Nagios外掛

    wget http://nagios-plugins.org/download/nagios-plugins-1.4.16.tar.gz
    # tar zxvf nagios-plugins-1.4.16.tar.gz
    # cd nagios-plugins-1.4.16
    # ./configure --prefix=/usr/local/nagios
    # make && make install
    
  • 安裝和配置Apache和Php

    Apache 和Php 不是安裝nagios 所必須的,但是nagios提供了web監控介面,通過web監控介面可以清晰的看到被監控主機、資源的執行狀態,因此,安裝一個web服務是很必要的。
    需要注意的是,nagios在nagios3.1.x版本以後,配置web監控介面時需要php的支援。這裡我們下載的nagios版本為nagios-3.4.3,因此在編譯安裝完成apache後,還需要編譯php模組,這裡選取的php版本為php5.4.10。

    • 安裝Apache
    • # wget http://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz
      # cd httpd-2.2.23    
      # ./configure --prefix=/usr/local/apache2    
      # make && make install
      

      * 若出現錯誤:則在編譯時入加 –with-included-apr 即可解決。*

    • 安裝Php

      # wget http://cn2.php.net/distributions/php-5.4.10.tar.gz       
      # tar zxvf php-5.4.10.tar.gz        
      # cd php-5.4.10     
      # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
      # make && make install
      

      出現問題:redhat xml2-config not found,解決方法如下

      #yum install libxml2 libxml2-devel (For RedHat & Fedora)
      # aptitude install libxml2-dev      (For ubuntu)
      
    • 配置Apache

      找到apache 的配置檔案/usr/local/apache2/conf/httpd.conf 找到:

      User daemon 
      Group daemon 
      

      修改為

      User nagios 
      Group nagios 
      

      然後找到

      <IfModule dir_module> 
        DirectoryIndex index.html 
      </IfModule> 
      

      修改為

      <IfModule dir_module> 
        DirectoryIndex index.html index.php 
      </IfModule> 
      

      接著增加如下內容:

      AddType application/x-httpd-php .php

      為了安全起見,一般情況下要讓nagios 的web 監控頁面必須經過授權才能訪問,這需要增加驗證配置,即在httpd.conf 檔案最後新增如下資訊:

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

    在上面的配置中,指定了目錄驗證檔案htpasswd,下面要建立這個檔案:
    # /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd david

    返回結果會讓你輸入密碼

    • 檢視認證檔案的內容

      # cat /usr/local/nagios/etc/htpasswd
      返回結構會有使用者名稱和加密後的密碼

    • 啟動apache 服務

    # /usr/local/apache2/bin/apachectl start

    遇見問題:Cannot load /usr/local/apache2/modules/libphp5.so into server解決方法如下:

    原因是Linux有一個SELinux保護模式引起的。
    
    Syntax error on line 268 of /usr/local/apache2/conf/httpd.conf:
    
    Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
    
    + 不關閉SELINUX的解決辦法:
    
    
    
    # setenforce 0
    # chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
    # service httpd restart
    # setenforce 1
    

Nagios配置

Nagios 主要用於監控一臺或者多臺本地主機及遠端的各種資訊,包括本機資源及對外的服務等。預設的Nagios 配置沒有任何監控內容,僅是一些模板檔案。若要讓Nagios 提供服務,就必須修改配置檔案,增加要監控的主機和服務,下面將詳細介紹。

  • 預設配置檔案介紹

    Nagios 安裝完畢後,預設的配置檔案在/usr/local/nagios/etc目錄下。
    每個檔案或目錄含義如下表所示:

    檔名或目錄名        用途
    cgi.cfg                控制CGI訪問的配置檔案
    nagios.cfg             Nagios 主配置檔案
    resource.cfg           變數定義檔案,又稱為資原始檔,在些檔案中定義變數,以便由其他配置檔案引用,如$USER1$
    objects objects        是一個目錄,在此目錄下有很多配置檔案模板,用於定義Nagios 物件
    objects/commands.cfg   命令定義配置檔案,其中定義的命令可以被其他配置檔案引用
    objects/contacts.cfg   定義聯絡人和聯絡人組的配置檔案
    objects/localhost.cfg  定義監控本地主機的配置檔案
    objects/printer.cfg    定義監控印表機的一個配置檔案模板,預設沒有啟用此檔案
    objects/switch.cfg     定義監控路由器的一個配置檔案模板,預設沒有啟用此檔案
    objects/templates.cfg  定義主機和服務的一個模板配置檔案,可以在其他配置檔案中引用
    objects/timeperiods.cfg 定義Nagios 監控時間段的配置檔案
    objects/windows.cfg     監控Windows 主機的一個配置檔案模板,預設沒有啟用此檔案
    
    • 配置檔案之間的關係

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

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

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

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

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

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

    • 配置Nagios

      為了能更清楚的說明問題,同時也為了維護方便,建議將nagios各個定義物件建立獨立的配置檔案:

      • 建立hosts.cfg檔案來定義主機和主機組
      • 建立services.cfg檔案來定義服務
      • 用預設的contacts.cfg檔案來定義聯絡人和聯絡人組
      • 用預設的commands.cfg檔案來定義命令
      • 用預設的timeperiods.cfg來定義監控時間段
      • 用預設的templates.cfg檔案作為資源引用檔案
    • templates.cfg檔案

      nagios主要用於監控主機資源以及服務,在nagios配置中稱為物件,為了不必重複定義一些監控物件,Nagios引入了一個模板配置檔案,將一些共性的屬性定義成模板,以便於多次引用。這就是templates.cfg的作用。

      下面詳細介紹下templates.cfg檔案中每個引數的含義:

      define contact{
      namegeneric-contact;    聯絡人名稱
      service_notification_period 24x7;    當服務出現異常時,傳送通知的時間段,這個時間段"24x7"在timeperiods.cfg檔案中定義
      host_notification_period24x7;    當主機出現異常時,傳送通知的時間段,這個時間段"24x7"在timeperiods.cfg檔案中定義
      service_notification_optionsw,u,c,r;    這個定義的是“通知可以被髮出的情況”。w即warn,表示警告狀態,u即unknown,表示不明狀態;
                                            ; c即criticle,表示緊急狀態,r即recover,表示恢復狀態;
                                            ; 也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復狀態時都發送通知給使用者。
      host_notification_options   d,u,r     ; 定義主機在什麼狀態下需要傳送通知給使用者,d即down,表示宕機狀態;
                                            ; u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態。
      service_notification_commands   notify-service-by-email 
                                            ; 服務故障時,傳送通知的方式,可以是郵件和簡訊,這裡傳送的方式是郵件;
                                            ; 其中“notify-service-by-email”在commands.cfg檔案中定義。
      host_notification_commands  notify-host-by-email
                                            ; 主機故障時,傳送通知的方式,可以是郵件和簡訊,這裡傳送的方式是郵件;
                                            ; 其中“notify-host-by-email”在commands.cfg檔案中定義。 
      register0; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
      }
      define host{
      namegeneric-host; 主機名稱,這裡的主機名,並不是直接對應到真正機器的主機名;
                                            ; 乃是對應到在主機配置檔案裡所設定的主機名。
      notifications_enabled   1   ; Host notifications are enabled
      event_handler_enabled   1   ; Host event handler is enabled
      flap_detection_enabled  1   ; Flap detection is enabled
      failure_prediction_enabled  1   ; Failure prediction is enabled
      process_perf_data   1   ; 其值可以為0或1,其作用為是否啟用Nagios的資料輸出功能;
                                            ; 如果將此項賦值為1,那麼Nagios就會將收集的資料寫入某個檔案中,以備提取。
      retain_status_information   1   ; Retain status information across program restarts
      retain_nonstatus_information1   ; Retain non-status information across program restarts
      notification_period 24x7; 指定“傳送通知”的時間段,也就是可以在什麼時候傳送通知給使用者。
      register0   ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
      }
      define host{
      namelinux-server; 主機名稱
      use generic-host; use表示引用,也就是將主機generic-host的所有屬性引用到linux-server中來;
                                            ; 在nagios配置中,很多情況下會用到引用。
      check_period24x7; 這裡的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 24x7
                                            ; 主機故障時,傳送通知的時間範圍,其中“workhours”在timeperiods.cfg中進行了定義;
                                             ; 下面會陸續講到。
      notification_interval   10  ; 在主機出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘;
      ; 如果你覺得,所有的事件只需要一次通知就夠了,可以把這裡的選項設為0
      notification_optionsd,u,r   ; 定義主機在什麼狀態下可以傳送通知給使用者,d即down,表示宕機狀態;
      ; u即unreachable,表示不可到達狀態;
      ; r即recovery,表示重新恢復狀態。
      contact_groups  ts  ; 指定聯絡人組,這個“admins”在contacts.cfg檔案中定義。
      register0   ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
      }
      define host{
      namewindows-server  ; The name of this host template
      use generic-host; Inherit default values from the generic-host template
      check_period24x7; By default, Windows servers are monitored round the clock
      check_interval  5   ; Actively check the server every 5 minutes
      retry_interval  1   ; Schedule host check retries at 1 minute intervals
      max_check_attempts  10  ; Check each server 10 times (max)
      check_command   check-host-alive; Default command to check if servers are "alive"
      notification_period 24x7; Send notification out at any time - day or night
      notification_interval   10  ; Resend notifications every 30 minutes
      notification_optionsd,r ; Only send notifications for specific host states
      contact_groups  ts  ; Notifications get sent to the admins by default
      hostgroups  windows-servers ; Host groups that Windows servers should be a member of
      register0   ; DONT REGISTER THIS - ITS JUST A TEMPLATE
      }
      define service{
      namegeneric-service ; 定義一個服務名稱
      active_checks_enabled   1   ; Active service checks are enabled
      passive_checks_enabled  1   ; Passive service checks are enabled/accepted
      parallelize_check   1   ; Active service checks should be parallelized;
      ; (disabling this can lead to major performance problems)
      obsess_over_service 1   ; We should obsess over this service (if necessary)
      check_freshness 0   ; Default is to NOT check service 'freshness'
      notifications_enabled   1   ; Service notifications are enabled
      event_handler_enabled   1   ; Service event handler is enabled
      flap_detection_enabled  1   ; Flap detection is enabled
      failure_prediction_enabled  1   ; Failure prediction is enabled
      process_perf_data   1   ; Process performance data
      retain_status_information   1   ; Retain status information across program restarts
      retain_nonstatus_information1   ; Retain non-status information across program restarts
      is_volatile 0   ; The service is not volatile
      check_period24x7 ; 這裡的check_period告訴nagios檢查服務的時間段。
      max_check_attempts  3; nagios對服務的最大檢查次數。
      normal_check_interval   5; 此選項是用來設定服務檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間;
       ; 這裡是5分鐘。
      retry_check_interval2; 重試檢查時間間隔,單位是分鐘。
      contact_groups  ts   ; 指定聯絡人組
      notification_optionsw,u,c,r  ; 這個定義的是“通知可以被髮出的情況”。w即warn,表示警告狀態;
       ; u即unknown,表示不明狀態;
       ; c即criticle,表示緊急狀態,r即recover,表示恢復狀態;
       ; 也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復後都發送通知給使用者。
      notification_interval   10   ; Re-notify about service problems every hour
      notification_period 24x7 ; 指定“傳送通知”的時間段,也就是可以在什麼時候傳送通知給使用者。
      register0; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
      }
      define service{
      namelocal-service   ; The name of this service template
      use generic-service ; Inherit default values from the generic-service definition
      max_check_attempts  4 ; Re-check the service up to 4 times in order to determine its final (hard) state
      normal_check_interval   5 ; Check the service every 5 minutes under normal conditions
      retry_check_interval1 ; Re-check the service every minute until a hard state can be determined
      register0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
      }
      
    • resource.cfg檔案

      resource.cfg是nagios的變數定義檔案,檔案內容只有一行:
      $USER1$=/usr/local/nagios/libexec

    其中,變數USER1指定了安裝nagios外掛的路徑,如果把外掛安裝在了其它路徑,只需在這裡進行修改即可。需要注意的是,變數必須先定義,然後才能在其它配置檔案中進行引用。

    • commands.cfg檔案

    此檔案預設是存在的,無需修改即可使用,當然如果有新的命令需要加入時,在此檔案進行新增即可。

    #notify-host-by-email命令的定義 
    define command{
    command_namenotify-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$ #命令具體的執行方式。
    }
    #notify-service-by-email命令的定義 
    define command{
    command_namenotify-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\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
    }
    #check-host-alive命令的定義
    define command{
    command_namecheck-host-alive #命令名稱,用來檢測主機狀態。
    command_line$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.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”說明每次探測傳送一個包。
    }
    define command{
    command_namecheck_local_disk
    command_line$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$#$ARG1$是指在呼叫這個命令的時候,命令後面的第一個引數。
    }
    define command{
    command_namecheck_local_load
    command_line$USER1$/check_load -w $ARG1$ -c $ARG2$
    }
    define command{
    command_namecheck_local_procs
    command_line$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
    }
    define command{
    command_namecheck_local_users
    command_line$USER1$/check_users -w $ARG1$ -c $ARG2$
    }
    define command{
    command_namecheck_local_swap
    command_line$USER1$/check_swap -w $ARG1$ -c $ARG2$
    }
    define command{
    command_namecheck_ftp
    command_line$USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
    }
    define command{
    command_namecheck_http
    command_line$USER1$/check_http -I $HOSTADDRESS$ $ARG1$
    }
    define command{
    command_namecheck_ssh
    command_line$USER1$/check_ssh $ARG1$ $HOSTADDRESS$
    }
    define command{
    command_namecheck_ping
    command_line$USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
    }
    define command{
    command_namecheck_nt
    command_line$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
    }
    
    • hosts.cfg檔案

    此檔案預設不存在,需要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性資訊,根據實驗目標配置如下:

    define host{   
    use linux-server  #引用主機linux-server的屬性資訊,linux-server主機在templates.cfg檔案中進行了定義。
    host_name   Nagios-Linux  #主機名
    alias   Nagios-Linux  #主機別名
    address 192.168.1.111 #被監控的主機地址,這個地址可以是ip,也可以是域名。
    }   
    #定義一個主機組   
    define hostgroup{  
    hostgroup_name  bsmart-servers#主機組名稱,可以隨意指定。
    alias   bsmart servers#主機組別名
    members Nagios-Linux  #主機組成員,其中“Nagios-Linux”就是上面定義的主機。 
    }
    

    注意:在/usr/local/nagios/etc/objects 下預設有localhost.cfg 和windows.cfg 這兩個配置檔案,localhost.cfg 檔案是定義監控主機本身的,windows.cfg 檔案是定義windows 主機的,其中包括了對host 和相關services 的定義。所以在本次實驗中,將直接在localhost.cfg 中定義監控主機(Nagios-Server),在windows.cfg中定義windows 主機(Nagios-Windows)。根據自己的需要修改其中的相關配置,詳細如下:

    • localhost.cfg

      define host{
      use linux-server; Name of host template to use
      ; This host definition will inherit all variables that are defined
      ; in (or inherited by) the linux-server host template definition.
      host_name   Nagios-Server
      alias   Nagios-Server
      address 127.0.0.1
      }
      define hostgroup{
      hostgroup_name  linux-servers ; The name of the hostgroup
      alias   Linux Servers ; Long name of the group
      members Nagios-Server ; Comma separated list of hosts that belong to this group
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description PING
      check_command   check_ping!100.0,20%!500.0,60%
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description Root Partition
      check_command   check_local_disk!20%!10%!/
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description Current Users
      check_command   check_local_users!20!50
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description Total Processes
      check_command   check_local_procs!250!400!RSZDT
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description Current Load
      check_command   check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description Swap Usage
      check_command   check_local_swap!20!10
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description SSH
      check_command   check_ssh
      notifications_enabled   0
      }
      define service{
      use local-service ; Name of service template to use
      host_name   Nagios-Server
      service_description HTTP
      check_command   check_http
      notifications_enabled   0
      }
      
    • windows.cfg

      define host{
      use windows-server  ; Inherit default values from a template
      host_name   Nagios-Windows  ; The name we're giving to this host
      alias   My Windows Server   ; A longer name associated with the host
      address 192.168.1.113   ; IP address of the host
      }
      define hostgroup{
      hostgroup_name  windows-servers ; The name of the hostgroup
      alias   Windows Servers ; Long name of the group
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description NSClient++ Version
      check_command   check_nt!CLIENTVERSION
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description Uptime
      check_command   check_nt!UPTIME
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description CPU Load
      check_command   check_nt!CPULOAD!-l 5,80,90
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description Memory Usage
      check_command   check_nt!MEMUSE!-w 80 -c 90
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description C:\ Drive Space
      check_command   check_nt!USEDDISKSPACE!-l c -w 80 -c 90
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description W3SVC
      check_command   check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
      }
      define service{
      use generic-service
      host_name   Nagios-Windows
      service_description Explorer
      check_command   check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
      }
      
    • services.cfg檔案

    此檔案預設也不存在,需要手動建立,services.cfg檔案主要用於定義監控的服務和主機資源,例如監控http服務、ftp服務、主機磁碟空間、主機系統負載等等。Nagios-Server 和Nagios-Windows 相關服務已在相應的配置檔案中定義,所以這裡只需要定義Nagios-Linux 相關服務即可,這裡只定義一個檢測是否存活的服務來驗證配置檔案的正確性,其他服務的定義將在後面講到。

            define service{  
            use local-service  #引用local-service服務的屬性值,local-service在templates.cfg檔案中進行了定義。
            host_name   Nagios-Linux   #指定要監控哪個主機上的服務,“Nagios-Server”在hosts.cfg檔案中進行了定義。
            service_description check-host-alive   #對監控服務內容的描述,以供維護人員參考。
            check_command   check-host-alive   #指定檢查的命令。
            }  
    
    • contacts.cfg檔案

contacts.cfg是一個定義聯絡人和聯絡人組的配置檔案,當監控的主機或者服務出現故障,nagios會通過指定的通知方式(郵件或者簡訊)將資訊發給這裡指定的聯絡人或者使用者。

    define contact{
            contact_name                    David             #聯絡人的名稱,這個地方不要有空格
            use                             generic-contact   #引用generic-contact的屬性資訊,其中“generic-contact”在templates.cfg檔案中進行定義
            alias                           Nagios Admin
            email                           [email protected]
            }

    define contactgroup{
            contactgroup_name       ts                              #聯絡人組的名稱,同樣不能空格
            alias                   Technical Support               #聯絡人組描述
            members                 David                           #聯絡人組成員,其中“david”就是上面定義的聯絡人,如果有多個聯絡人則以逗號相隔
            }
  • 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  
    thursday00:00-24:00  
    friday  00:00-24:00  
    saturday00: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  
    thursday09:00-17:00  
    friday  09:00-17:00  
    }
    
  • cgi.cfg檔案
    此檔案用來控制相關cgi指令碼,如果想在nagios的web監控介面執行cgi指令碼,例如重啟nagios程序、關閉nagios通知、停止nagios主機檢測等,這時就需要配置cgi.cfg檔案了。
    由於nagios的web監控介面驗證使用者為david,所以只需在cgi.cfg檔案中新增此使用者的執行許可權就可以了,需要修改的配置資訊如下:

    default_user_name=david
    authorized_for_system_information=nagiosadmin,david  
    authorized_for_configuration_information=nagiosadmin,david  
    authorized_for_system_commands=david
    authorized_for_all_services=nagiosadmin,david  
    authorized_for_all_hosts=nagiosadmin,david
    authorized_for_all_service_commands=nagiosadmin,david  
    authorized_for_all_host_commands=nagiosadmin,david
    
  • nagios.cfg檔案
    nagios.cfg預設的路徑為/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置檔案,所有的物件配置檔案都必須在這個檔案中進行定義才能發揮其作用,這裡只需將物件配置檔案在Nagios.cfg檔案中進行引用即可。

    log_file=/usr/local/nagios/var/nagios.log  # 定義nagios日誌檔案的路徑
    cfg_file=/usr/local/nagios/etc/objects/commands.cfg# “cfg_file”變數用來引用物件配置檔案,如果有更多的物件配置檔案,在這裡依次新增即可。
    cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
    cfg_file=/usr/local/nagios/etc/objects/services.cfg
    cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
    cfg_file=/usr/local/nagios/etc/objects/templates.cfg
    cfg_file=/usr/local/nagios/etc/objects/localhost.cfg   # 本機配置檔案
    cfg_file=/usr/local/nagios/etc/objects/windows.cfg # windows 主機配置檔案
    object_cache_file=/usr/local/nagios/var/objects.cache  # 該變數用於指定一個“所有物件配置檔案”的副本檔案,或者叫物件緩衝檔案
    precached_object_file=/usr/local/nagios/var/objects.precache
    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  # 該變數用於設定是否允許nagios在web監控介面執行cgi命令;
       # 也就是是否允許nagios在web介面下執行重啟nagios、停止主機/服務檢查等操作;
       # “1”為執行,“0”為不允許。
    command_check_interval=10s # 該變數用於設定nagios對外部命令檢測的時間間隔,如果指定了一個數字加一個"s"(如10s);
       # 那麼外部檢測命令的間隔是這個數值以秒為單位的時間間隔;
       # 如果沒有用"s",那麼外部檢測命令的間隔是以這個數值的“時間單位”的時間間隔。
    interval_length=60 # 該變數指定了nagios的時間單位,預設值是60秒,也就是1分鐘;
       # 即在nagios配置中所有的時間單位都是分鐘。
    
    • 驗證Nagios 配置檔案的正確性
      Nagios 在驗證配置檔案方面做的非常到位,只需通過一個命令即可完成:

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

Nagios提供的這個驗證功能非常有用,在錯誤資訊中通常會打印出錯誤的配置檔案以及檔案中的哪一行,這使得nagios的配置變得非常容易,報警資訊通常是可以忽略的,因為一般那些只是建議性的。
看到上面這些資訊就說明沒問題了,然後啟動Nagios 服務。

  • Nagios的啟動與停止

A. 啟動Nagios

a. 通過初始化指令碼啟動nagios

            # /etc/init.d/nagios start
            or
            # service nagios start

b. 手工方式啟動nagios

通過nagios命令的“-d”引數來啟動nagios守護程序:

# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

B.重啟Nagios

當修改了配置檔案讓其生效時,需要重啟/過載Nagios服務。

a. 通過初始化指令碼來重啟nagios

    # /etc/init.d/nagios reload
    or
    # /etc/init.d/nagios restart
    or
    # service nagios restart

b. 通過web監控頁重啟nagios

可以通過web監控頁的 “Process Info” -> “Restart the Nagios process”來重啟nagios
c. 手工方式平滑重啟

# kill -HUP <nagios_pid>

C 停止Nagios

a. 通過初始化指令碼關閉nagios服務

# /etc/init.d/nagios stop
or
# service nagios stop

b. 通過web監控頁停止nagios

可以通過web監控頁的 “Process Info” -> “Shutdown the Nagios process”來停止nagios
c. 手工方式停止Nagios

# kill <nagios_pid>
  • 檢視初步配置情況

B 點選左面的Current Status -> Hosts 可以看到所定義的三臺主機已經全部UP了。

C 點選Current Status -> Services 檢視服務監控情況。
看到Nagios-Linux和Nagios-Server的服務狀態已經OK了,但是Nagios-Windows的服務狀態為CRITICAL,Status Information 提示Connection refused。因為Nagios-Windows上還未安裝外掛,內部服務還無法檢視,所以出現這種情況。將在下面具體講解。

  • 利用NRPE監控遠端Linux上的“本地資訊”

上面已經對遠端Linux 主機是否存活做了監控,而判斷遠端機器是否存活,我們可以使用ping 工具對其監測。還有一些遠端主機服務,例如ftp、ssh、http,都是對外開放的服務,即使不用Nagios,我們也可以試的出來,隨便找一臺機器看能不能訪問這些服務就行了。但是對於像磁碟容量,cpu負載這樣的“本地資訊”,Nagios只能監測自己所在的主機,而對其他的機器則顯得有點無能為力。畢竟沒得到被控主機的適當許可權是不可能得到這些資訊的。為了解決這個問題,nagios有這樣一個附加元件–“NRPE”,用它就可以完成對Linux 型別主機”本地資訊”的監控。
A NRPE 工作原理

NRPE 總共由兩部分組成:
check_nrpe 外掛,位於監控主機上
NRPE daemon,執行在遠端的Linux主機上(通常就是被監控機)
按照上圖,整個的監控過程如下:

當Nagios 需要監控某個遠端Linux 主機的服務或者資源情況時:

Nagios 會執行check_nrpe 這個外掛,告訴它要檢查什麼;
check_nrpe 外掛會連線到遠端的NRPE daemon,所用的方式是SSL;
NRPE daemon 會執行相應的Nagios 外掛來執行檢查;
NRPE daemon 將檢查的結果返回給check_nrpe 外掛,外掛將其遞交給nagios做處理。
注意:NRPE daemon 需要Nagios 外掛安裝在遠端的Linux主機上,否則,daemon不能做任何的監控。

B 在被監控機(Nagios-Linux)上

a. 增加使用者&設定密碼

# useradd nagios

# passwd nagios

b. 安裝Nagios 外掛

# tar zxvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# ./configure --prefix=/usr/local/nagios
# make && make install

這一步完成後會在/usr/local/nagios/下生成三個目錄include、libexec和share。

修改目錄許可權

# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec

c. 安裝NRPE

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
# tar zxvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all

接下來安裝NPRE外掛,daemon和示例配置檔案。

c.1 安裝check_nrpe 這個外掛

# make install-plugin

監控機需要安裝check_nrpe 這個外掛,被監控機並不需要,我們在這裡安裝它只是為了測試目的。

c.2 安裝deamon

# make install-daemon

c.3 安裝配置檔案

# make install-daemon-config

現在再檢視nagios 目錄就會發現有5個目錄了
按照安裝文件的說明,是將NRPE deamon作為xinetd下的一個服務執行的。在這樣的情況下xinetd就必須要先安裝好,不過一般系統已經預設安裝了。

d. 安裝xinted 指令碼

# make install-xinetd

可以看到建立了這個檔案/etc/xinetd.d/nrpe。

編輯這個指令碼:
在only_from 後增加監控主機的IP地址。

編輯/etc/services 檔案,增加NRPE服務

重啟xinted 服務

# service xinetd restart

檢視NRPE 是否已經啟動
可以看到5666埠已經在監聽了。

e. 測試NRPE是否則正常工作

使用上面在被監控機上安裝的check_nrpe 這個外掛測試NRPE 是否工作正常。

# /usr/local/nagios/libexec/check_nrpe -H localhost

會返回當前NRPE的版本
也就是在本地用check_nrpe連線nrpe daemon是正常的。

注:為了後面工作的順利進行,注意本地防火牆要開啟5666能讓外部的監控機訪問。

f. check_nrpe 命令用法

檢視check_nrpe 命令用法

# /usr/local/nagios/libexec/check_nrpe –h

可以看到用法是:

check_nrpe –H 被監控的主機 -c 要執行的監控命令

注意:-c 後面接的監控命令必須是nrpe.cfg 檔案中定義的。也就是NRPE daemon只執行nrpe.cfg中所定義的命令。

g. 檢視NRPE的監控命令

# cd /usr/local/nagios/etc

# cat nrpe.cfg |grep -v "^#"|grep -v "^$"
[[email protected] etc]# cat nrpe.cfg |grep -v "^#"|grep -v "^$"
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=127.0.0.1

dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
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_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 
[[email protected] etc]#

紅色部分是命令名,也就是check_nrpe 的-c 引數可以接的內容,等號 “=” 後面是實際執行的外掛程式(這與commands.cfg 中定義命令的形式十分相似,只不過是寫在了一行)。也就是說check_users 就是等號後面/usr/local/nagios/libexec/check_users -w 5 -c 10 的簡稱。

我們可以很容易知道上面這5行定義的命令分別是檢測登陸使用者數,cpu負載,sda1的容量,殭屍程序,總程序數。各條命令具體的含義見外掛用法(執行“外掛程式名 –h”)。

由於-c 後面只能接nrpe.cfg 中定義的命令,也就是說現在我們只能用上面定義的這五條命令。我們可以在本機實驗一下。
http://images.cnitblog.com/blog/370046/201302/02162617-1c0b8b7a4b554f58903459594c7c1e5c.jpg“/>

C 在監控主機(Nagios-Server)上

之前已經將Nagios執行起來了,現在要做的事情是:

安裝check_nrpe 外掛;
在commands.cfg 中建立check_nrpe 的命令定義,因為只有在commands.cfg 中定義過的命令才能在services.cfg 中使用;
建立對被監控主機的監控專案;
a 安裝check_nrpe 外掛

        # tar zxvf nrpe-2.13.tar.gz 
        # cd nrpe-2.13
        # ./configure
        # make all
        # make install-plugin

只執行這一步就行了,因為只需要check_nrpe外掛。

在Nagios-Linux 上我們已經裝好了nrpe,現在我們測試一下監控機使用check_nrpe 與被監控機執行的nrpe daemon之間的通訊。

看到已經正確返回了NRPE的版本資訊,說明一切正常。

b 在commands.cfg中增加對check_nrpe的定義

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

在最後面增加如下內容:

意義如下:

‘check_nrpe’ command definition

define command{
command_namecheck_nrpe # 定義命令名稱為check_nrpe,在services.cfg中要使用這個名稱.
command_lineUSER1/check_nrpe -H HOSTADDRESS -c ARG1 #這是定義實際執行的外掛程式.

這個命令列的書寫要完全按照check_nrpe這個命令的用法,不知道用法的就用check_nrpe –h檢視.

}

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

9.3.3 定義對Nagios-Linux 主機的監控

下面就可以在services.cfg 中定義對Nagios-Linux 主機的監控了。

define service{
use local-service
host_name   Nagios-Linux
service_description Current Load
check_command   check_nrpe!check_load
}

define service{
use local-service
host_name   Nagios-Linux
service_description Check Disk sda1
check_command   check_nrpe!check_sda1
}

define service{
use local-service
host_name   Nagios-Linux
service_description Total Processes
check_command   check_nrpe!check_total_procs
}

define service{
use local-service
host_name   Nagios-Linux
service_description Current Users
check_command   check_nrpe!check_users
}

define service{
use local-service
host_name   Nagios-Linux
service_description Check Zombie Procs
check_command   check_nrpe!check_zombie_procs
}

還有一個任務是要監控Nagios-Linux 的swap 使用情況。但是在nrpe.cfg 中預設沒有定義這個監控功能的命令。怎麼辦?手動在nrpe.cfg 中新增,也就是自定義NRPE命令。

現在我們要監控swap 分割槽,如果空閒空間小於20%則為警告狀態 -> warning;如果小於10%則為嚴重狀態 -> critical。我們可以查得需要使用check_swap外掛,完整的命令列應該是下面這樣。

# /usr/local/nagios/libexec/check_swap -w 20% -c 10%

在被監控機(Nagios-Linux)上增加check_swap 命令的定義

# vi /usr/local/nagios/etc/nrpe.cfg

增加下面這一行

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

我們知道check_swap 現在就可以作為check_nrpe 的-c 的引數使用了

修改了配置檔案,當然要重啟。

如果你是以獨立的daemon執行的nrpe,那麼需要手動重啟;如果你是在xinetd 下面執行的,則不需要。

由於本實驗中nrpe 是xinetd 下執行的,所以不需要重啟服務。

在監控機(Nagios-Server)上增加這個check_swap 監控專案

define service{
use local-service
host_name   Nagios-Linux
service_description Check Swap
check_command   check_nrpe!check_swap
}

同理,Nagios-Linux 上我還開啟了http 服務,需要監控一下,按照上面的做法,在被監控機(Nagios-Linux)上增加check_http 命令的定義

# vi /usr/local/nagios/etc/nrpe.cfg

增加下面這一行

command[check_http]=/usr/local/nagios/libexec/check_http -I 127.0.0.1

在監控機(Nagios-Server)上增加check_http 監控專案

define service{
use local-service
host_name   Nagios-Linux
service_description HTTP
check_command   check_nrpe!check_http
}

所有的配置檔案已經修改好了,現在重啟Nagios。

# service nagios restart


可以看到,對於Nagios-Server 和Nagios-Linux 上的相關服務的監控已經成功了,還有Nagios-Windows 上的服務還沒有定義,下面講到。

  • 利用NSClient++監控遠端Windows上的“本地資訊”

在Nagios的libexec下有check_nt這個外掛,它就是用來檢查windows機器的服務的。其功能類似於check_nrpe。不過還需要搭配另外一個軟體NSClient++,它則類似於NRPE。

NSClient++的原理如下圖

可以看到NSClient與nrpe最大的區別就是:

被監控機上安裝有nrpe,並且還有外掛,最終的監控是由這些外掛來進行的。當監控主機將監控請求發給nrpe後,nrpe呼叫外掛來完成監控。
NSClient++則不同,被監控機上只安裝NSClient,沒有任何的外掛。當監控主機將監控請求發給NSClient++後,NSClient直接完成監控,所有的監控是由NSClient完成的。
這也說明了NSClient++的一個很大的問題:不靈活、沒有可擴充套件性。它只能完成自己本身包含的監控操作,不能由一些外掛來擴充套件。好在NSClient++已經做的不錯了,基本上可以完全滿足我們的監控需求。

a 安裝NSClient++

解壓到C盤根目錄。

開啟cmd 切換到c:\NSClient++-0.2.7

執行nsclient++ /install 進行安裝

執行nsclient++ SysTray (注意大小寫),這一步是安裝系統托盤,時間稍微有點長。
在執行裡面輸入services.msc 開啟“服務”
看到下圖就說明NSClient服務已經安裝上了

雙擊開啟,點“登入”標籤,在“允許服務與桌面互動”前打勾。

編輯c:\NSClient++-0.2.7下的NSC.ini檔案。

將 [modules]部分的所有模組前面的註釋都去掉,除了CheckWMI.dll 和 RemoteConfiguration.dll 這兩個。

在[Settings]部分設定’password’選項來設定密碼,作用是在nagios連線過來時要求提供密碼。這一步是可選的,我這裡設定為’123456’。

將[Settings]部分’allowed_hosts’選項的註釋去掉,並且加上執行nagios的監控主機的IP。各IP之間以逗號相隔。這個地方是支援子網的,如果寫成192.168.1.0/24則表示該子網內的所有機器都可以訪問。如果這個地方是空白則表示所有的主機都可以連線上來。

注意是[Settings]部分的,因為[NSClient]部分也有這個選項。

必須保證[NSClient]的’port’選項並沒有被註釋,並且它的值是’12489’,這是NSClient的預設監聽埠。

在cmd 中執行nsclient++ /start啟動服務,注意所在目錄是c:\NSClient++-0.2.7
這時在桌面右下角的系統托盤處會出現一個黃色的M字樣的圖示

檢視服務

已經正常啟動了。

注意服務預設設的是“自動”,也就是說是開機自動啟動的。

在cmd 裡面執行netstat –an 可以看到已經開始監聽tcp的12489埠了。
這樣外部就可以訪問了嗎?

錯!

防火牆也要開啟tcp的12489埠,否則nagios 檢查此服務的時候會報錯。

這樣被監控機的配置就搞定了,它就等待nagios 發出某個監控請求,然後它執行請求將監控的結果發回到nagios監控主機上。

之前已經在監控主機(Nagios-Server)上對Windows 主機的監控做了配置,但是commands.cfg 中預設沒有設定密碼項,所以要修改一下,增加”-s 123456”,如下:

    # 'check_nt' command definition
    define command{
    command_namecheck_nt
    command_line$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 123456 -v $ARG1$ $ARG2$
    }

現在開啟Nagios Web監控頁便可檢視到相關資訊了。

可以看到有錯誤:NSClient - ERROR: PDH Collection thread not running.

Google 一下,是由於作業系統語言的問題,好像NSClient 預設支援的語言並不多,具體可以百度一下。

檢視NSClient的日誌C:\NSClient++-0.2.7\nsclient.log,資訊如下:

2013-02-02 22:05:30: error:.\PDHCollector.cpp:98: You need to manually configure performance counters!

需要手動配置performance counters。

開啟C:\NSClient++-0.2.7\counters.defs檔案,複製檔案裡面”English US”那部分內容,貼上到counters.defs 檔案的最後,修改Description = “Chinese”。

修改完之後,在mmc中重啟NSClient 服務。

然後檢視日誌,內容如下:

執行成功,但是W3SVC服務為Unknown 狀態。查資料,需要開啟Windows 的IIS服務。

開啟“控制面板”進行安裝。

安裝完畢後,再到Nagios Web監控頁檢視,全部監控正常。

  • agios郵件報警的配置

a 安裝sendmail 元件

首先要確保sendmail 相關元件的完整安裝,我們可以使用如下的命令來完成sendmail 的安裝:

yum install -y sendmail*

然後重新啟動sendmail服務:

service sendmail restart

然後傳送測試郵件,驗證sendmail的可用性:

echo “Hello World” | mail [email protected]

b 郵件報警的配置

在上面我們已經簡單配置過了/usr/local/nagios/etc/objects/contacts.cfg 檔案,Nagios 會將報警郵件傳送到配置檔案裡的E-mail 地址。

c Nagios 通知

PROBLEM


Linux下Nagios安裝配置完畢。

參考資料

相關推薦

nagios 安裝部署試驗

RH5.3 + VMware +Nagios 11 + 環境 虛擬機器vmware + 作業系統 linux rh5.3 步驟 rpm -q gcc glibc glibc-common gd gd-devel xinetd openss

Nagios安裝部署與Cacti整合文件超精細版本

Nagios安裝部署與Cacti整合文件 系統環境:CentOS5.4 文件版本:V2.0.1 整理:Kevin 更新時間:2011-05-31 備註:運維專用 Nagios是一款開源的免費網路監視工具,其功能強大,靈活性強。能有效監控Windows、L

Nagios插件Nagiosgraph安裝部署

nagios perl cpan nagiosgraph Nagios是比較常用的一款開源監控軟件,Nagios靈活輕便使得在使用時可以根據自己的實際情況靈活運用,但是Nagios有一個缺點是對繪圖做的不夠完善,所以在對監控數據用來做分析時Nagios就有短板了。不過因為Nagios的靈活

fuel6.0安裝部署

信息 記錄 修改 ont pan compute spl auto 網絡配置   在經過一系列安裝openstack方式後,個人覺得fuel的安裝方式相對簡易,接下來記錄下安裝部署fuel6.0的過程。本教程適合想把fuel6.0部署後,雲主機需要連接外網的需求。   安裝

【原創 Spark動手實踐 1】Hadoop2.7.3安裝部署實際動手

dmi 遠程 nag proc host 一個 error img 連接 目錄: 第一部分:操作系統準備工作:   1. 安裝部署CentOS7.3 1611   2. CentOS7軟件安裝(net-tools, wget, vim等)   3. 更新CentOS

LNP 安裝部署

lnp一、安裝nginx1.安裝依賴包:yum install openssl openssl-devel pcre GeoIP perl-devel perl perl-ExtUtils-Embed GeoIP-devel libatomic libatomic_ops-devel2.安裝zlibtar -

Unity3D中tolua的“安裝部署和使用“教程

替換 部署 ref 比對 text asset gin 系統 .com 棄坑Cocos2d-x,轉戰Unity3D 考慮到項目一定會使用熱更,花了不少時間比對了lua的支持方案,最後定為tolua,原因不解釋。 俗話說,萬事開頭難,中間難,最後難……我反正是沒有找到如何安裝

hadoop分布式安裝部署具體視頻教程(網盤附配好環境的CentOS虛擬機文件/hadoop配置文件)

down hdf lan nag home 開機啟動 prop baidu ifcfg-eth 參考資源下載:http://pan.baidu.com/s/1ntwUij3視頻安裝教程:hadoop安裝.flvVirtualBox虛擬機:hadoop.part1-part

Confluence 安裝部署

all extract pro 技術分享 create read 1-1 expr starting Confluence安裝與部署 下載安裝包及破解包 安裝包下載地址:https://www.atlassian.com/software/confluence/down

ZooKeeper安裝部署

sa0x01 簡介Zookeeper是一個很好的集群管理工具,被大量用於分布式計算。如Hadoop以及Storm系統中。Apache ZooKeeper是一個為分布式應用所設計開源協調服務,其設計目是為了減輕分布式應用程序所承擔的協調任務。可以為用戶提供同步、配置管理、分組和命名服務。0x02 環境說明在三臺

zookeeper與kafka安裝部署及java環境搭建

3.4 項目目錄 tin bytes result zxvf util ise cat 1. ZooKeeper安裝部署 本文在一臺機器上模擬3個zk server的集群安裝。 1.1. 創建目錄、解壓 cd /usr/ #創建項目目錄 mkdir zookeepe

ELK 日誌服務器安裝部署

搜索引擎 應用程序 服務器 安全性 數據源 高清原文 烏龜運維 wuguiyunwei.com簡單介紹:ELK是三個開源工具組成,簡單解釋如下:Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據

openfire 安裝部署

doc 系統啟動 clas mpp 壓縮 resource 7月 article 管理 1. openfire安裝和配置 本文介紹openfire 在linux上安裝部署過程 linux上有兩種安裝方式,一個是RPM包方式。還有一個是tar.gz壓縮包方式,

環境搭建/安裝部署

common user utf-8 opts 自動 環境搭建 leg ini min 1、M2e(maven-eclipse-plugin)插件只能在線安裝,官方地址:http://wiki.eclipse.org/M2E_updatesite_and_gittags ma

Centos7.3 Docker安裝部署學習記錄1

docker一、Docker基礎環境的安裝1. 環境說明本機采用操作系統如下: CentOS-7.3-X86-64,內核3.10 x64位,docker 1.12.x版本。 建議采用CentOS7版本或ubuntu版本,本文采用CentOS7即CentOS-7-x86_64-DVD-1611.iso版本最

FastDFS單點在 CentOS 安裝部署

fastdfs centos 單點 關於分布式文件系統FastDFS,在這裏不做過多介紹,我們直接開始安裝1.安裝 libfastcommon [[email protected]/* */ softwares]# yum -y install wget pcre pcre-devel

spark2.10安裝部署(集成hadoop2.7+)

use star temp 保存 local export per home hadoop 這裏默認你的hadoop是已經安裝好的,master是node1,slaver是node2-3,hdfs啟動在node1,yarn啟動在node2,如果沒安裝好hadoop可以看我前

MySQL二進制安裝部署

upa linux gin nologin 系統 clu path file x86 1 #使用二進制包安裝mysql 2 cp mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz /data/ 3 tar -xf

安裝部署Solrcloud

ros info vim eba 創建 boot 1.8 bin nvi 實驗說明:   三臺虛擬機做solrcloud集群 安裝solr前請確保jdk 、tomcat、zookeeper已安裝好,否則無法啟動    

Linux之安裝部署squid代理服務器

duyuheng linux squid代理服務器Linux之安裝部署squid代理服務器1、案例拓撲圖系統centos6.5 軟件sarg-2.3.7.tar.gz squid-3.4.6.tar.gz2、案例要求(1)如上圖要求配置網絡,內部linux需要配置默認網關,外部linux不需要配置默認