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
        }