nagios配置過程詳解

Coohx發表於2016-06-25

正在學習nagios監控,詳細學習一下配置這塊,共享一下:

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


 

2、配置檔案之間的關係
 在nagios的配置過程中涉及到的幾個定義有:主機、主機組,服務、服務組,聯絡人、聯絡人組,監控時間,監控命令等,從這些定義可以看出,nagios各個配置檔案之間是互為關聯,彼此引用的。
 成功配置出一臺nagios監控系統,必須要弄清楚每個配置檔案之間依賴與被依賴的關係,最重要的有四點:
 第一:定義監控哪些主機、主機組、服務和服務組
 第二:定義這個監控要用什麼命令實現,
 第三:定義監控的時間段,
 第四:定義主機或服務出現問題時要通知的聯絡人和聯絡人組。

 

3、開始配置nagios
 為了能更清楚的說明問題,同時也為了維護方便,建議將nagios各個定義物件建立獨立的配置檔案:
 即為:
 建立hosts.cfg檔案來定義主機和主機組
 建立services.cfg檔案來定義服務
 用預設的contacts.cfg檔案來定義聯絡人和聯絡人組
 用預設的commands.cfg檔案來定義命令
 用預設的timeperiods.cfg來定義監控時間段
 用預設的templates.cfg檔案作為資源引用檔案

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


  1.  define contact {  
  2.         name             generic-contact        #聯絡人名稱,  

  3.         service_notification_period     24x7                   #當服務出現異常時,傳送通知的時間段,這個時間段“7x24"在timeperiods.cfg檔案中定義  

  4.         host_notification_period        24x7                    #當主機出現異常時,傳送通知的時間段,這個時間段“7x24"在timeperiods.cfg檔案中定義  

  5.         service_notification_options    w,u,c,r         #這個定義的是服務“通知可以被髮出的情況”。w即warn,表示警告狀態,u即unknown,表示不明狀態,c即critical,表示緊急狀態,r即recover,表示恢復狀態。也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復狀態時都傳送通知給使用者。  

  6.         host_notification_options       d,u,r            #定義主機在什麼狀態下需要傳送通知給使用者,d即down,表示當機狀態,u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態。  

  7.         service_notification_commands   notify-service-by-email  #服務故障時,傳送通知的方式,可以是郵件和簡訊,這裡傳送的方式是郵件,其中“notify-service-by-email”在commands.cfg檔案中定義。  

  8.         host_notification_commands      notify-host-by-email     #主機故障時,傳送通知的方式,可以是郵件和簡訊,這裡傳送的方式是郵件,其中“notify-host-by-email”在commands.cfg檔案中定義。  
  9.         register         0  
  10.         }  



  1. 主機配置中各變數的含義:
  2. define host {
  3.         .........
  4.         .........
  5.         check_period            24x7            #這裡的check_period告訴nagios檢查主機的時間段  
  6.         check_interval            5                #nagios對主機的檢查時間間隔,這裡是5分鐘。  
  7.         retry_interval              1               #重試檢查時間間隔,單位是分鐘。  
  8.        
  9.        max_check_attempts         10               #nagios對主機的最大檢查次數,也就是nagios在檢查發現某主機異常時,並不馬上判斷為異常狀況,而是多試幾次,因為有可能只是一時網路太擁擠,或是一些其他原因,讓主機受到了一點影響,這裡的10就是最多試10次的意思。  
  10.         
  11.           check_command             check-host-alive  #指定檢查主機狀態的命令,其中“check-host-alive”在commands.cfg檔案中定義。  
  12.         
  13.           notification_period           7x24     #主機故障時,傳送通知的時間範圍,其中“7x24”在timeperiods.cfg中進行了定義,下面會陸續講到。 
  14.                                                          
  15.         notification_interval           120            #在主機出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你覺得,所有的事件只需要一次通知就夠了,可以把這裡的選項設為0  、
  1.         notification_options            d,u,r          #定義主機在什麼狀態下可以傳送通知給使用者,d即down,表示當機狀態,u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態。  
  2.         contact_groups                  admins         #指定聯絡人組,這個“admins”在contacts.cfg檔案中定義。  
  3.         }  
  4.  



  1. define service{  
  2.         use              generic-service  
  3.         active_checks_enabled           1     
  4.         passive_checks_enabled          1      
  5.         parallelize_check                1      
  6.         obsess_over_service             1      
  7.         check_freshness                0  
  8.         notifications_enabled            1                 
  9.         event_handler_enabled           1                   
  10.         flap_detection_enabled           1                    
  11.         failure_prediction_enabled        1                   
  12.         process_perf_data               1                   
  13.         retain_status_information       1                     
  14.         retain_nonstatus_information    1                        
  15.         is_volatile                     0   
  16.         check_period                    24x7      #這裡的check_period告訴nagios檢查服務的時間段。              
  17.         max_check_attempts              3         #nagios對服務的最大檢查次數。
  18.            
  19.         normal_check_interval           10       #此選項是用來設定服務檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間,這裡是10分鐘。   

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

  21.         contact_groups                  admins   #指定聯絡人組,同上。              

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

  23.         notification_interval           60       #在服務出現異常後,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘。如果你認為,所有的事件只需要一次通知就夠了,可以把這裡的選項設為0。
  24.   
  25.         notification_period             24x7     #指定“傳送通知”的時間段,也就是可以在什麼時候傳送通知給使用者。                              
  26.         }  
  27.  




(2)resource.cfg檔案

 resource.cfg是nagios的變數定義檔案,檔案內容只有一行:
 

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

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


(3)理解Nagios巨集及其工作機制

Nagios配置非常靈活,繼承和引用是一大特徵,另一個重要特徵就是可以在命令列的定義裡使用巨集,通過定義巨集,nagios可以靈活的獲取主機、服務和其它物件的資訊。
巨集的工作機制
在執行命令之前,nagios將對命令裡的每個巨集替換成它們應當取得的值。這種巨集替換髮生在Nagios執行各種型別的巨集時候。例如主機和服務的檢測、通知、事件處理等。
 

巨集的分類:
預設巨集、按需而成的巨集、使用者自定製巨集等。
 

預設巨集
主機IP地址巨集
當在命令定義中使用主機或服務巨集時,巨集將要執行所用的值指向主機或服務所帶有值。看下面這個例子,假定在check_ping命令定義裡使用了一個主機物件,例如這樣:

  1. define host{  
  2.   host_name               ixdba  
  3.   address   192.168.12.246  
  4.   check_command               check_ping  
  5.   ...  
  6.   }  
  7. define command{  
  8.   command_name    check_ping  
  9.   command_line    /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,90% -c 200.0,60%  
  10.   } 


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

  1. /usr/local/nagios/libexec/check_ping -H 192.168.12.246 -w 100.0,90% -c 200.0,60% 


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

  1. define service{  
  2.   host_name  linuxbox  
  3.   service_description PING  
  4.   check_command              check_ping!200.0,80%!400.0,40%  
  5.   ...  
  6.   } 


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

  1. define command{  
  2.   command_name    check_ping  
  3.   command_line    /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$  
  4.   } 


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

  1. /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$ 服務狀態描述,有w,u,c
$SERVICEDESC$   對當前服務的描述  
聯絡人巨集
$CONTACTNAME$   表示聯絡人,在聯絡人檔案中定義
通知巨集
$NOTIFICATIONTYPE$    返回下面資訊:("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT", "FLAPPINGSTART", "FLAPPINGSTOP", "FLAPPINGDISABLED", "DOWNTIMESTART", "DOWNTIMEEND", or "DOWNTIMECANCELLED").
日期/時間巨集
$LONGDATETIME$  當前的日期/時間戳
檔案巨集
$LOGFILE$  日誌檔案的儲存位置。
$MAINCONFIGFILE$  主配置檔案的儲存位置。
其他巨集
$ADMINEMAIL$  全域性的管理員EMail地址
$ARGn$  指向第n個命令傳遞引數(通知、事件處理、服務檢測等)。Nagios支援最多32個引數巨集

 

(4)commands.cfg檔案
 此檔案預設是存在的,無需修改即可使用,當然如果有新的命令需要加入時,在此檔案進行新增即可。這裡並未列出檔案的所有內容,僅僅介紹了配置中用到的一些命令。 

  1. #下面是notify-host-by-email命令的定義  
  2. define command{  
  3.         command_name    notify-host-by-email    #命令名稱,即定義了一個主機異常時傳送郵件的命令。  
  4.         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檔案中定義了。  
  5.         }  
  6. #下面是notify-host-by-email命令的定義  
  7. define command{  
  8.         command_name    notify-service-by-email   #命令名稱,即定義了一個服務異常時傳送郵件的命令  
  9.         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$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$  
  10.         }  
  11.  
  12. #下面是notify-host-by-email命令的定義  
  13.  define command{  
  14.         command_name    check-host-alive   #命令名稱,用來檢測主機狀態。  
  15.        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  
  16. ,那麼check_ping的完整路徑為/usr/local/nagios/libexec/check_ping。 “-w 3000.0,80%”中“-w”說明後面的一對值對應的是“WARNING”狀態,“80%”是其臨界值。“-c 5000.0,100%”中“-c”說明後面的一對值對應的是“CRITICAL”,“100%”是其臨界值。“-p 1”說明每次探測傳送一個包。  
  17.         }  
  18. #下面是notify-host-by-email命令的定義  
  19.  define command{  
  20.         command_name    check_ftp  
  21.         command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$    #$ARG1$是指在呼叫這個命令的時候,命令後面的第一個引數。  
  22.         }  
  23. #下面是check_http命令的定義  
  24.  define command{  
  25.         command_name    check_http  
  26.         command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$  
  27.         }  
  28. #下面是check_ssh命令的定義  
  29.  define command{  
  30.         command_name    check_ssh  
  31.         command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$  
  32.         }  
  33.  


(5) hosts.cfg檔案
 此檔案預設不存在,需要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性資訊,一個配置好的例項如下:

  1. define host{  
  2.         use                linux-server  #引用主機linux-server的屬性資訊,linux-server主機在templates.cfg檔案中進行了定義。  
  3.         host_name               web    #主機名  
  4.         alias                    ixdba-web  #主機別名  
  5.         address                 192.168.12.251  #被監控的主機地址,這個地址可以是ip,也可以是域名。  
  6.         }  

  1.  define host{  
  2.         use                     linux-server  
  3.         host_name              mysql  
  4.         alias                    ixdba-mysql  
  5.         address                 192.168.12.237  
  6.         }  

  7.   
  8.  define hostgroup{      #定義一個主機組  
  9.             hostgroup_name  sa-servers        #主機組名稱,可以隨意指定。  
  10.             alias           sa servers    #主機組別名  
  11.             members         web,mysql   #主機組成員,其中“web”、“mysql”就是上面定義的兩個主機。  
  12.  }  
  13.  


(6) services.cfg檔案
 此檔案預設也不存在,需要手動建立,services.cfg檔案主要用於定義監控的服務和主機資源,例如監控http服務、ftp服務、主機磁碟空間、主機系統負載等等。

  1. #################  ixdba   web  #####################  
  2.  define service{  
  3.         use               local-service  #引用local-service服務的屬性值,local-service在                                                                                                        templates.cfg檔案中進行了定義。  
  4.         host_name                      web  #指定要監控哪個主機上的服務,“web”在hosts.cfg檔案中進行了定義。  
  5.         service_description         PING  #對監控服務內容的描述,以供維護人員參考。  
  6.         check_command             check_ping!100.0,20%!500.0,60% 
  7.                                                 #指定檢查的命令, check_ping命令在commands.cfg中定義,後跟兩個引數,命令與引數間用!分割。         
  8.         }  
  9.  
  10.  define service{  
  11.         use                             local-service  
  12.         host_name                       web  
  13.         service_description              SSH  
  14.         check_command                  check_ssh    # check_ssh命令也在commands.cfg中定義。  
  15.         }  
  16.  
  17.  define service{  
  18.         use                             local-service  
  19.         host_name                       web  
  20.         service_description              SSHD  
  21.         check_command                  check_tcp!22  
  22.         }  
  23.  



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

  1. define contact{  
  2.         contact_name                    sasystem  #聯絡人名稱  (自定義)
  3.         use                        generic-contact #引用generic-contact的屬性資訊,其中“generic-contact”在templates.cfg檔案中進行定義  
  4.         alias                              sa-system  #聯絡人別名  (自定義)
  5.         email                          ixdba@126.com  #聯絡人的郵件地址  
  6.         }  

  7. define contactgroup {  
  8.       contactgroup_name    admins #聯絡人組名稱  
  9.       alias                system administrator group #聯絡人組描述  
  10.       members              sasystem  #聯絡人組成員,其中“sasystem”就是上面定義的聯絡人  
  11. }  
  12.  



(8) timeperiods.cfg檔案
 此檔案只用於定義監控的時間段,下面是一個配置好的例項:

  1. #下面是定義一個名為24x7的時間段,即監控所有時間段  
  2. define timeperiod{  
  3.         timeperiod_name 24x7     
  4.         alias           24 Hours A Day, 7 Days A Week  
  5.         sunday          00:00-24:00  
  6.         monday          00:00-24:00  
  7.         tuesday         00:00-24:00  
  8.         wednesday       00:00-24:00  
  9.         thursday        00:00-24:00  
  10.         friday          00:00-24:00  
  11.         saturday        00:00-24:00  
  12.         }  

  13. #下面是定義一個名為workhours的時間段,即工作時間段。  
  14. define timeperiod{  
  15.         timeperiod_name   workhours   
  16.         alias            Normal Work Hours  
  17.         monday          09:00-17:00  
  18.         tuesday         09:00-17:00  
  19.         wednesday       09:00-17:00  
  20.         thursday        09:00-17:00  
  21.         friday          09:00-17:00  
  22.         }  
  23.  


(9) cgi.cfg檔案
 此檔案用來控制相關cgi指令碼,如果想在nagios的web監控介面執行cgi指令碼,例如重啟nagios程式、關閉nagios通知、停止nagios主機檢測等,這時就需要配置cgi.cfg檔案了。
 由於nagios的web監控介面驗證使用者為ixdba,所以只需在cgi.cfg檔案中新增此使用者的執行許可權就可以了,需要修改的配置資訊如下:

  1. default_user_name=ixdba 
  2. authorized_for_system_information=nagiosadmin,ixdba  
  3. authorized_for_configuration_information=nagiosadmin,ixdba  
  4. authorized_for_system_commands=ixdba 
  5. authorized_for_all_services=nagiosadmin,ixdba  
  6. authorized_for_all_hosts=nagiosadmin,ixdba  
  7. authorized_for_all_service_commands=nagiosadmin,ixdba  
  8. authorized_for_all_host_commands=nagiosadmin,ixdba  
  9.  

(10) nagios.cfg檔案
  Nagios.cfg預設的路徑為/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置檔案,所有的物件配置檔案都必須在這個檔案中進行定義才能發揮其作用,這裡只需將物件配置檔案在Nagios.cfg檔案中進行引用即可。

  1. log_file=/usr/local/nagios/var/nagios.log  
  2. “log_file”變數用來定義nagios日誌檔案的路徑。  
  3. cfg_file=/usr/local/nagios/etc/hosts.cfg  
  4. cfg_file=/usr/local/nagios/etc/services.cfg  
  5. cfg_file=/usr/local/nagios/etc/commands.cfg  
  6. cfg_file=/usr/local/nagios/etc/contacts.cfg  
  7. cfg_file=/usr/local/nagios/etc/timeperiods.cfg  
  8. cfg_file=/usr/local/nagios/etc/templates.cfg  
  9.  “cfg_file”變數用來引用物件配置檔案,如果有更多的物件配置檔案,在這裡依次新增即可。  
  10. object_cache_file=/usr/local/nagios/var/objects.cache  
  11. 該變數用於指定一個“所有物件配置檔案”的副本檔案,或者叫物件緩衝檔案  
  12.  
  13. resource_file=/usr/local/nagios/etc/resource.cfg  
  14. 該變數用於指定nagios資原始檔的路徑,可以在Nagios.cfg中定義多個資原始檔。  

  15. status_file=/usr/local/nagios/var/status.dat  
  16. 該變數用於定義一個狀態檔案,此檔案用於儲存nagios的當前狀態、註釋和當機資訊等。  

  17. status_update_interval=10 
  18.  該變數用於定義狀態檔案(即status.dat)的更新時間間隔,單位是秒,最小更新間隔是1秒。  

  19. nagios_user=nagios  
  20. 該變數指定了Nagios程式使用哪個使用者執行。  
  21. nagios_group=nagios  
  22.  該變數用於指定Nagios使用哪個使用者組執行。  

  23. check_external_commands=1 
  24.  該變數用於設定是否允許nagios在web監控介面執行cgi命令,也就是是否允許nagios在web介面下執行重啟nagios、停止主機/服務檢查等操作。“1”為執行,“0”為不允許。  

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

  27. interval_length=60 
  28.  該變數指定了nagios的時間單位,預設值是60秒,也就是1分鐘,即在nagios配置中所有的時間單位都是分鐘。  

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

主配置檔案 nagios.cfg 需要更改的地方:
 #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
 interval_length=1 ; 間隔時間基準由 60s 改為 1s
 command_check_interval=10s ; 命令檢查時間間隔,-1 表示儘可能頻繁的進行檢查
 date_format=iso8601 ; 日期格式
 objects/contacts.cfg 用來定義聯絡人:

define contact {
 contact_name sa
 alias System Administrator
 service_notification_period 24×7
 host_notification_period 24×7
 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 admin@test.com
 } 
定義聯絡人組
define contactgroup {
 contactgroup_name admins
 alias Administrator Group
 members sa    ; 新增其它聯絡人用 “,” 分隔
 } 
主機監控的配置
define host {
 host_name host_name    ; 簡短的主機名稱。
 alias alias    ; 別名,可以更詳細的說明主機。
 address address    ; IP 地址,也可以寫主機名。如果不定義這個值, nagio 將會用 host_name 去尋找主機。
 parents host_names    ; 上一節點的名稱,也就是指從 nagios 伺服器到被監控主機之間經過的節點,可以是路由器、交換機、主機等等。
 hostgroups hostgroup_names    ; 簡短的主機組名稱。
 check_command command_name    ; 檢查命令的簡短名稱,如果此項留空, nagios 將不會去判斷主機是否 alive 。
 max_check_attempts 整數    ; 當檢查命令的返回值不是 “OK” 時,重試的次數。
 check_interval 數字    ; 迴圈檢查的間隔時間。
 active_checks_enabled [0/1]    ; 是否啟用 “active_checks”
 passive_checks_enabled [0/1]    ; 是否啟用 “passive_checks” ,及“被動檢查”
 check_period timeperiod_name    ; 檢測時間段簡短名稱,這只是個名稱,具體的時間段要寫在其他的配置檔案中。
 obsess_over_host [0/1]    ; 是否啟用主機作業系統探測。
 check_freshness [0/1]    ; 是否啟用 freshness 檢查。freshness 檢查是對於啟用被動檢查模式的主機而言的,其作用是定期檢查主機報告的狀態資訊,如果該狀態資訊已經過期,freshness 將會強制做主機檢查。
 freshness_threshold 數字     ; fressness 的臨界值,單位為秒。 如果定義為 “0″ ,則為自動定義。
 event_handler command_name    ; 當主機發生狀態改變時,採用的處理命令的簡短的名字(可以在 commands.cfg 中對其定義)
 event_handler_enabled [0/1]    ; 是否啟用 event_handler
 low_flap_threshold 數字    ; 抖動的下限值。抖動,即在一段時間內,主機(或服務)的狀態值頻繁的發生變化。
 high_flap_threshold 數字   ; 抖動的上限值。
 flap_detection_enabled [0/1]    ; 是否啟用抖動檢查。
 process_perf_data [0/1]    ; 是否啟用 processing of performance data
 retain_status_information [0/1]    ; 程式重啟時,是否保持主機狀態相關的資訊。
 retain_nonstatus_information [0/1]    ; 程式重啟時,是否保持主機狀態無關的資訊。
 contact_groups contact_groups    ; 聯絡人組,在此組中的聯絡人都會收到主機的提醒資訊。
 notification_interval 整數    ; 重複傳送提醒資訊的最短間隔時間。預設間隔時間是 “60″ 分鐘。如果這個值設定為 “0″ ,將不會傳送重複提醒。
 notification_period timeperiod_name   ; 傳送提醒的時間段。非常重要的主機(服務)定義為 24×7 ,一般的主機(服務)就定義為上班時間。如果不在定義的時間段內,無論發生什麼問題,都不會傳送提醒。
 notification_options [d,u,r,f]    ; 傳送提醒包括的情況: d = 狀態為 DOWN , u = 狀態為 UNREACHABLE , r = 狀態恢復為 OK , f = flapping
 notifications_enabled [0/1]    ; 是否開啟提醒功能。”1″ 為開啟,”0″ 為禁用。一般,這個選項會在主配置檔案 (nagios.cfg) 中定義,效果相同。
 stalking_options [o,d,u]    ; 持續狀態檢測引數,o = 持續的 UP 狀態 , d = 持續的 DOWN 狀態 , u = 持續的 UNREACHABLE 狀態
 } 



服務監控的配置

define service {
 host_name host_name
 service_description service_description
 servicegroups servicegroup_names
 is_volatile [0/1]
 check_command command_name
 max_check_attempts
 normal_check_interval
 retry_check_interval
 active_checks_enabled [0/1]
 passive_checks_enabled [0/1]
 check_period timeperiod_name
 parallelize_check [0/1]
 obsess_over_service [0/1]
 check_freshness [0/1]
 freshness_threshold
 event_handler command_name
 event_handler_enabled [0/1]
 low_flap_threshold
 high_flap_threshold
 flap_detection_enabled [0/1]
 process_perf_data [0/1]
 retain_status_information [0/1]
 retain_nonstatus_information [0/1]
 notification_interval
 notification_period timeperiod_name n
 otification_options [w,u,c,r,f]
 notifications_enabled [0/1]
 contact_groups contact_groups
 stalking_options [o,w,u,c]
 } 


服務監控的配置和主機監控的配置較為相似,就不一一說明了。 
間隔時間的計算方法為:
 normal_check_interval x interval_length 秒
 retry_check_interval x interval_length 秒
 notification_interval x interval_length 秒
 
主機監控配置的例子
define host {
 host_name web1
 alias web1
 address 192.168.0.101
 contact_groups admins
 check_command check-host-alive
 max_check_attempts 5
 notification_interval 0
 notification_period 24×7
 notification_options d,u,r
 } 
對主機 web1 進行 24×7 的監控,預設會每 10 秒檢查一次狀態,累計五次失敗就傳送提醒,並且不再重複傳送提醒。


 服務監控配置的例子 
define service {
 host_name web1
 service_description check_http
 check_period 24×7
 max_check_attempts 3
 normal_check_interval 30
 contact_groups  admins

 retry_check_interval 15
 notification_interval 3600
 notification_period 24×7
 notification_options w,u,c,r
 check_command check_http
 }
 
配置解釋: 24×7 監控 web1 主機上的 HTTP 服務,檢查間隔為 30 秒, 檢查失敗後每 15 秒再進行一次檢查,累計三次失敗就認定是故障併傳送提醒
 聯絡人組是 admins 。提醒後恢復到 30 秒一次的 normal_check_interval 檢查。如果服務仍然沒有被恢復,每個小時傳送一次提醒。
 如果要檢測其他服務,例如,要檢查 ssh 服務是否開啟,更改如下兩行:
 service_description check_ssh
 check_command check_ssh 

為方便管理,對配置檔案的分佈做了如下修改:
 nagios.cfg 中增加了:
 cfg_dir=/usr/local/nagios/etc/hosts
 cfg_dir=/usr/local/nagios/etc/services 

在 hosts 目錄中,為不同型別的主機建立了配置檔案,如: app.cfg     cache.cfg       MySQL.cfg        web.cfg 
 並建立了 hostgroup.cfg 檔案對主機進行分組,如:

define hostgroup {
 hostgroup_name  app-hosts
 alias APP Hosts
 members app1,app2
 } 


在 services 目錄中建立了各種服務的配置檔案,如: disk.cfg   http.cfg load.cfg mysql.cfg
 並建立了 servicegroup.cfg 檔案對服務進行分組,如:

define servicegroup {
 servicegroup_name disk
 alias DISK
 members cache1,check_disk,cache2,check_disk

 } 


相關文章