您好,登錄后才能下訂單哦!
以下介紹各配置文件的詳細情況
查看安裝正文請點擊此處
a. templates.cfg文件
nagios主要用于監控主機資源以及服務,在nagios配置中稱為對象,為了不必重復定義一些監控對象,Nagios引入了一個模板配置文件,將一些共性的屬性定義成模板,以便于多次引用。這就是templates.cfg的作用。
下面詳細介紹下templates.cfg文件中每個參數的含義:
define contact{ name generic-contact ; 聯系人名稱 service_notification_period 24x7 ; 當服務出現異常時,發送通知的時間段,這個時間段"24x7"在timeperiods.cfg文件中定義 host_notification_period 24x7 ; 當主機出現異常時,發送通知的時間段,這個時間段"24x7"在timeperiods.cfg文件中定義 service_notification_options w,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文件中定義。 register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE! } define host{ name generic-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_information 1 ; Retain non-status information across program restarts notification_period 24x7 ; 指定“發送通知”的時間段,也就是可以在什么時候發送通知給使用者。 register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! } 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 24x7 ; 主機故障時,發送通知的時間范圍,其中“workhours”在timeperiods.cfg中進行了定義; ; 下面會陸續講到。 notification_interval 10 ; 在主機出現異常后,故障一直沒有解決,nagios再次對使用者發出通知的時間。單位是分鐘; ; 如果你覺得,所有的事件只需要一次通知就夠了,可以把這里的選項設為0 notification_options d,u,r ; 定義主機在什么狀態下可以發送通知給使用者,d即down,表示宕機狀態; ; u即unreachable,表示不可到達狀態; ; r即recovery,表示重新恢復狀態。 contact_groups ts ; 指定聯系人組,這個“admins”在contacts.cfg文件中定義。 register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! } define host{ name windows-server ; The name of this host template use generic-host ; Inherit default values from the generic-host template check_period 24x7 ; 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_options d,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 register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE } define service{ name generic-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_information 1 ; Retain non-status information across program restarts is_volatile 0 ; The service is not volatile check_period 24x7 ; 這里的check_period告訴nagios檢查服務的時間段。 max_check_attempts 3 ; nagios對服務的最大檢查次數。 normal_check_interval 5 ; 此選項是用來設置服務檢查時間間隔,也就是說,nagios這一次檢查和下一次檢查之間所隔的時間; ; 這里是5分鐘。 retry_check_interval 2 ; 重試檢查時間間隔,單位是分鐘。 contact_groups ts ; 指定聯系人組 notification_options w,u,c,r ; 這個定義的是“通知可以被發出的情況”。w即warn,表示警告狀態; ; u即unknown,表示不明狀態; ; c即criticle,表示緊急狀態,r即recover,表示恢復狀態; ; 也就是在服務出現警告狀態、未知狀態、緊急狀態和重新恢復后都發送通知給使用者。 notification_interval 10 ; Re-notify about service problems every hour notification_period 24x7 ; 指定“發送通知”的時間段,也就是可以在什么時候發送通知給使用者。 register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! } define service{ name local-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_interval 1 ; Re-check the service every minute until a hard state can be determined register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! }
b. resource.cfg文件
resource.cfg是nagios的變量定義文件,文件內容只有一行:
$USER1$=/usr/local/nagios/libexec
其中,變量$USER1$指定了安裝nagios插件的路徑,如果把插件安裝在了其它路徑,只需在這里進行修改即可。需要注意的是,變量必須先定義,然后才能在其它配置文件中進行引用。
c. commands.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$ #命令具體的執行方式。 }#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\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /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$ -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_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ #$ARG1$是指在調用這個命令的時候,命令后面的第一個參數。 } define command{ command_name check_local_load command_line $USER1$/check_load -w $ARG1$ -c $ARG2$ } define command{ command_name check_local_procs command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ } define command{ command_name check_local_users command_line $USER1$/check_users -w $ARG1$ -c $ARG2$ } define command{ command_name check_local_swap command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$ } define command{ command_name check_ftp command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$ } define command{ command_name check_http command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$ } define command{ command_name check_ssh command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$ } define command{ command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 } define command{ command_name check_nt command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ }
d. 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”就是上面定義的主機。 }
注意:在/etc/nagios/objects 下默認有localhost.cfg 和windows.cfg 這兩個配置文件,localhost.cfg 文件是定義監控主機本身的,windows.cfg 文件是定義windows 主機的,其中包括了對host 和相關services 的定義。所以在本次實驗中,將直接在localhost.cfg 中定義監控主機(Nagios-Server),在windows.cfg中定義windows 主機(Nagios-Windows)。根據自己的需要修改其中的相關配置,詳細如下:
localhost.cfg
############################################################################### # LOCALHOST.CFG - SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE # # # NOTE: This config file is intended to serve as an *extremely* simple # example of how you can create configuration entries to monitor # the local (Linux) machine. # ############################################################################### ############################################################################### ############################################################################### # # HOST DEFINITION # ############################################################################### ############################################################################### # Define a host for the local machine define host{ use linux-server host_name 10.0.0.14 alias 10.0.0.14 address 127.0.0.1 } ############################################################################### ############################################################################### # # HOST GROUP DEFINITION # ############################################################################### ############################################################################### # Define an optional hostgroup for Linux machines define hostgroup{ hostgroup_name linux-servers alias Linux Servers members 10.0.0.14 } ############################################################################### ############################################################################### # # SERVICE DEFINITIONS # ############################################################################### ############################################################################### # Define a service to "ping" the local machine define service{ use local-service host_name 10.0.0.14 service_description PING check_command check_ping!100.0,20%!500.0,60% } # Define a service to check the disk space of the root partition # on the local machine. Warning if < 20% free, critical if # < 10% free space on partition. define service{ use local-service host_name 10.0.0.14 service_description Root Partition check_command check_local_disk!20%!10%!/ } # Define a service to check the number of currently logged in # users on the local machine. Warning if > 20 users, critical # if > 50 users. define service{ use local-service host_name 10.0.0.14 service_description Current Users check_command check_local_users!20!50 } # Define a service to check the number of currently running procs # on the local machine. Warning if > 250 processes, critical if # > 400 users. define service{ use local-service host_name 10.0.0.14 service_description Total Processes check_command check_local_procs!250!400!RSZDT } # Define a service to check the load on the local machine. define service{ use local-service host_name 10.0.0.14 service_description Current Load check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 } # Define a service to check the swap usage the local machine. # Critical if less than 10% of swap is free, warning if less than 20% is free define service{ use local-service host_name 10.0.0.14 service_description Swap Usage check_command check_local_swap!20!10 } # Define a service to check SSH on the local machine. # Disable notifications for this service by default, as not all users may have SSH enabled. define service{ use local-service host_name 10.0.0.14 service_description SSH check_command check_ssh notifications_enabled 0 } # Define a service to check HTTP on the local machine. # Disable notifications for this service by default, as not all users may have HTTP enabled. define service{ use local-service host_name 10.0.0.14 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 }
e. 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 #指定檢查的命令。 }
f. contacts.cfg文件
contacts.cfg是一個定義聯系人和聯系人組的配置文件,當監控的主機或者服務出現故障,nagios會通過指定的通知方式(郵件或者短信)將信息發給這里指定的聯系人或者使用者。
define contact{ contact_name David #聯系人的名稱,這個地方不要有空格 use generic-contact #引用generic-contact的屬性信息,其中“generic-contact”在templates.cfg文件中進行定義 alias Nagios Admin email david.tang@bsmart.cn } define contactgroup{ contactgroup_name ts #聯系人組的名稱,同樣不能空格 alias Technical Support #聯系人組描述 members David #聯系人組成員,其中“david”就是上面定義的聯系人,如果有多個聯系人則以逗號相隔 }
g. 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 }
h. 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
附件查看我生產環境的配置文件
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。