在上篇文章安裝部署好nagios監控軟件後,本文主要爲解析nagios的配置文件。
linux
1、服務主目錄配置文件說明:
ios
[root@servera ~]# cd /etc/nagios/ [root@servera nagios]# ls cgi.cfg conf.d nagios.cfg nrpe.cfg objects passwd private | 文件 | 說明 | | ---------- | ---------------------------------------- | | cgi.cfg | 控制 cgi 訪問的配置文件,RPM 安裝的 Nagios 的 cgi 文件放置在/usr/lib64/nagios/cgi-bin 目錄中。 | | nagios.cfg | Nagios 的主配置文件,定義了一些文件路徑及全局參數。 | | private 目錄 | resouce.cfg 文件叫作資源文件,經過此文件定義一些在其餘配置文件中引用的變量好比 $USER1 | | passwd | 給 Nagios WEB 登陸認證使用的。 | | object 目錄 | 放置了不少的配置文件模板,用於定義 Nagios 對象。咱們配置 Nagios監控及報警就是經過 object 目錄下的文件。 |
2、objects目錄下的文件說明:
[root@servera conf.d]# cd /etc/nagios/objects/
[root@servera objects]# ls
commands.cfg localhost.cfg switch.cfg timeperiods.cfg
contacts.cfg printer.cfg templates.cfg windows.cfg
監控一臺主機包括的內容:主機是否活着/公共服務/私有服務
| 配置文件 | 說明 |
| --------------- | -------------------------- |
| commands.cfg | 定義配置文件,在其中定義的命令能夠被其餘配置文件引用 |
| contacts.cfg | 定義聯繫人和聯繫組的配置文件 |
| localhost.cfg | 定義監控本地主機的配置文件 |
| printer.cfg | 定義監控打印機的配置文件,默認沒有啓用 |
| switch.cfg | 監控路由器的配置文件,默認沒有啓用 |
| templates.cfg | 定義主機、服務的配置文件,能夠在其餘配置文件中引用 |
| timeperiods.cfg | 定義 nagios 控制時間段的配置文件 |
| windows.cfg | 控制 windows 主機的配置文件,默認沒有啓用 |
Nagios 配置須要注意如下四點:
1. 定義監控哪些主機、主機組、服務和服務組。
2. 定義這個監控要用什麼命令實現。
3. 定義監控的時間段。
4. 定義主機或服務出現問題時要通知的聯繫人和聯繫人組。
nagios 主要用於監控主機資源以及服務,在 nagios 配置中稱爲對象,爲了避免必重複定義一些監控對象,
Nagios 引入了一個模板配置文件,將一些共性的屬性定義成模板,以便於屢次引用,這就是 templates.cfg 的做用。
3、 templates.cfg文件說明:
web
聯繫人等相關定義: define contact{ name generic-contact # 定義該聯繫信息配置的模板名稱 service_notification_period 24x7 # 當服務出現異常時,發送通知的時間段,該時間段由timeperiods.cfg文件定義。 host_notification_period 24x7 # 當服務出現異常時,發送通知的時間段,該時間段由timeperiods.cfg文件定義。 service_notification_options w,u,c,r,f,s # 這個定義的是「通知能夠被髮出的狀況」。w 即warn,表示警告狀態,u 即 unknown,表示不明狀態,c 即 criticle,表示緊急狀態,r 即 recover,表示恢復狀態。也就是在服務出現警告狀態、未知狀態、緊急狀態和從新恢復狀態時都發送通知給使用者。 host_notification_options d,u,r,f,s # 定義主機在什麼狀態下須要發送通知給使用者,d 即down,表示宕機狀態,u 即 unreachable,表示不可到達狀態,r 即 recovery,表示從新恢復狀態。 service_notification_commands notify-service-by-email # 服務出現故障,則經過email方式報警,其中「notify-service-by-email」在 commands.cfg 文件中定義。 host_notification_commands notify-host-by-email # 主機出現故障,則經過email方式報警。 register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE! } 主機相關定義: define host{ name generic-host # 主機名稱,這裏的主機名,並非直接對應到真正機器的主機名,乃是對應到在主機配置文件裏所設定的主機名。 notifications_enabled 1 event_handler_enabled 1 flap_detection_enabled 1 failure_prediction_enabled 1 process_perf_data 1 retain_status_information 1 retain_nonstatus_information 1 notification_period 24x7 # 定義發送通知時間段 register 0 } define host{ name linux-server # 主機名稱 use generic-host # use 表示引用,也就是將主機 generic-host 的全部屬性引用到 linux-server 中來,在 nagios 配置中,不少狀況下會用到引用。 check_period 24x7 # 這裏的 check_period 告訴 nagios 檢查主機的時間段 check_interval 5 # nagios 對主機的檢查時間間隔,這裏是 5 分鐘 retry_interval 1 # 重試檢查時間間隔,單位是分鐘 max_check_attempts 10 # nagios 對主機的最大檢查次數,也就是 nagios 在檢查發現某主機異常時,並不立刻判斷爲異常情況,而是多試幾回,由於有可能只是一時網絡太擁擠,或是一些其餘緣由,讓主機受到了一點影響,這裏的 10 就是最多試 10 次的意思。 check_command check-host-alive # 指定檢查主機狀態的命令,其中「check-host-alive」在 commands.cfg 文件中定義。 notification_period workhours # 主機故障時,發送通知的時間範圍,其中「workhours」在 timeperiods.cfg 中進行了定義。 notification_interval 120 # 在主機出現異常後,故障一直沒有解決,nagios 再次對使用者發出通知的時間。單位是分鐘。若是你以爲,全部的事件只須要一次通知就夠了,能夠把這裏的選項設爲 0 notification_options d,u,r # 定義主機在什麼狀態下能夠發送通知給使用者,d 即down,表示宕機狀態,u 即 unreachable,表示不可到達狀態,r 即recovery,表示從新恢復狀態。 contact_groups admins # 指定聯繫人組,這個「admins」在 contacts.cfg 文件中定義 register 0 } 服務相關定義: define service{ name generic-service # 定義一個服務名稱 active_checks_enabled 1 passive_checks_enabled 1 parallelize_check 1 obsess_over_service 1 check_freshness 0 notifications_enabled 1 event_handler_enabled 1 flap_detection_enabled 1 failure_prediction_enabled 1 process_perf_data 1 retain_status_information 1 retain_nonstatus_information 1 is_volatile 0 check_period 24x7 # 定義檢查時間段 max_check_attempts 3 # 定義對nagios對服務的最大檢查次數 normal_check_interval 10 # 定義檢查服務的時間間隔,單位是分鐘 retry_check_interval 2 # 定義重試檢查時間間隔,單位是分鐘 contact_groups admins # 定義聯繫人組 notification_options w,u,c,r # 這個定義的是「通知能夠被髮出的狀況」。w 即 warn,表示警告狀態,u 即 unknown,表示不明狀態,c 即 criticle,表示緊急狀態,r 即 recover,表示恢復狀態。也就是在服務出現警告狀態、未知狀態、緊急狀態和從新恢復後都發送通知給使用者。 notification_interval 60 # 在服務出現異常後,故障一直沒有解決,nagios 再次對使用者發出通知的時間。單位是分鐘。0表明只發送一次。 notification_period 24x7 # 指定「發送通知」的時間段。 register 0 }
4、nagios宏的說明vim
Nagios 配置很是靈活,繼承和引用是一大特徵,另外一個重要特徵就是能夠在命令行的定義裏使用宏,經過定義宏 nagios 能夠靈活的獲取主機、服務和其它對象的信息。
在執行命令以前,nagios 將對命令裏的每一個宏替換成它們應當取得的值。這種宏替換髮生在 Nagios 執行各類類型的宏時候。例如主機和服務的檢測、通知、事件處理等。
宏的分類:默認宏、按需而成的宏、用戶自定製宏等。
默認宏:主機 IP 地址宏。當在命令定義中使用主機或服務宏時,宏將要執行所用的值指向主機或服務所帶有值。
windows
Nagios 可用的所有的宏 | 宏類型 | 宏名稱 | 說明 | | ---- | ------------------- | -------------------------------------- | | 主機宏 | \$HOSTNAME$ | 主機簡稱 ( 如 "web") ,取自於主機定義裏的 host_name 域 | | | \$HOSTADDRESS$ | 主機地址,取自於主機定義裏的 address 域 | | 服務宏 | \$SERVICESTATE$ | 服務狀態描述,有 w , u , c | | | \$SERVICEDESC$ | 對當前服務的描述 | | 聯繫人宏 | \$CONTACTNAME$ | 表示聯繫人,在聯繫人文件中定義 | | 通知宏 | \$NOTIFICATIONTYPE$ | 返回一系列通知信息 | | 時間宏 | \$longdatetime$ | 顯示當前日期、 | | 文件宏 | \$logfile$ | 日誌文件保存位置 | | | \$mainconfigfile$ | 主配置文件保存位置 | | 其餘宏 | \$adminemail$ | 全局的管理員email地址 | | | \$argn$ | 指向第n個命令傳遞參數,nagios最多支持32個參數宏 |
5、 commands.cfg文件說明
commands.cfg 文件默認是存在的,無需修改便可使用,固然若是有新的命令須要加入時,在此文件進行添加便可。這裏並未列出文件的全部內容,僅僅介紹了配置中用到的一些命令。bash
[root@servera objects]# vim commands.cfg define command{ command_name check_local_procs # 命令的名稱 command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ # 實際執行命令的效果 } # 這裏的變量$USER1$在/etc/nagios/private/resource.cfg文件中進行定義,$USER1$=/usr/lib64/nagios/plugins,那麼 check_procs爲/usr/lib64/nagios/plugins/check_procs。 # -w 說明後面的一對值對應的是「WARNING」狀態,-c說明後面的一對值對應的是「CRITICAL」。 # 這裏的-s表明的是狀態的意思,能夠經過執行check_procs獲取對應的一些幫助信息。 # ARG表明傳遞進來的參數
6、localhost.cfg配置文件說明
localhost.cfg是用來定義本地主機相關的配置。網絡
[root@servera objects]# vim localhost.cfg define host{ # 定義主機相關 use linux-server # 定義模板裏配置的linux-server 的屬性信息 host_name localhost # 定義主機名 alias localhost # 定義別名 address 127.0.0.1 # 定義主機ip } define hostgroup{ # 定義主機組相關 hostgroup_name linux-servers # 主機組名 alias Linux Servers # 主機組別名 members localhost # 主機組成員包含的主機名,以逗號分隔能夠寫多個成員 } define service{ use local-service # 引用 local-service 服務的屬性值,local-service 在templates.cfg 文件中進行了定義。 host_name localhost # 指定要監控哪一個主機上的服務 service_description PING # 描述信息 check_command check_ping!100.0,20%!500.0,60% # 監控的實際內容 }
7、 contacts.cfg配置文件的說明
contacts.cfg 是一個定義聯繫人和聯繫人組的配置文件。當監控的主機或者服務出現故障,nagios 會經過指定的通知方式(郵件或者短信)將信息發給這裏指定的聯繫人或者使用者。ide
[root@servera objects]# vim contacts.cfg define contact{ contact_name nagiosadmin # 聯繫人名稱 use generic-contact # 調用模板中generic-contact相關屬性 alias Nagios Admin # 聯繫人別名 email nagios@localhost # 聯繫人郵箱 } define contactgroup{ contactgroup_name admins # 組名 alias Nagios Administrators # 組的別名 members nagiosadmin # 組內成員,以逗號分隔能夠寫多個 }
8、 timeperiods.cfg 文件說明
timeperiods.cfg只用於定義監控的時間段,下面是一個配置好的實例:spa
[root@servera objects]# vim timeperiods.cfg 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 }