nagios的配置文件解析

在上篇文章安裝部署好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
        }
相關文章
相關標籤/搜索