nagios安装完毕后,我们现在就来配置nagios。有关nagios的安装,可以参考《烂泥:学习Nagios(一):Nagios安装》这篇文章。
说明:为了和nagios版本的保持一直,我们在此使用的是nagios最新版nagios-4.1.0rc1。
注意:最新版的nagios可在web页面查看其运行的PID。
一、nagois监控对象
nagios监控的对象比较多,我们可以从颗粒度的不同进行划分,分为笼统对象和详细对象。
1.1笼统对象
nagios监控的笼统对象可以分为两种类型:网络服务和主机资源。
网络服务包括主机(含网络设备)存活状态、web服务、ftp服务、数据库服务、自定义服务等。
主机资源包括系统负载、当前IP链接数、磁盘空间使用情况、当前进程数、自定义资源等。
1.2 详细对象
nagios监控的详细对象,有以下对象:
网站监控、主流数据库监控、协议监控、操作系统监控、应用监控、应用服务器监控、网络监控、动力环境监控、存储监控、邮件监控、安全监控、日志监控、虚拟化监控。
网站监控主要包括网站、网站应用、网站内容、HTTP、SSL等。
主流数据库监控主要包括MySql、Oracle、DB2、MSSQL等。
协议监控主要包括HTTP、DNS、FTP、SNMP、SMTP、SSH、LDAP、IMAP、POP、ICMP、DHCP等。
操作系统监控主要包括Linux、Windows、Unix、Solaris、AIX、HP-UX等。
应用监控主要包括服务、进程等。
应用服务器监控主要包括Tomcat、JBoss、Websphere、Weblogic、Java、JMX等。
网络监控主要包括路由器、交换机、防火墙等。
日志监控主要包括windows事件日志、Syslog等。
动力环境监控主要包括温湿度、烟雾传感器、浸水、干接点、UPS、APC等。
如果想要详细了解nagios监控的对象,我们可以去nagios官网进行查看。如下:
http://www.nagios.com/solutions
二、nagios监控方法
前面我们说了nagios监控的对象,那么我们是通过哪些方法监控这些对象的呢,即通过哪些监控载体来实现监控的?
nagios给我们提供了多种监控方法,比较常见的有NRPE、SNMP、脚本。
NRPE方式在windows、Linux上都有对应的客户端软件,而SNMP方式需要在windows、Linux上安装SNMP相关的组件。对于脚本方式的监控,我们可以使用shell、perl等脚本。
对于以上三种方式,建议根据实际的业务进行选择。比如:要监控网络设备的相关情况,我们一般是通过SNMP方式的。而对于OS来说,我们最常见的是通过NRPE和SNMP方式。
三、nagios通知方式
监控的主要目的是当监控的对象发生故障或资源紧张时及时通知相关人员,以便问题得到迅速的处理。
nagios为了方便我们的管理工作,给我们提供了至少3种通知方式。
web方式:通过浏览器观看被监控的对象,正常状态下,其状态(status)是以蓝色填充并显示一个OK。
邮件通知:当发生故障同时达到设定重试次数和探测间隔时间时,发送邮件给管理员或相关人员,报告问题的大致情况。
手机短信:这是非常有用和及时的功能了,一旦发生故障,手机短信可以及时提醒你。
一般情况下,这三者是同时进行的:上班时间开个浏览器看页面显示、定时收取邮件、手机24小时在线。
四、nagios文件目录
nagios以及其插件安装并配置完毕后,整个目录层次如下:
ll /usr/local/nagios/
bin目录用来存放nagios的执行程序,包括nagios、nrpe等。
etc目录用来存放nagios的配置文件。
libexec目录用来存放nagios的监控插件。
sbin目录用来存放nagios cgi文件,也就是执行外部命令所需文件所在的目录。
share目录用来存放nagios网页文件,也就是存放web页面的目录。
include目录用来存放nagios cgi文件的外部调用。
var目录用来存放nagios日志文件、lock文件等文件。
五、nagios配置文件
nagios目录介绍完毕后,我们再来介绍nagios的配置文件。nagios配置文件默认都在/usr/local/nagios/etc目录下。
5.1 nagios配置文件简介
查看nagios的配置文件,如下:
/usr/local/nagios
tree -L 2 ./etc/
通过上图,我们可以很明显的看到所有的配置文件。下面来介绍每个配置文件具体作用。如下:
cgi.cfg用于控制CGI访问的配置文件。
htpasswd.users用于存放nagios管理员用户名和密码的文件。
nagios.cfg是nagios主配置文件,所有的cfg配置文件(外部调用除外)必须都在此文件中引用cfg配置文件才能生效。
resource.cfg变量定义文件,又称为资源文件。该文件中定义的变量,可以被其他配置文件引用,如$USER1$。
objects是一个目录,此目录下的文件主要用于定义nagios的监控对象。
commands.cfg是nagios监控命令的定义文件,其中定义的命令可以被其他配置文件引用。
contacts.cfg是定义nagios监控对象出现故障时,通知的联系人和联系人组的配置文件。
localhost.cfg是定义监控本地主机的配置文件。
templates.cfg是定义主机和服务的一个模板配置文件。
timeperiods.cfg是定义nagios监控时间段的配置文件。
services.cfg是存放具体被监控服务的相关配置内容。该配置文件默认是不存在的,需要自己手工建立,并且要建立在services目录下。同时还需要在nagios.cfg文件指定services目录。如下:
egrep -v "^#|^$" nagios.cfg
cfg_dir=/usr/local/nagios/etc/services
hosts.cfg存放具体被监控的主机相关配置。该配置文件默认是不存在的,需要自己手工建立,并且要建立在hosts目录下。同时还需要在nagios.cfg文件指定hosts目录。与services.cfg使用方法相同。
5.2 nagios配置文件之间的关系
在nagios的配置过程中涉及到定义有:主机、主机组,服务、服务组,联系人、联系人组,监控时间,监控命令等。从这些定义可以看出,nagios各个配置文件之间是互为关联、彼此引用的。
要成功配置出一台nagios监控系统,必须要弄清楚各个配置文件之间依赖与被依赖的关系,最重要的有四点:
第一:定义监控哪些主机、主机组、服务和服务组。
第二:定义这个监控要用什么命令实现。
第三:定义监控的时间段。
第四:定义主机或服务出现问题时要通知的联系人和联系人组。
5.2 cgi.cfg文件介绍
cgi.cfg文件是用来控制nagios的相关cgi脚本。如果想在nagios的web监控界面执行相关的cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件。
在《烂泥:学习Nagios(一):Nagios安装》文章中,我们已经提到nagios默认管理员是nagiosadmin。
如果我们要添加一个新管理员admin的话,我们就需要修改cgi.cfg文件添加此用户的相关执行权限即可。如下:
egrep -v "^#|^$" cgi.cfg
cgi.cfg文件修改完毕,我们还需要把admin用户添加到htpasswd.users文件中使用htpasswd命令。如下:
htpasswd htpasswd.users admin
cat htpasswd.users
5.3 nagios.cfg文件介绍
nagios.cfg是nagios的主配置文件,默认的路径为/usr/local/nagios/etc/nagios.cfg。所有的对象配置文件都必须在这个文件中进行定义才能发挥其作用,这里只需将对象配置文件在nagios.cfg文件中引用即可。
nagios.cfg配置文件的内容比较多,我们在此只介绍比较重要的部分。
查看nagios.cfg文件内容,如下:
egrep -v "^#|^$" nagios.cfg
log_file=/usr/local/nagios/var/nagios.log
用于定义nagios在何处创建其日志文件。
说明:
log_file变量用于定义nagios在何处创建其日志文件。如果你使用了nagios日志轮询功能,那么nagios将在每小时、每天、每周或每月对日志进行轮询。
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
用于定义nagios监控命令的配置文件。
说明:
cfg_file变量用来引用对象配置文件,如果有更多的对象配置文件,我们只需在nagios.cfg文件中依次添加即可。
对象配置文件中一般包含主机、主机组、联系人、联系人组、服务、命令等对象的定义。
如果要使nagios处理所有在特定目录中包含的对象配置文件,那么我们可以使用cfg_dir指令。如下所示:
cfg_dir=/usr/local/nagios/etc/services
说明:
cfg_dir变量用于引用一个目录里包含的所有对象配置文件。所有在这个目录下的且以.cfg为后缀名的文件将被作为对象配置文件来处理。
另外,nagios将会递归该目录下的子目录并处理其子目录下的全部配置文件。你也可以把配置放入不同的目录并且用cfg_dir=语句来指向每个待处理的目录。
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
用于引用nagios联系人的配置文件。
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
用于引用nagios监控时段的配置文件。
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
用于引用nagios监控对象的模版文件。
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
用于引用nagios监控本地( Linux )主机的配置文件。
resource_file=/usr/local/nagios/etc/resource.cfg
resource_file变量用于定义nagios资源配置文件,可以在nagios.cfg中定义多个资源文件。
status_file=/usr/local/nagios/var/status.dat
status_file变量用于定义nagios的状态文件,此文件用于保存nagios当前的状态、宕机信息等。它会在每次nagios重新启动的时候被清空删除。
status_update_interval=10
该变量用于定义状态文件(即status.dat)的更新时间间隔,单位是秒,最小更新间隔是1秒,默认是10秒。
nagios_user=nagios
该变量指定nagios进程使用哪个用户运行。
nagios_group=nagios
该变量指定nagios使用哪个用户组运行。
check_external_commands=1
该变量用于设置是否允许nagios在web监控界面运行cgi命令,也就是是否允许nagios在web界面下执行重启nagios、停止主机、服务检查等操作。其中1表示允许,0表示不允许。
command_file=/usr/local/nagios/var/rw/nagios.cmd
定义nagios用来检查外部命令请求的文件。这个文件同样也是用户操作提交与CGI命令写入的地方,所以这个文件必须对于相关服务可写,一般是针对Apache的宿主用户可写。并且注意,这个文件所在的目录的权限必须被Apache可写,而不单指这文件,因为这个文件在工作当中是频繁被写入和删除的。
lock_file=/usr/local/nagios/var/nagios.lock
定义nagios运行时用来保存它的PID文件。
temp_file=/usr/local/nagios/var/nagios.tmp
定义nagios临时文件路径。它将在nagios运行时不停地被建立、使用和删除。
log_rotation_method=d
定义nagios的日志轮询方式,默认是每天轮询。
值为n表示none,不做轮询。值为h表示hourly,每小时轮询一次(每小时的开始)。值为d表示daily,每天轮询一次(每天的午夜)。值为w表示weekly,每周轮询一次(每周六的晚上)。值为m表示monthly,每月轮询一次(每上个月的最后一天的午夜)。
log_archive_path=/usr/local/nagios/var/archives
定义nagios日志的归档路径。
command_check_interval=10s
该变量用于定义nagios对外部命令检测的间隔,默认为10秒。如果这个数值不加上单位的话,默认单位为分钟。例如1就是表示1分钟,nagios每分钟检测一次。
service_check_timeout=60
定义服务检测的超时时间,默认为60秒。如果服务检查时间超过所定义的时间,则显示为CRITICAL状态。
host_check_timeout=30
定义主机检测的超时时间,默认为30秒。若主机检查时间超过所定义的时间,则显示为CRITICAL状态。
event_handler_timeout=30
定义事件处理最长时间,默认为30秒。若事件处理最长时间超出所定义的时间,则nagios会发出一条warning警告信息并记录到日志中。
notification_timeout=30
定义通知信息发送的时间间隔,默认为30秒。
interval_length=60
该变量用于定义nagios检测时间间隔的单位,默认值是60秒,即1分钟。也就是说在nagios中,检测时间间隔默认是以分钟为单位的。
这样定义以后其他地方需要用到时间单位长度的,默认都为分钟。在配置模版文件templates.cfg中定义主机和服务时,就是以该值为基础的。如下:
egrep -v "^#|^$" templates.cfg
check_interval 5
retry_interval 1
表示检查间隔为5*60s(5分钟),即每5分钟检查一次。重试检查时间间隔为1分钟,最多重试检查10次。
注意:nagios在OK状态时,用check_interval定义的时间间隔来监控,出现问题后,切换为retry_interval和max_check_attempts进行监控,当重试次数达到max_check_attempts值后触发首次报警,同时恢复为check_interval进行监控,并用notification_interval定义的时间间隔来发送报警。故障恢复正常后,在最近的check_interval点发送OK通知,完成报警周期。
对于一些敏感度要求高的服务,这明显不能满足我们的要求,因此可以将其调小,如调整为10秒:
interval_length=10s
这样就提高了检查的灵敏度,但有些服务又不需要如此高的灵敏度,如磁盘空间(不会一下就增加很多),则可以在定义check_interval是增大其数值。
注意:灵敏度和误报率是成正比的,检查间隔越小,出现误报的可能性越大。所以,建议根据实际情况调整到合适的值。
5.4 resource.cfg文件介绍
resource.cfg是nagios的变量定义文件,文件内容只有一行。如下:
$USER1$=/usr/local/nagios/libexec
其中,变量$USER1$指定安装nagios插件的路径。
如果把插件安装在了其它路径,只需在这里进行修改即可。
需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用,同时该变量也是可以通过宏进行定义。
nagios的一个重要特征就是可以在命令行的定义里使用宏,通过定义宏,nagios可以灵活的获取主机、服务和其它对象的信息。
5.4.1 宏的工作机制
在执行命令之前,nagios将对命令里的每个宏替换成它们应当取得的值。这种宏替换发生在nagios执行各种类型的宏时候。例如主机和服务的检测、通知、事件处理等。
5.4.2 宏的分类
根据宏的不同,我们可以把宏分成:默认宏、按需而成的宏、用户自定义宏。
默认宏,以主机IP地址宏为例。
当在命令定义中使用主机或服务宏时,宏将要执行时所用的值指向主机或服务所带的值。
看下面这个例子,假如在check_ping命令定义里使用了一个主机对象,如下:
define host{
host_name ilanni
address 192.168.1.247
check_command check_ping }
define command{
command_name check_ping
command_line /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,90% -c 200.0,60% }
那么执行这个主机检测命令时,最终执行的将是这样的:
/usr/local/nagios/libexec/check_ping -H 192.168.1.247 -w 100.0,90% -c 200.0,60%
nagios宏的优美之处在于你可以只用一个命令定义来完成无限个主机的检测,并且每个主机可以使用相同的命令来进行检测,而在对它们检测之前将把主机地址正确地进行替换。
命令参数宏
同样你也可以向命令传递参数,这样可以保证命令定义更具通用性。参数指定在对象(像主机或服务)中定义,用一个“!”来分隔,例如这样:
define service{
host_name ilanniservice
service_description PING
check_command check_ping!200.0,80%!400.0,40% }
上例中,服务的检测命令中含有两个参数,$ARG1$宏将是"200.0,80%",$ARG2$将是"400.0,40%"(都不带引号)。假如check_ping命令是这样定义的:
define command{
command_name check_ping
command_line /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ }
那么对于服务的检测命令最终将是这样的:
/usr/local/nagios/libexec/check_ping -H 192.168.1.247 -w 200.0,80% -c 400.0,40%
另外,按需而成的宏和用户自定义宏,在此我们就不做过多介绍。如果想要深入学习有关nagios宏的相关知识的话,可以去nagios官网进行查看。
5.4.3 nagios可用的宏
nagios可用的宏比较多,但是每个命令最多支持32个参数宏。在此我们介绍几个经常使用的宏。
主机宏:
$HOSTNAME$主机简称,取自于主机定义里的host_name。$HOSTADDRESS$主机地址,取自于主机定义里的address。
服务宏:
$SERVICESTATE$当前服务的状态,有w、u、c、r。其中w即warn,表示警告状态。u即unknown,表示状态不明。c即criticle,表示紧急状态。r即recover,表示恢复状态。
$SERVICEDESC$对当前服务的描述。
联系人宏:
$CONTACTNAME$表示联系人,在联系人contacts.cfg文件中定义。
通知宏:
$NOTIFICATIONTYPE$返回下面信息:("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT","FLAPPINGSTART","FLAPPINGSTOP","FLAPPINGDISABLED","DOWNTIMESTART","DOWNTIMEEND",or"DOWNTIMECANCELLED")。
日期/时间宏:
$LONGDATETIME$当前的日期/时间戳。
文件宏:
$LOGFILE$日志文件的保存位置。$MAINCONFIGFILE$主配置文件的保存位置。
其他宏:
$ADMINEMAIL$全局管理员email地址。
$ARGn$指向第n个命令传递参数(通知、事件处理、服务检测等)。
如果想查看nagios所有宏的信息,可以在nagios的官方网站进行查看。如下:
http://nagios.sourceforge.net/docs/nagioscore/4/en/toc.html
当然也可以查看nagioc中文版的连接,如下:
http://nagios-cn.sourceforge.net/nagios-cn/advance.html
5.5 commands.cfg文件介绍
commands.cfg是nagios监控命令的定义文件,该文件默认是存在的,无需修改即可使用。当然如果有新命令需要加入时,只需在此文件中添加即可。这里并未列出该文件的所有内容,仅仅介绍在配置中经常使用到的一些命令。
egrep -v "^#|^$" commands.cfg
下面是notify-host-by-email命令的定义:
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "*****Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost:$HOSTNAME$\nState: $HOSTSTATE$\nAddress:$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time:$LONGDATETIME$\n"|/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$**"$CONTACTEMAIL$ }
command_name行定义命令名称,即定义了一个主机异常时发送邮件的命令。
command_line行定义命令具体的执行方式,其中“-H $HOSTADDRESS$”是定义目标主机的地址。
下面是notify-service-by-email命令的定义:
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "*****Nagios*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n"|/bin/mail -s "** $NOTIFICATIONTYPE$Service Alert: $HOSTALIAS$/$SERVICEDESC$is $SERVICESTATE$**"$CONTACTEMAIL$ }
command_name行定义命令名称,即定义了一个服务异常时发送邮件的命令。
command_line命令具体的执行方式,“-H $HOSTADDRESS$”是定义目标主机的地址,这个地址在hosts.cfg文件中定义了。
下面是check-host-alive命令的定义:
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 }
command_name行定义命令名称,用来检测主机的状态。
command_line这里的变量$USER1$是在resource.cfg文件中进行定义的,即$USER1$=/usr/local/nagios/libexec,最后check_ping的完整路径为/usr/local/nagios/libexec/check_ping。
“-w 3000.0,80%”中“-w”说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。“-c 5000.0,100%”中“-c”说明后面的一对值对应的是“CRITICAL”,“100%”是其临界值。“-p 5”表示发送5个数据包。
check_ping命令的参数:
-H 目标主机地址。
-w WARNING警告状态:响应时间(毫秒),丢包率(%)的阀值。
-c CRITICAL危险状态:响应时间(毫秒),丢包率(%)的阀值。
-p 发送包的个数,默认5个包。
-t 超时时间,默认10秒。
-4|-6 使用ipv4|ipv6 地址,默认ipv4。
5.6 contacts.cfg文件介绍
contacts.cfg是定义联系人和联系人组的配置文件。当监控的主机或者服务出现故障时,nagios会通过指定的通知方式,将信息发给这里指定的联系人。
egrep -v "^$|^#" contacts.cfg
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email nagios@localhost }
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin }
contact_name行定义联系人名称。
use行表示引用generic-contact的属性信息,其中generic-contact在templates.cfg文件中进行定义。
alias行定义联系人别名。
email行定义联系人的邮件地址。
contactgroup_name行定义联系人组名称。
members行定义联系人组成员,其中“nagiosadmin”就是上面定义的联系人。
5.7 timeperiods.cfg文件介绍
timeperiods.cfg文件用于定义监控的时间段。
下面是定义一个名为24x7的时间段,即监控所有时间段。如下:
egrep -v "^#|^$" timeperiods.cfg
注意:timeperiod_name行定义的时间段名称中不能有空格。
5.8 templates.cfg文件介绍
为了不必重复定义一些监控对象,nagios引入了一个模板配置文件templates.cfg,将一些共性的属性定义成模板,以便于多次引用。
templates.cfg通用模板定义,包括监控主机模板generic-host、linux_server,监控服务模板local_service,联系人模板generic-contact(并非真正的联系人,真正的联系人在contacts.cfg中定义)。
下面详细介绍下templates.cfg文件中每个参数的含义:
define contact{
name generic-contact
定义联系人名称。
service_notification_period 24x7
当服务出现异常时,发送通知的时间段,这个时间段“24x7"在timeperiods.cfg文件中定义。
host_notification_period 24x7
当主机出现异常时,发送通知的时间段,这个时间段“24x7"在timeperiods.cfg文件中定义。
service_notification_options w,u,c,r
定义通知可以发出的状态。w即warn,表示警告状态。u即unknown,表示状态不明。c即criticle,表示紧急状态。r即recover,表示恢复状态。也就是说在服务出现警告状态、未知状态、紧急状态和重新恢复状态时都发送通知给使用者。
host_notification_options d,u,r
定义主机在什么状态下需要发送通知给使用者。d即down,表示宕机状态。u即unreachable,表示不可到达状态。r即recovery,表示重新恢复状态。
service_notification_commands notify-service-by-email
定义服务发生故障时,发送通知的方式,这里定义的是邮件,其中“notify-service-by-email”在commands.cfg文件中定义。
host_notification_commands notify-host-by-email
定义主机发生故障时,发送通知的方式,这里定义的是邮件,其中“notify-host-by-email”在commands.cfg文件中定义。
register 0
}
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再次对使用者发出通知的时间,单位是分钟。
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 1
check_period 24x7
这里的check_period告诉nagios检查服务的时间段。
max_check_attempts 3
nagios对服务的最大检查次数。
normal_check_interval 10
此选项是用来设置服务检查时间间隔,也就是说,nagios这一次检查和下一次检查之间所隔的时间,这里是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再次对使用者发出通知的时间,单位是分钟。
notification_period 24x7
指定发送通知的时间段,也就是可以在什么时候发送通知给使用者。
register 0 }