Nagios的配置文件

一、Nagios的主配置文件时nagios.cfg

参数的设置格式为<parameter>=<value>有些值是可以重复出现的其中常用的参数的说明如下:

Log_file:设置nagios的日志文件cfg_file:Nagios对象定义的相关文件,此参数可重复使用多次以指定多个文件;cfg_dir:设定Nagios对象定义的相关文件所在的目录,此目录中的所有文件都会被作为对象 定义的文件;此参数可重复使用多次以指定多个目录;resource_file:设定Nagios附加的宏定义的相关文件;status_file:设定Nagios存储所有主机和服务当前状态信息的文件;status_update_interval:设定status_file指定的文件中状态信息的更新频率;service_check_timeout:设定服务检测的超时时间,默认为60秒;host_check_timeout:设定主机检测的超时时间,默认为30秒;notification_timeout:设定通知信息发送尝试的超时时间,默认为30秒;

二、resource_file变量存储文件rescource.cfg

在主配置文件中,参数resource_file用于定义所有用户变量(即“宏”)的存储文件,它用于存储对象定义中的可以访问的额外信息,此文件中可以定义的宏可多达32个,它们分别为$USER1$,$USER2$...$USER32,这些宏一般在check命令中引用。通常情况下$USER1$用于引用Nagios插件所在目录这个路径信息,因此,一般不建议修改其值。

$USER1$=/usr/local/nagios/libexec

Nagios中事先定义了一些宏,它的值依赖于安全上下文,例如:

HOSTNAME:用于引用host_name指定所定义的主机的主机名;HOSTADDRESS:用于引用host对象中的address指令的值,它通常可以为IP地址或主机名;HOSTDISPLAYNAME:用于引用host对象中alias指令的值,用以描述当前主机, 即主机的显示名称;HOSTSTATE:某主机的当前状态,为UP,DOWN,UNREACHABLE三者之一;HOSTGROUPNAMES:用于引用某主机所属的所有主机组的简名,主机组名称之间以逗号分隔;LASTHOSTCHECK:用于引用某主机上次检测的时间和日期,Unix时间戳格式;LASTHOSTSTATE:用于引用某主机前一次检测时的状态,为UP,DOWN或UNREACHABLE三者之一;SERVICEDESC:用于引用对应service对象中的desccription指令的值;SERVICESTATE:用于引用某服务的当前状态,为OK,WARNING,UNKOWN或CRITICALSERVICEGROUPNAMES:用于引用某服务所属的所有服务组的简名,服务组名称之间以逗号分隔;CONTACTNAME:用于引用某contact对象中contact_name指令的值;CONTACTALIAS:用于引用某contact对象中alias指令的值;CONTACTEMAIL:用于引用某contact对象中email指令的值;CONTACTGROUPNAMES:用于引用某contact所属的所有contact组的简名,contact组名称 之间以逗号分隔;

三、templates.cfg定义一些通用的模板,被其他对象引用

###############################################################################

定义一个主机

definehost{#定义一个主机定义基本信息被其他主机引用namegeneric-host;#主机名称notifications_enabled1;Hostnotificationsareenabledevent_handler_enabled1;Hosteventhandlerisenabledflap_detection_enabled1;Flapdetectionisenabled不稳定检测failure_prediction_enabled1;Failurepredictionisenabled启用故障预测process_perf_data1;Processperformancedata进程性能数据retain_status_information1;Retainstatusinformationacrossprogramrestarts保持状态信息到程序重新启动retain_nonstatus_information1;Retainnon-statusinformationacrossprogramrestartsnotification_period24x7;Sendhostnotificationsatanytime发送通知的时段register0;模板}

定义主机引用上面的主机属性

definehost{namelinux-server;Thenameofthishosttemplateusegeneric-host;引用前面定义的主机继承它的属性值check_period24x7;检测周期check_interval5;检测频率retry_interval1;重试频率max_check_attempts10;最大确认次数check_commandcheck-host-alive;检测命令notification_periodworkhours;故障通知时间段notification_interval0;发送故障通知的频率,0表示只发送一次notification_optionsd,u,r;主机处于什么状态下发送通知contact_groupsadmins;通知人组register0;}

其中的notification_options用于指定当主机处于什么状态时应该发送通知。其各状态及其表示符如下:

d——DOWN

u——UNREACHABLE

r——UP(hostrecovery)

f——flapping

s——调试宕机时间开始或结束

definehostgroup{#定义主机组

hostgroup_namewebservers#主机组名

aliasLinuxwebservers#主机组别名

memberswebserver1#主机组成员也可以包含其他主机组

}

###############################################################################

定义一个服务

defineservice{namegeneric-service;active_checks_enabled1; passive_checks_enabled1;parallelize_check1;并行检查启动提高性能failure_prediction_enabled1;启用故障预测process_perf_data1;过程性能数据check_period24x7;检测时段max_check_attempts3;检测3次确定状态normal_check_interval10;正常检测周期retry_check_interval2;重试检测周期contact_groupsadmins;通知组notification_optionsw,u,c,r;通知状态notification_interval0;发送通知的周期notification_period24x7;发送通知的时间段register0;}

其中的notification_options用于指定当服务处于什么状态时应该发送通知。其各状态及其表示符如下:

w——WARNING

u——UNKNOWN

c——CRITICAL

r——OK(recovery)

f——flapping

s——调试宕机时间开始或结束

defineservice{host_namewebserver1主机名称可以给多台主机定义同一服务service_descriptionwwwcheck_commandcheck_http检测命令check_interval10检测周期check_period24x7检测时间段retry_interval3重试周期max_check_attempts3重试检测次数notification_interval30通知周期notification_period24x7通知时间段notification_optionsw,c,u,r通知状态contact_groupslinux-admins通知人组}

#定义服务组

defineservicegroup{#定义服务组servicegroup_namewebservicesaliasAllservicesrelatedtowebmemberswebserver1,www,webserver2,www}

一个服务组的成员通常是某主机上的某服务,其指定时使用<host>,<service>的格式,多个服务也使用逗号分隔。

Webwervices服务组的成员有两个主机webserver1上的www服务和主机webserver2上的www服务

##########################################################################

定义命令对象

definecommand{command_namecheck_local_swap命令名字command_line$USER1$/check_swap-w$ARG1$-c$ARG2$命令行}

###########################################################################

定义时段对象

definetimeperiod{timeperiod_nameworkinghours名字aliasWorkingHours,fromMondaytoFriday描述名monday09:00-17:00多个时间跨度tuesday09:00-17:00wednesday09:00-17:00thursday09:00-17:00friday09:00-17:00}

###########################################################################

定义联系人对象

definecontact{contact_namezhanghui#名称aliasMageEducation#描述名emaillinuxedu@magedu.com邮箱地址host_notification_periodworkinghours主机通知时段service_notification_periodworkinghours服务通知时段host_notification_optionsd,u,r主机通知状态service_notification_optionsw,u,c,r服务通知状态host_notification_commandshost-notify-by-email主机通知命令service_notification_commandsnotify-by-email服务通知命令}

notify-service-by-email和notify-host-by-email都是命令对象在命令文件里会定义

定义联系人祖对象

definecontactgroup{contactgroup_namelinux-adminsaliasLinuxAdministratorsmemberszhanghui,zhang}

###########################################################################