nagios的配置文件解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nagios的配置文件解析相关的知识,希望对你有一定的参考价值。

在上篇文章安装部署好nagios监控软件后,本文主要为解析nagios的配置文件。

一、服务主目录配置文件说明:
[[email protected] ~]# cd /etc/nagios/
[[email protected] 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 目录下的文件。 |

二、objects目录下的文件说明:

[[email protected] conf.d]# cd /etc/nagios/objects/
[[email protected] 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 的作用。

三、 templates.cfg文件说明:

 联系人等相关定义:

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                    
       }

四、nagios宏的说明
Nagios 配置非常灵活,继承和引用是一大特征,另一个重要特征就是可以在命令行的定义里使用宏,通过定义宏 nagios 可以灵活的获取主机、服务和其它对象的信息。
在执行命令之前,nagios 将对命令里的每个宏替换成它们应当取得的值。这种宏替换发生在 Nagios 执行各种类型的宏时候。例如主机和服务的检测、通知、事件处理等。
宏的分类:默认宏、按需而成的宏、用户自定制宏等。
默认宏:主机 IP 地址宏。当在命令定义中使用主机或服务宏时,宏将要执行所用的值指向主机或服务所带有值。

Nagios 可用的全部的宏
| 宏类型           | 宏名称                           | 说明                                     |
| ----              | -------------------     | -------------------------------------- |
| 主机宏           | \$HOSTNAME$            | 主机简称 ( 如 "web") ,取自于主机定义里的 host_name 域 |
|                       | \$HOSTADDRESS$      | 主机地址,取自于主机定义里的 address 域               |
| 服务宏           | \$SERVICESTATE$       | 服务状态描述,有 w , u , c                     |
|                       | \$SERVICEDESC$        | 对当前服务的描述                               |
| 联系人宏       | \$CONTACTNAME$      | 表示联系人,在联系人文件中定义                        |
| 通知宏           | \$NOTIFICATIONTYPE$ | 返回一系列通知信息                              |
| 时间宏           | \$longdatetime$          | 显示当前日期、                                |
| 文件宏           | \$logfile$                      | 日志文件保存位置                               |
|                       | \$mainconfigfile$         | 主配置文件保存位置                              |
| 其他宏           | \$adminemail$             | 全局的管理员email地址                          |
|                       | \$argn$                          | 指向第n个命令传递参数,nagios最多支持32个参数宏           |


五、 commands.cfg文件说明
commands.cfg 文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。这里并未列出文件的所有内容,仅仅介绍了配置中用到的一些命令。
[[email protected] 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代表传递进来的参数

六、localhost.cfg配置文件说明
localhost.cfg是用来定义本地主机相关的配置。
[[email protected] 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% # 监控的实际内容
       }

七、 contacts.cfg配置文件的说明
contacts.cfg 是一个定义联系人和联系人组的配置文件。当监控的主机或者服务出现故障,nagios 会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者。
[[email protected] objects]# vim contacts.cfg
define contact{
       contact_name                    nagiosadmin             # 联系人名称
       use                             generic-contact         # 调用模板中generic-contact相关属性
       alias                           Nagios Admin            # 联系人别名

       email                           [email protected]       # 联系人邮箱
       }
define contactgroup{
       contactgroup_name       admins                        # 组名
       alias                   Nagios Administrators         # 组的别名
       members                 nagiosadmin      # 组内成员,以逗号分隔可以写多个
       }

八、 timeperiods.cfg 文件说明
timeperiods.cfg只用于定义监控的时间段,下面是一个配置好的实例:
[[email protected] 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
       }

本文出自 “Linux学习之路” 博客,请务必保留此出处http://zzclinux.blog.51cto.com/13401541/1978562

以上是关于nagios的配置文件解析的主要内容,如果未能解决你的问题,请参考以下文章

Nagios配置文件详解

nagios配置过程详解

Nagios监控安装之一

Nagios学习笔记三:配置Nagios

Nagios监控配置文件及监控流程

Nagios学习实践系列