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