[轉]nagios配置詳解


 

一、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即criticle,表示緊急狀態,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.         }  
  11.  define host{   
  12.         name                            generic-host    #主機名稱,這里的主機名,並不是直接對應到真正機器的主機名,乃是對應到在主機配置文件里所設定的主機名。  
  13.         notifications_enabled           1              
  14.         event_handler_enabled           1               
  15.         flap_detection_enabled          1               
  16.         failure_prediction_enabled      1             
  17.         process_perf_data               1              
  18.         retain_status_information       1             
  19.         retain_nonstatus_information    1                
  20.         notification_period             24x7           #指定“發送通知”的時間段,也就是可以在什么時候發送通知給使用者。  
  21.         register                        0                
  22.         }  
  23.  
  24. define host{  
  25.         name                            linux-server    #主機名稱  
  26.         use                             generic-host    #use表示引用,也就是將主機generic-host的所有屬性引用到linux-server中來,在nagios配置中,很多情況下會用到引用。  
  27.         check_period                    24x7            #這里的check_period告訴nagios檢查主機的時間段  
  28.         check_interval                  5                #nagios對主機的檢查時間間隔,這里是5分鍾。  
  29.         retry_interval                  1               #重試檢查時間間隔,單位是分鍾。  
  30.         max_check_attempts              10               #nagios對主機的最大檢查次數,也就是nagios在檢查發現某主機異常時,並不馬上判斷為異常狀況,而是多試幾次,因為有可能只是一時網絡太擁擠,或是一些其他原因,讓主機受到了一點影響,這里的10就是最多試10次的意思。  
  31.         check_command                   check-host-alive  #指定檢查主機狀態的命令,其中“check-host-alive”在commands.cfg文件中定義。  
  32.         notification_period             workhours      #主機故障時,發送通知的時間范圍,其中“workhours”在timeperiods.cfg中進行了定義,下面會陸續講到。  
  33.                                                          
  34.         notification_interval           120            #在主機出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鍾。如果你覺得,所有的事件只需要一次通知就夠了,可以把這里的選項設為0  
  35.         notification_options            d,u,r          #定義主機在什么狀態下可以發送通知給使用者,d即down,表示宕機狀態,u即unreachable,表示不可到達狀態,r即recovery,表示重新恢復狀態。  
  36.         contact_groups                  admins         #指定聯系人組,這個“admins”在contacts.cfg文件中定義。  
  37.         register                        0  
  38.         }  
  39.  
  40. define service{  
  41.         name                            generic-service   #定義一個服務名稱  
  42.         active_checks_enabled           1     
  43.         passive_checks_enabled          1      
  44.         parallelize_check                1      
  45.         obsess_over_service             1      
  46.         check_freshness                0  
  47.         notifications_enabled            1                 
  48.         event_handler_enabled           1                   
  49.         flap_detection_enabled           1                    
  50.         failure_prediction_enabled        1                   
  51.         process_perf_data               1                   
  52.         retain_status_information       1                     
  53.         retain_nonstatus_information    1                        
  54.         is_volatile                     0   
  55.         check_period                    24x7      #這里的check_period告訴nagios檢查服務的時間段。              
  56.         max_check_attempts              3         #nagios對服務的最大檢查次數。           
  57.         normal_check_interval           10       #此選項是用來設置服務檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間,這里是10分鍾。   
  58.         retry_check_interval            2        #重試檢查時間間隔,單位是分鍾。            
  59.         contact_groups                  admins   #指定聯系人組,同上。              
  60.         notification_options            w,u,c,r  #這個定義的是“通知可以被發出的情況”。w即warn,表示警告狀態,u即unknown,表示不明狀態,c即criticle,表示緊急狀態,r即recover,表示恢復狀態。也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復后都發送通知給使用者。  
  61.         notification_interval           60       #在服務出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鍾。如果你認為,所有的事件只需要一次通知就夠了,可以把這里的選項設為0。  
  62.         notification_period             24x7     #指定“發送通知”的時間段,也就是可以在什么時候發送通知給使用者。               
  63.          register                        0                       
  64.         }  
  65.  


(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.         }  
  7. ?  
  8.  define host{  
  9.         use                     linux-server  
  10.         host_name              mysql  
  11.         alias                    ixdba-mysql  
  12.         address                 192.168.12.237  
  13.         }  
  14. ?  
  15.  define hostgroup{      #定義一個主機組  
  16.  hostgroup_name  sa-servers        #主機組名稱,可以隨意指定。  
  17.  alias           sa servers    #主機組別名  
  18.  members         web,mysql   #主機組成員,其中“web”、“mysql”就是上面定義的兩個主機。  
  19.  }  
  20.  


(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% #指定檢查的命令,check_ping命令在commands.cfg中定義,后跟兩個參數,命令與參數間用!分割。         
  7.         }  
  8.  
  9.  define service{  
  10.         use                             local-service  
  11.         host_name                       web  
  12.         service_description              SSH  
  13.         check_command                  check_ssh    # check_ssh命令也在commands.cfg中定義。  
  14.         }  
  15.  
  16.  define service{  
  17.         use                             local-service  
  18.         host_name                       web  
  19.         service_description              SSHD  
  20.         check_command                  check_tcp!22  
  21.         }  
  22.  


(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

 } 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM