在上篇文章安装部署好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 }