Nagios各独立配置文件详细介绍
以下介绍各配置文件的详细情况
查看安装正文请点击此处
a. templates.cfg文件
nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。这就是templates.cfg的作用。
下面详细介绍下templates.cfg文件中每个参数的含义:
definecontact{namegeneric-contact;联系人名称service_notification_period24x7;当服务出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义host_notification_period24x7;当主机出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义service_notification_optionsw,u,c,r;这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态;;c即criticle,表示紧急状态,r即recover,表示恢复状态;;也就是在服务出现警告状态、未知状态、紧急状态和重新恢复状态时都发送通知给使用者。host_notification_optionsd,u,r;定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态;;u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。service_notification_commandsnotify-service-by-email;服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件;;其中“notify-service-by-email”在commands.cfg文件中定义。host_notification_commandsnotify-host-by-email;主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件;;其中“notify-host-by-email”在commands.cfg文件中定义。register0;DONTREGISTERTHISDEFINITION-ITSNOTAREALCONTACT,JUSTATEMPLATE!}definehost{namegeneric-host;主机名称,这里的主机名,并不是直接对应到真正机器的主机名;;乃是对应到在主机配置文件里所设定的主机名。notifications_enabled1;Hostnotificationsareenabledevent_handler_enabled1;Hosteventhandlerisenabledflap_detection_enabled1;Flapdetectionisenabledfailure_prediction_enabled1;Failurepredictionisenabledprocess_perf_data1;其值可以为0或1,其作用为是否启用Nagios的数据输出功能;;如果将此项赋值为1,那么Nagios就会将收集的数据写入某个文件中,以备提取。retain_status_information1;Retainstatusinformationacrossprogramrestartsretain_nonstatus_information1;Retainnon-statusinformationacrossprogramrestartsnotification_period24x7;指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。register0;DONTREGISTERTHISDEFINITION-ITSNOTAREALHOST,JUSTATEMPLATE!}definehost{namelinux-server;主机名称usegeneric-host;use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来;;在nagios配置中,很多情况下会用到引用。check_period24x7;这里的check_period告诉nagios检查主机的时间段check_interval5;nagios对主机的检查时间间隔,这里是5分钟。retry_interval1;重试检查时间间隔,单位是分钟。max_check_attempts10;nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况;;而是多试几次,因为有可能只是一时网络太拥挤,或是一些其他原因,让主机受到了一点影响;;这里的10就是最多试10次的意思。check_commandcheck-host-alive;指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义。notification_period24x7;主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义;;下面会陆续讲到。notification_interval10;在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟;;如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0notification_optionsd,u,r;定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态;;u即unreachable,表示不可到达状态;;r即recovery,表示重新恢复状态。contact_groupsts;指定联系人组,这个“admins”在contacts.cfg文件中定义。register0;DONTREGISTERTHISDEFINITION-ITSNOTAREALHOST,JUSTATEMPLATE!}definehost{namewindows-server;Thenameofthishosttemplateusegeneric-host;Inheritdefaultvaluesfromthegeneric-hosttemplatecheck_period24x7;Bydefault,Windowsserversaremonitoredroundtheclockcheck_interval5;Activelychecktheserverevery5minutesretry_interval1;Schedulehostcheckretriesat1minuteintervalsmax_check_attempts10;Checkeachserver10times(max)check_commandcheck-host-alive;Defaultcommandtocheckifserversare"alive"notification_period24x7;Sendnotificationoutatanytime-dayornightnotification_interval10;Resendnotificationsevery30minutesnotification_optionsd,r;Onlysendnotificationsforspecifichoststatescontact_groupsts;Notificationsgetsenttotheadminsbydefaulthostgroupswindows-servers;HostgroupsthatWindowsserversshouldbeamemberofregister0;DONTREGISTERTHIS-ITSJUSTATEMPLATE}defineservice{namegeneric-service;定义一个服务名称active_checks_enabled1;Activeservicechecksareenabledpassive_checks_enabled1;Passiveservicechecksareenabled/acceptedparallelize_check1;Activeservicechecksshouldbeparallelized;;(disablingthiscanleadtomajorperformanceproblems)obsess_over_service1;Weshouldobsessoverthisservice(ifnecessary)check_freshness0;DefaultistoNOTcheckservice'freshness'notifications_enabled1;Servicenotificationsareenabledevent_handler_enabled1;Serviceeventhandlerisenabledflap_detection_enabled1;Flapdetectionisenabledfailure_prediction_enabled1;Failurepredictionisenabledprocess_perf_data1;Processperformancedataretain_status_information1;Retainstatusinformationacrossprogramrestartsretain_nonstatus_information1;Retainnon-statusinformationacrossprogramrestartsis_volatile0;Theserviceisnotvolatilecheck_period24x7;这里的check_period告诉nagios检查服务的时间段。max_check_attempts3;nagios对服务的最大检查次数。normal_check_interval5;此选项是用来设置服务检查时间间隔,也就是说,nagios这一次检查和下一次检查之间所隔的时间;;这里是5分钟。retry_check_interval2;重试检查时间间隔,单位是分钟。contact_groupsts;指定联系人组notification_optionsw,u,c,r;这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态;;u即unknown,表示不明状态;;c即criticle,表示紧急状态,r即recover,表示恢复状态;;也就是在服务出现警告状态、未知状态、紧急状态和重新恢复后都发送通知给使用者。notification_interval10;Re-notifyaboutserviceproblemseveryhournotification_period24x7;指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。register0;DONTREGISTERTHISDEFINITION-ITSNOTAREALSERVICE,JUSTATEMPLATE!}defineservice{namelocal-service;Thenameofthisservicetemplateusegeneric-service;Inheritdefaultvaluesfromthegeneric-servicedefinitionmax_check_attempts4;Re-checktheserviceupto4timesinordertodetermineitsfinal(hard)statenormal_check_interval5;Checktheserviceevery5minutesundernormalconditionsretry_check_interval1;Re-checktheserviceeveryminuteuntilahardstatecanbedeterminedregister0;DONTREGISTERTHISDEFINITION-ITSNOTAREALSERVICE,JUSTATEMPLATE!}
b.resource.cfg文件
resource.cfg是nagios的变量定义文件,文件内容只有一行:
$USER1$=/usr/local/nagios/libexec
其中,变量$USER1$指定了安装nagios插件的路径,如果把插件安装在了其它路径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用。
c. commands.cfg文件
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。
#notify-host-by-email命令的定义definecommand{command_namenotify-host-by-email#命令名称,即定义了一个主机异常时发送邮件的命令。command_line/usr/bin/printf"%b""*****Nagios*****\n\nNotificationType:$NOTIFICATIONTYPE$\nHost:$HOSTNAME$\nState:$HOSTSTATE$\nAddress:$HOSTADDRESS$\nInfo:$HOSTOUTPUT$\n\nDate/Time:$LONGDATETIME$\n"|/bin/mail-s"**$NOTIFICATIONTYPE$HostAlert:$HOSTNAME$is$HOSTSTATE$**"$CONTACTEMAIL$#命令具体的执行方式。}#notify-service-by-email命令的定义definecommand{command_namenotify-service-by-email#命令名称,即定义了一个服务异常时发送邮件的命令command_line/usr/bin/printf"%b""*****Nagios*****\n\nNotificationType:$NOTIFICATIONTYPE$\n\nService:$SERVICEDESC$\nHost:$HOSTALIAS$\nAddress:$HOSTADDRESS$\nState:$SERVICESTATE$\n\nDate/Time:$LONGDATETIME$\n\nAdditionalInfo:\n\n$SERVICEOUTPUT$\n"|/bin/mail-s"**$NOTIFICATIONTYPE$ServiceAlert:$HOSTALIAS$/$SERVICEDESC$is$SERVICESTATE$**"$CONTACTEMAIL$}#check-host-alive命令的定义definecommand{command_namecheck-host-alive#命令名称,用来检测主机状态。command_line$USER1$/check_ping-H$HOSTADDRESS$-w3000.0,80%-c5000.0,100%-p5#这里的变量$USER1$在resource.cfg文件中进行定义,即$USER1$=/usr/local/nagios/libexec;#那么check_ping的完整路径为/usr/local/nagios/libexec/check_ping;#“-w3000.0,80%”中“-w”说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。#“-c5000.0,100%”中“-c”说明后面的一对值对应的是“CRITICAL”,“100%”是其临界值。#“-p1”说明每次探测发送一个包。}definecommand{command_namecheck_local_diskcommand_line$USER1$/check_disk-w$ARG1$-c$ARG2$-p$ARG3$#$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。}definecommand{command_namecheck_local_loadcommand_line$USER1$/check_load-w$ARG1$-c$ARG2$}definecommand{command_namecheck_local_procscommand_line$USER1$/check_procs-w$ARG1$-c$ARG2$-s$ARG3$}definecommand{command_namecheck_local_userscommand_line$USER1$/check_users-w$ARG1$-c$ARG2$}definecommand{command_namecheck_local_swapcommand_line$USER1$/check_swap-w$ARG1$-c$ARG2$}definecommand{command_namecheck_ftpcommand_line$USER1$/check_ftp-H$HOSTADDRESS$$ARG1$}definecommand{command_namecheck_httpcommand_line$USER1$/check_http-I$HOSTADDRESS$$ARG1$}definecommand{command_namecheck_sshcommand_line$USER1$/check_ssh$ARG1$$HOSTADDRESS$}definecommand{command_namecheck_pingcommand_line$USER1$/check_ping-H$HOSTADDRESS$-w$ARG1$-c$ARG2$-p5}definecommand{command_namecheck_ntcommand_line$USER1$/check_nt-H$HOSTADDRESS$-p12489-v$ARG1$$ARG2$}
d.hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,根据实验目标配置如下:
definehost{uselinux-server#引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。host_nameNagios-Linux#主机名aliasNagios-Linux#主机别名address192.168.1.111#被监控的主机地址,这个地址可以是ip,也可以是域名。}#定义一个主机组definehostgroup{hostgroup_namebsmart-servers#主机组名称,可以随意指定。aliasbsmartservers#主机组别名membersNagios-Linux#主机组成员,其中“Nagios-Linux”就是上面定义的主机。}
注意:在/etc/nagios/objects 下默认有localhost.cfg 和windows.cfg 这两个配置文件,localhost.cfg 文件是定义监控主机本身的,windows.cfg 文件是定义windows 主机的,其中包括了对host 和相关services 的定义。所以在本次实验中,将直接在localhost.cfg 中定义监控主机(Nagios-Server),在windows.cfg中定义windows 主机(Nagios-Windows)。根据自己的需要修改其中的相关配置,详细如下:
localhost.cfg
################################################################################LOCALHOST.CFG-SAMPLEOBJECTCONFIGFILEFORMONITORINGTHISMACHINE###NOTE:Thisconfigfileisintendedtoserveasan*extremely*simple#exampleofhowyoucancreateconfigurationentriestomonitor#thelocal(Linux)machine.################################################################################################################################################################################################################################################HOSTDEFINITION################################################################################################################################################################Defineahostforthelocalmachinedefinehost{uselinux-serverhost_name10.0.0.14alias10.0.0.14address127.0.0.1}################################################################################################################################################################HOSTGROUPDEFINITION################################################################################################################################################################DefineanoptionalhostgroupforLinuxmachinesdefinehostgroup{hostgroup_namelinux-serversaliasLinuxServersmembers10.0.0.14}################################################################################################################################################################SERVICEDEFINITIONS################################################################################################################################################################Defineaserviceto"ping"thelocalmachinedefineservice{uselocal-servicehost_name10.0.0.14service_descriptionPINGcheck_commandcheck_ping!100.0,20%!500.0,60%}#Defineaservicetocheckthediskspaceoftherootpartition#onthelocalmachine.Warningif<20%free,criticalif#<10%freespaceonpartition.defineservice{uselocal-servicehost_name10.0.0.14service_descriptionRootPartitioncheck_commandcheck_local_disk!20%!10%!/}#Defineaservicetocheckthenumberofcurrentlyloggedin#usersonthelocalmachine.Warningif>20users,critical#if>50users.defineservice{uselocal-servicehost_name10.0.0.14service_descriptionCurrentUserscheck_commandcheck_local_users!20!50}#Defineaservicetocheckthenumberofcurrentlyrunningprocs#onthelocalmachine.Warningif>250processes,criticalif#>400users.defineservice{uselocal-servicehost_name10.0.0.14service_descriptionTotalProcessescheck_commandcheck_local_procs!250!400!RSZDT}#Defineaservicetochecktheloadonthelocalmachine.defineservice{uselocal-servicehost_name10.0.0.14service_descriptionCurrentLoadcheck_commandcheck_local_load!5.0,4.0,3.0!10.0,6.0,4.0}#Defineaservicetochecktheswapusagethelocalmachine.#Criticaliflessthan10%ofswapisfree,warningiflessthan20%isfreedefineservice{uselocal-servicehost_name10.0.0.14service_descriptionSwapUsagecheck_commandcheck_local_swap!20!10}#DefineaservicetocheckSSHonthelocalmachine.#Disablenotificationsforthisservicebydefault,asnotallusersmayhaveSSHenabled.defineservice{uselocal-servicehost_name10.0.0.14service_descriptionSSHcheck_commandcheck_sshnotifications_enabled0}#DefineaservicetocheckHTTPonthelocalmachine.#Disablenotificationsforthisservicebydefault,asnotallusersmayhaveHTTPenabled.defineservice{uselocal-servicehost_name10.0.0.14service_descriptionHTTPcheck_commandcheck_httpnotifications_enabled0}
windows.cfg
definehost{usewindows-server;Inheritdefaultvaluesfromatemplatehost_nameNagios-Windows;Thenamewe'regivingtothishostaliasMyWindowsServer;Alongernameassociatedwiththehostaddress192.168.1.113;IPaddressofthehost}definehostgroup{hostgroup_namewindows-servers;ThenameofthehostgroupaliasWindowsServers;Longnameofthegroup}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionNSClient++Versioncheck_commandcheck_nt!CLIENTVERSION}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionUptimecheck_commandcheck_nt!UPTIME}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionCPULoadcheck_commandcheck_nt!CPULOAD!-l5,80,90}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionMemoryUsagecheck_commandcheck_nt!MEMUSE!-w80-c90}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionC:\DriveSpacecheck_commandcheck_nt!USEDDISKSPACE!-lc-w80-c90}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionW3SVCcheck_commandcheck_nt!SERVICESTATE!-dSHOWALL-lW3SVC}defineservice{usegeneric-servicehost_nameNagios-Windowsservice_descriptionExplorercheck_commandcheck_nt!PROCSTATE!-dSHOWALL-lExplorer.exe}
e.services.cfg文件
此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务和主机资源,例如监控http服务、ftp服务、主机磁盘空间、主机系统负载等等。Nagios-Server 和Nagios-Windows 相关服务已在相应的配置文件中定义,所以这里只需要定义Nagios-Linux 相关服务即可,这里只定义一个检测是否存活的服务来验证配置文件的正确性,其他服务的定义将在后面讲到。
defineservice{uselocal-service#引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。host_nameNagios-Linux#指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。service_descriptioncheck-host-alive#对监控服务内容的描述,以供维护人员参考。check_commandcheck-host-alive#指定检查的命令。}
f.contacts.cfg文件
contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障,nagios会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者。
definecontact{contact_nameDavid#联系人的名称,这个地方不要有空格usegeneric-contact#引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义aliasNagiosAdminemaildavid.tang@bsmart.cn}definecontactgroup{contactgroup_namets#联系人组的名称,同样不能空格aliasTechnicalSupport#联系人组描述membersDavid#联系人组成员,其中“david”就是上面定义的联系人,如果有多个联系人则以逗号相隔}
g.timeperiods.cfg文件
此文件只要用于定义监控的时间段,下面是一个配置好的实例:
#下面是定义一个名为24x7的时间段,即监控所有时间段
definetimeperiod{timeperiod_name24x7#时间段的名称,这个地方不要有空格alias24HoursADay,7DaysAWeeksunday00:00-24:00monday00:00-24:00tuesday00:00-24:00wednesday00:00-24:00thursday00:00-24:00friday00:00-24:00saturday00:00-24:00}
#下面是定义一个名为workhours的时间段,即工作时间段。
definetimeperiod{timeperiod_nameworkhoursaliasNormalWorkHoursmonday09:00-17:00tuesday09:00-17:00wednesday09:00-17:00thursday09:00-17:00friday09:00-17:00}
h.cgi.cfg文件
此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件了。
由于nagios的web监控界面验证用户为david,所以只需在cgi.cfg文件中添加此用户的执行权限就可以了,需要修改的配置信息如下:
default_user_name=davidauthorized_for_system_information=nagiosadmin,davidauthorized_for_configuration_information=nagiosadmin,davidauthorized_for_system_commands=davidauthorized_for_all_services=nagiosadmin,davidauthorized_for_all_hosts=nagiosadmin,davidauthorized_for_all_service_commands=nagiosadmin,davidauthorized_for_all_host_commands=nagiosadmin,david
附件查看我生产环境的配置文件
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。