Centos 6.4 nagios搭建(二)之详细介绍
https://blog.51niux.com/?id=40 这里已经简单记录了nagios服务器端与客户端的安装过程,下面这篇文章会较详细的说明一下。
针对上面小说三点:
首先nagios用户并不用必须存在,也可以是其他用户,但是nagios里面的所属的用户不能为root。
nagios不用非要像上文一样,每个客户端都要装一遍,除了yum相关软件包必须安装以外,完全可以直接将客户端的nagios目录复制到其他客户端上面去,做好授权就可以了。
上文的nrpe启动并没有做成启动脚本,在生产中包括其他服务,如果没有自带启动脚本,我们最好自行编写一个。
好了,下面进入正文。
一、 关于nagios图形界面的简单说明
nagios的图形界面功能也越来越强大,但是我们用nagios主要用他强大的报警功能,所以好多图形功能我们是可以不用去研究的。
二、 关于nagios目录结构的说明
# tree -L 2 /usr/local/nagios/
/usr/local/nagios/ #这是nagios的主目录
|-- bin #这是nagios的命令目录,可以看到下面有四个命令
| |-- nagios
| |-- nagiostats
| |-- nrpe
| `-- nrpe-uninstall
|-- etc #nagios的配置文件位置,这个是比较重要的地方
| |-- cgi.cfg #控制CGI访问的配置目录
| |-- group #这是我自己创建的目录,用于存放主机组的配置文件
| |-- hosts #这是我自己创建的目录,用于存放主机的配置文件,线上那么多机器我们不可能把一个所有主机都写到一个.cfg文件中
| |-- htpasswd.user #web登录的认证文件
| |-- nagios.cfg #nagios的主配置文件
| |-- nrpe.cfg #客户端的配置文件
| |-- objects #这是一个目录,目录下面有(commands.cfg #命令定义配置文件,里面定义的命令可以被其他文件引用,contacts.cfg #联系人和联系人组配置文件,localhost.cfg #监控本地机器的配置文件,printer.cfg #监控打印机的一个事例配置文件(默认未启用),switch.cfg #监控路由器的一个事例配置文件(默认未启用),templates.cfg #模板配置文件,在此可以定义模板,在其他文件中引用,timeperiods.cfg #定义监控时间段的配置文件,
windows.cfg #监控Windows的一个事例配置文件(默认未启用))
| |-- resource.cfg #定义了一些变量,以便被其他文件引用,如$USER1$)
| `-- service #这是我自己定义的目录,用于将所有的服务定义到这个目录里面,当然还应该再创建一个servicegroup目录存放服务组配置文件
|-- include #空目录,Nagioscgi文件的外部调用
|-- libexec #nagios插件目录,里面有具体监控的各种插件,下面都是相关的基本监控插件
| |-- check_apt
| |-- check_breeze
| |-- check_by_ssh
| |-- check_clamd -> check_tcp
| |-- check_cluster
| |-- check_dhcp
| |-- check_dig
| |-- check_disk
| |-- check_disk_smb
| |-- check_dns
| |-- check_dummy
| |-- check_file_age
| |-- check_flexlm
| |-- check_ftp -> check_tcp
| |-- check_hpjd
| |-- check_http
| |-- check_icmp
| |-- check_ide_smart
| |-- check_ifoperstatus
| |-- check_ifstatus
| |-- check_imap -> check_tcp
| |-- check_ircd
| |-- check_jabber -> check_tcp
| |-- check_load
| |-- check_log
| |-- check_mailq
| |-- check_mrtg
| |-- check_mrtgtraf
| |-- check_mysql
| |-- check_mysql_query
| |-- check_nagios
| |-- check_nntp -> check_tcp
| |-- check_nntps -> check_tcp
| |-- check_nrpe
| |-- check_nt
| |-- check_ntp
| |-- check_ntp_peer
| |-- check_ntp_time
| |-- check_nwstat
| |-- check_oracle
| |-- check_overcr
| |-- check_ping
| |-- check_pop -> check_tcp
| |-- check_procs
| |-- check_real
| |-- check_rpc
| |-- check_sensors
| |-- check_simap -> check_tcp
| |-- check_smtp
| |-- check_snmp
| |-- check_spop -> check_tcp
| |-- check_ssh
| |-- check_ssmtp -> check_tcp
| |-- check_swap
| |-- check_tcp
| |-- check_time
| |-- check_udp -> check_tcp
| |-- check_ups
| |-- check_uptime
| |-- check_users
| |-- check_wave
| |-- negate
| |-- urlize
| |-- utils.pm
| `-- utils.sh
|-- perl
| |-- bin
| |-- lib
| `-- man
|-- sbin #Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
| |-- archivejson.cgi
| |-- avail.cgi
| |-- cmd.cgi
| |-- config.cgi
| |-- extinfo.cgi
| |-- histogram.cgi
| |-- history.cgi
| |-- notifications.cgi
| |-- objectjson.cgi
| |-- outages.cgi
| |-- showlog.cgi
| |-- status.cgi
| |-- statusjson.cgi
| |-- statusmap.cgi
| |-- statuswml.cgi
| |-- statuswrl.cgi
| |-- summary.cgi
| |-- tac.cgi
| `-- trends.cgi
|-- share #Nagios网页文件所在的目录,也就是web页面给我们展示的文件
| |-- angularjs
| |-- bootstrap-3.3.0
| |-- config.inc.php
| |-- contexthelp
| |-- d3
| |-- docs
| |-- graph-header.html
| |-- histogram-form.html
| |-- histogram-graph.html
| |-- histogram-links.html
| |-- histogram.html
| |-- images
| |-- includes
| |-- index.php
| |-- infobox.html
| |-- js
| |-- jsonquery.html
| |-- locale
| |-- main.php
| |-- map-directive.html
| |-- map-form.html
| |-- map-links.html
| |-- map-popup.html
| |-- map.php
| |-- media
| |-- robots.txt
| |-- side.php
| |-- spin
| |-- ssi
| |-- stylesheets
| |-- trends-form.html
| |-- trends-graph.html
| |-- trends-host-yaxis.html
| |-- trends-links.html
| |-- trends-service-yaxis.html
| `-- trends.html
`-- var #Nagios日志文件、spid 等文件所在的目录
|-- archives
|-- nagios.configtest
|-- nagios.lock
|-- nagios.log
|-- nrpe.pid
|-- objects.cache
|-- objects.precache
|-- retention.dat
|-- rw
|-- spool
`-- status.dat
博文来自:www.51niux.com
三、nagios一些重要配置文件的详解
3.1 nagios.cfg配置文件详解(里面大部分是不用修改的,一般也就是添加一些目录之类的)
# cat nagios.cfg|grep -v "^#"|grep -v "^$" #默认注释的就不说明
log_file=/usr/local/nagios/var/nagios.log #设置nagios的主日志文件路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg #命令定义配置文件路径
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg #联系人和联系人组配置文件位置
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg #监控时间段配置文件位置
cfg_file=/usr/local/nagios/etc/objects/templates.cfg #模板配置文件位置
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg #这是本机的定义配置文件
cfg_dir=/usr/local/nagios/etc/hosts #如果指定目录位置的话就如这行和下面两行
cfg_dir=/usr/local/nagios/etc/group
cfg_dir=/usr/local/nagios/etc/service
object_cache_file=/usr/local/nagios/var/objects.cache #设置对象缓存文件的路径(对象缓存文件。这些选项将决定当Nagios启动时或重新启动时,对象定义将被缓存在什么地方。CGI将从这个对象文件中读取对象的定义,而不是在之前的对象配置文件路径中去找。这样做是为了避免修改Nagios配置文件后引起的不一致问题。换句简单的话说就是更改配置文件后要重新运新Nagios新的配置参数才会生效,而当前运行的Nagios只参考缓存中的配置参数而已。)
precached_object_file=/usr/local/nagios/var/objects.precache # 对象定义预缓存文件,可以加速nagios的启动
resource_file=/usr/local/nagios/etc/resource.cfg #指定变量定义配置文件的位置(其中,变量$USER1$指定了安装nagios插件的路径,如果把插件安装在了其它路径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用。)
status_file=/usr/local/nagios/var/status.dat #状态文件位置,此文件用于保存nagios的当前状态、注释和宕机信息等。
status_update_interval=10 #状态文件(即status.dat)的更新时间间隔,单位是秒,最小更新间隔是1秒。
nagios_user=nagios #Nagios进程使用哪个用户运行。
nagios_group=nagios #Nagios进程使用哪个用户组运行。
check_external_commands=1 #是否检测外部命令。默认是不启用的,但是由于需要配合Apache工作,在Web界面下进行Nagiso的控制和管理的话,必须要将此项打开。(外部命令选项。这个选项允许用户指定是否Nagios应该对外部的命令进行检查。默认下,Nagios将不会检查外部命令,如果需要能够使用CGI命令接口的话,那么就必须要启用这个选项。设定0值表示关闭命令检查(默认),其它值表示启用。)
注(nagios版本4系列配置文件里没有下面这句话了):
这个配置选项是用来指定外部命令检测的频率。默认值-1表示Nagios将会尽可能频繁地进行检测。这里的配置的数值如果不加上单位的话,默认单位表示分钟,如1就是表示1分钟,Nagios每分钟检测一次。如果要指定单位是秒的话,那么需要在数值后面跟上s,如15s就表示15秒。
command_check_interval=15s
#command_check_interval=-1
设定外部命令检测时间间隔。默认值是-1,Nagios会尽可能频繁地进行检测,这样会造成系统资源换的巨大消耗。这里还是建议将此条注释,而将另外一条备选的15s的项解注,让Nagios每15秒进行一次检测好了。具体值请根据具体情况决定。
command_file=/usr/local/nagios/var/rw/nagios.cmd #外部命令文件的路径(这是Nagios用来检查外部命令请求的文件。这个文件同样也是用户操作提交与CGI命令写入的地方,所以这个文件必须对于相关服务可写,一般是针对Apache的宿主用户可写。并且注意,这个文件所在的目录的权限必须被Apache可写,而不单指这文件,因为这个文件在工作当中是频繁被删除的。(之前我们将Apahe归入Nagios组的时候就已经完成了))
lock_file=/usr/local/nagios/var/nagios.lock
temp_file=/usr/local/nagios/var/nagios.tmp #nagios临时文件的位置(这是当Nagios更新状态日至、清除注解文件等等工作时暂时保留文件内容的临时文件。它将在Nagios运行时不停地被建立、使用和删除。)
temp_path=/tmp
event_broker_options=-1 #设定事件代理。默认值就是-1。(控制事件代理将受理什么样的数据。设定0值时表示不代理任何东西,设定-1值时表示代理任何信息)
log_rotation_method=d #设定主日志循环方式,默认是每天循环。(值n表示none,不做循环,值h表示hourly,每小时循环一次(每小时的开始),值d表示daily,每天循环一次。(每天的午夜),值w表示weekly,每周循环一次。(每周六的晚上),值m表示monthly,每月循环一次。(每上个月的最后一天的午夜))
log_archive_path=/usr/local/nagios/var/archives #指定日志归档路径,这个路径将作为日志归档存放的地方(需要上面日志循环设定启用)
use_syslog=1 #默认设定Nagio信息加入系统日志。值1表示加入,值0表示不加入。
log_notifications=1 #默认设定Nagios的通知信息是记录的。0为不记录,1为记录
log_service_retries=1 #设定记录服务重启信息。0为不记录,1为记录。
log_host_retries=1 #设定记录主机重启信息。0为不记录,1为记录。
log_event_handlers=1 #启用记录事件处理程序信息。
log_initial_states=0 #默认不记录初始化状态信息。
log_current_states=1
log_external_commands=1 #设定记录外部命令信息
log_passive_checks=1 #设定记录被动检查信息。
service_inter_check_delay_method=s #默认设定服务间检查间隔采用smart算法。(这是Nagios启动初始化、对服务展开监控的时候使用的方式。默认情况下使用smart延时计算方式,它将尽力分隔开所有服务的检查,平衡地减少CPU届时的负载。如使用dump方式会造成所有检查作业在初始化时并发(这种方式下它们之间将没有时间延迟间隙)。值n表示none,不做任何任何延迟。值d表示dump,表示在两个相邻的检查之间做1秒钟的延迟。值s表示smart,表示默认精简方式安排延迟。值x.xx表示手动定制每相邻的检查之间固定的x.xx秒延迟。)
max_service_check_spread=30 #默认最大服务检查扩张是30分钟。(这个变量值决定了从程序开始时间起,对所有服务进行一次初始化检查完成的时间框架。默认是30分钟。)
service_interleave_factor=s #默认下交错因数为s,即smart精简算法。(这个变量决定了服务检查之间是如何被交错检查的。交错的服务检查将更加离散化,并且减少远程主机的负载。设定值分为s,或者任何比1大的数字。)
host_inter_check_delay_method=s #默认设定主机间检查间隔是采用smart算法。
max_host_check_spread=30 #默认最大主机检查扩张是30分钟。
max_concurrent_checks=0 #默认下这个参数设定是0。(这个选项将影响Nagios任一时刻间对服务检查的并发数量。设定值1的话会防止任何并发的服务检查。如果设定值0的话,每一时刻的服务检查并发数量将不严格按照当时实际执行的服务并发数量。)
check_result_reaper_frequency=10 #默认Nagios将服务检查结果进行处理的频率频率值设定为10
max_check_result_reaper_time=30 #该选项决定主机和服务检测结果回收时对结果回收时间段的控制,这个值是个以秒为单位的最大时间跨度。从主机和服务的检测过程里“回收”事件处理结果将是对已经执行结束的检测。如果有许多结果要处理,回收事件过程将占用很长时间来完成它,这将延迟对新的主机和服务检测的执行。该选项可以限制从检测结果得到与回收处理之间的最大时间间隔以使Nagios可以完成对其他监控逻辑的转换处理。
check_result_path=/usr/local/nagios/var/spool/checkresults #检测结果保存路径,该选项决定了Nagios将在处理检测结果之前使用哪个目录来保存主机和服务检测结果。这个目录不能保存其他文件,因为Nagios会周期性地清理这个目录下的旧文件。注意:确保只有一个Nagios的实例在操作检测结果保存路径。如果有多个Nagios的实例来操作相同的目录,将会因为错误的Nagios实例不正确地处理导致有错误结果!
max_check_result_file_age=3600 #检测结果文件的最大生存时间,该选项决定用最大多少秒来限定那些在check_result_path设置所指向目录里的检测结果文件是合法的。如果检测结果文件超出了这个门限,Nagios将会把过旧的文件删除而且不会处理内含的检测结果。若设置该选项为0,Nagios将处理全部的检测结果文件-即便这些文件比你的硬件还老旧。
cached_host_check_horizon=15 #此选项确定先前主机检查的状态被视为当前的最大时间量(以秒为单位)。 缓存的主机状态(从最近执行的主机检查比此值指定的时间)可以极大地提高主机检查性能。 此选项的值太高可能导致(临时)不正确的主机状态,而较低的值可能导致主机检查的性能损失。 如果要禁用主机检查缓存,请使用值0。
cached_service_check_horizon=15 #此选项确定先前服务检查的状态被视为当前的最大时间量(以秒为单位)。 缓存服务状态(从最近执行的服务检查比此值指定的时间)可以在使用大量服务依赖性时提高服务检查性能。 此选项的值太高可能导致服务依赖性逻辑中的不准确。 如果要禁用服务检查高速缓存,请使用值0。
enable_predictive_host_dependency_checks=1 #此选项确定Nagios是否会在特定主机更改状态时对其依赖的主机(如主机依赖关系中定义的)执行预测性检查。预测性检查有助于确保依赖性逻辑尽可能准确。0禁用1启用
enable_predictive_service_dependency_checks=1 #预测服务依赖性检查选项
soft_state_dependencies=0 #此选项确定在检查主机和服务依赖性时Nagios是否将使用软状态信息。 通常,Nagios只会在检查依赖关系时使用最新的硬主机或服务状态。默认不启用,如果启用改为1.
auto_reschedule_checks=0 #自动计划检测选项,该选项决定了Nagios是否要试图自动地进行计划的自主检测主机与服务以使在之后的时间里检测更为“平滑”。这可以使得监控主机保持一个均衡的负载,也使得在持续检测之间的保持相对一致,其代价是要更刚性地按计划执行检测工作。
auto_rescheduling_interval=30 #此选项确定Nagios尝试自动重新安排检查的频率(以秒为单位)。 仅当启用了auto_reschedule_checksauto_reschedule_checks选项时,此选项才有效。 默认值为30秒。
auto_rescheduling_window=180 #此选项确定Nagios在自动重新计划检查时将查看的时间(以秒为单位)的“窗口”。 只有在接下来的X秒(由此变量确定)中发生的主机和服务检查才会重新计划。 默认值为180秒(3分钟)。
service_check_timeout=60 #服务检测超时,这是Nagios允许服务检查运行的最大秒数。 如果检查超过此限制,它们将被终止,并返回一个紧急状态。 还将记录超时错误。
host_check_timeout=30 #主机检测超时,这是Nagios允许主机检查运行的最大秒数。 如果检查超过此限制,它们将被终止,并返回紧急状态,并且主机将被假定为DOWN。 还将记录超时错误。
event_handler_timeout=30 #事件处理超时,这是Nagios允许运行事件处理程序的最大秒数。 如果事件处理程序超过此时间限制,它将被终止并记录一个警告。
notification_timeout=30 #通知超时,这是Nagios允许运行通知命令的最大秒数。 如果通知命令超过此时间限制,它将被终止并记录一个警告。
ocsp_timeout=5 #这是Nagios允许强制服务处理超时命令的最大秒数。 如果命令超过此时间限制,它将被终止并记录一个警告。
perfdata_timeout=5 #性能数据处理命令超时,这是Nagios允许运行host_perfdata_commandhost性能数据处理器命令或service_perfdata_commandservice性能数据处理器命令的最大秒数。 如果命令超过此时间限制,它将被终止并记录一个警告。
retain_state_information=1 #该选项决定了Nagios是否要在程序的两次启动之间保存主机和服务的状态信息。
state_retention_file=/usr/local/nagios/var/retention.dat #状态保存文件,该文件用于在Nagios停止之前保存状态、停机时间和注释等信息。当Nagios重启时它会在开始监控工作之前使用保存于这个文件里的信息用于初始化主机与服务的状态。
retention_update_interval=60 #自动状态保持的更新间隔,该选项决定了Nagios需要以什么频度(分钟为单位)在正常操作时自动地保存状态保持信息。如果你把这个值设置为0,Nagios将不会以规则的间隔保存状态保持数据,但是Nagios仍旧会在停机或重启之前做保存状态保持数据的工作。如果你关闭了状态保持功能(用retain_state_information选项设置),这个选项值将无效。
use_retained_program_state=1 #程序所用状态的使用选项,这个设置将决定了Nagios是否要使用保存于状态保持文件之中的值以更新程序范围内的变量状态。有些程序范围内的变量的状态将在程序重启时被保存于状态保持文件之中,包括enable_notifications、enable_flap_detection、enable_event_handlers、execute_service_checks和accept_passive_service_checks选项。如果你没有使用retain_state_information状态保持选项使能,这个选项将无效。
use_retained_scheduling_info=1 #使用保持计划表信息选项,该选项决定Nagios在重启时是否要使用主机和服务的保持计划表信息(下次检测时间)。如果增加了很多数量(或很大百分比)的主机和服务,建议你在首次重启动Nagios时关闭选项,因为这个选项将会使初始检测误入歧途。
retained_host_attribute_mask=0 #保持主机属性掩码,默认情况下,全部主机的属性都会被保持。
retained_service_attribute_mask=0 #保持服务属性掩码,默认情况下,全部服务的属性都会被保持。
retained_process_host_attribute_mask=0 #保持进程属性掩码,默认情况下保持。
retained_process_service_attribute_mask=0 #保持进程属性掩码,默认情况下保持。
retained_contact_host_attribute_mask=0 #保持联系人属性掩码,默认情况下保持。
retained_contact_service_attribute_mask=0 #保持联系人属性掩码,默认情况下保持。
interval_length=60 #计数间隔长度,单位秒,单位间隔用于计数计划队列处理、再次通知等。单位间隔在对象配置文件被用于决定以何频度运行服务检测、以何频度与联系人再通知等。
check_for_updates=1
bare_update_check=0
use_aggressive_host_checking=0 #Nagios试图聪明的如何和何时检查主机的状态。 一般来说,禁用此选项将允许Nagios做出一些更明智的决定,并检查主机更快一点。 启用此选项将增加检查主机所需的时间,但可能会提高可靠性。 除非你有Nagios没有意识到主机恢复的问题,建议不启用此选项。
execute_service_checks=1 #这个选项指定了Nagios在初始的启动或重启时是否要执行服务检测
accept_passive_service_checks=1 #该选项决定了Nagios在其初始化启动或重启后是否要授受强制服务检测,如果它关闭了,Nagios将不会接受任何强制服务检测结果。
execute_host_checks=1 #该选项将决定Nagios在初始地启动或重启时是否执行按需地和有规律规划检测。
accept_passive_host_checks=1 #该选项决定了在Nagios初始启动或重启后是否要接受强制主机检测结果。如果这个选项关闭,Nagios将不再接受任何强制主机检测结果。
enable_notifications=1 #该选项决定了Nagios在初始化启动或重启动时是否要送出通知。如果这个选项不使能,Nagios将不会向任何主机或服务送出通知。
enable_event_handlers=1 #该选项决定了在Nagios初始启动或重启后是否要运行事件处理,如果该选项关闭,Nagios将不做任何主机或服务的事件处理。
process_performance_data=0 #该选项决定Nagios是否要处理主机和服务检测性能数据。
obsess_over_services=0 #此值确定Nagios是否会“痴迷”服务检查结果,如果不进行分布式监控,请不要启用此选项
obsess_over_hosts=0 #此值确定Nagios是否会对主机检查结果“执行”,如果不进行分布式监控,请不要启用此选项。
translate_passive_host_checks=0 #此选项确定Nagios将从本地Nagios实例的角度看是否将DOWN / UNREACHABLE被动主机检查结果设置为其“正确”状态。
passive_host_checks_are_soft=0 #此选项确定Nagios是否将被动主机检查视为HARD(0)状态或SOFT(1)状态。 默认情况下,被动主机检查结果将使主机进入HARD状态类型。 您可以通过启用此选项更改此行为。
check_for_orphaned_services=1 #此选项允许您启用或禁用孤立服务检查的检查。 孤立服务检查是已执行并已从事件队列中删除,但没有长时间报告结果的检查。 由于服务没有返回结果,因此不会在事件队列中重新计划。 这可能导致服务检查停止执行。
check_for_orphaned_hosts=1 #此选项允许您启用或禁用孤立主机检查的检查。 孤立主机检查是已执行并已从事件队列中删除,但没有长时间报告任何结果的检查。 由于主机未返回任何结果,因此不会在事件队列中重新计划。 这可能导致主机检查停止执行。
check_service_freshness=1 #服务更新检测
service_freshness_check_interval=60 #服务更新检测间隔,单位是秒。
service_check_timeout_state=c
check_host_freshness=0 #主机更新检测
host_freshness_check_interval=60 #主机更新检测间隔,单位是秒。
additional_freshness_latency=15 #此选项确定Nagios将添加到自动计算的任何主机或服务新鲜度阈值(例如,用户未指定的明确性)的秒数。
enable_flap_detection=1 #此选项确定Nagios是否将尝试和检测“闪现”的主机和服务。 当主机或服务在状态之间频繁更改时,会发生振荡,导致发送通知的障碍。 当Nagios检测到主机或服务正在闪现时,它会暂时阻止该主机/服务的通知,直到它停止震荡。 挡板检测在这一点上是非常实验性的,因此谨慎使用此功能!
low_service_flap_threshold=5.0 #服务抖动低阀值,单位为秒。
high_service_flap_threshold=20.0 #服务抖动高阀值
low_host_flap_threshold=5.0 #主机抖动的低阀值
high_host_flap_threshold=20.0 #主机抖动的高阀值
date_format=us #此选项允许您指定Nagios在Web界面和日期/时间宏中应使用的日期/时间格式。
illegal_object_name_chars=`~!$%^&*|'"<>?,()= #非法对象字符
illegal_macro_output_chars=`~$&|'"<> #非法宏输出字符
use_regexp_matching=0 #此选项确定对象定义中的各种指令是否将作为正则表达式处理。默认不适用正则表达式匹配。
use_true_regexp_matching=0 #如果已使用use_regexp_matching选项启用了各种对象伪指令的正则表达式匹配,则此选项将确定何时将对象伪指令视为正则表达式。 如果禁用此选项(默认),则只有在包含*,?,+或\ ..时,指令才会被视为正则表达式。如果启用此选项,所有相应的指令将被视为正则表达式 默认不启用
admin_email=nagios@localhost #管理员邮箱,这是本地计算机管理员(即Nagios正在运行的计算机)的电子邮件地址。 此值可以在通知命令中使用$ ADMINEMAIL $宏。
admin_pager=pagenagios@localhost #管理员BP机账户,这是本地计算机(即Nagios正在运行的计算机)管理员的寻呼机号码(或寻呼机电子邮件网关)。 寻呼机号/地址可以在通知命令中使用$ ADMINPAGER $宏。
daemon_dumps_core=0
use_large_installation_tweaks=0 #此选项确定Nagios守护程序是否将使用几个快捷方式来提高性能。 这些快捷方式导致几个功能的损失,但是更大的安装可能会看到很多好处。默认不启用。
enable_environment_macros=0 #环境变量中标准宏可用性选项,此选项确定Nagios守护程序是否将所有标准宏作为您的检查,通知,事件处理程序等命令的环境变量。 在大型Nagios安装中,这可能会有问题,因为它需要额外的内存和(更重要的是)CPU来计算所有宏的值并使它们可用于环境。
debug_level=0 #调试等级,该选项决定Nagios将往debug_file文件里写入什么调试信息。默认无日志。
debug_verbosity=1 #此选项确定Nagios应该向debug_filedebug_file写入多少调试信息。默认是1更多详细信息,0为基本信息,2是高度详细信息。
debug_file=/usr/local/nagios/var/nagios.debug #调式文件的位置
max_debug_file_size=1000000 #该选项定义了以字节为单位的debug_file调试文件最大长度。如果文件增至大于该值,将会自动被命名为.old扩展名的文件,如果.old扩展名已经存在,那么旧.old文件将被删除。这可以保证在Nagios调试时磁盘空间不会过多占用而失控。
allow_empty_hostgroup_assignment=0
注:更多参数讲解请查看官网文档:http://nagios-cn.sourceforge.net/nagios-cn/index.html
http://nagios-cn.sourceforge.net/nagios-cn/configuration.html
博文来自:www.51niux.com
3.2 commands.cfg配置文件详解
#可以通过web页面:Configuration(左下角)==》Object Type:(选择Commands)==>Continue来查看。
# vi /usr/local/nagios/etc/objects/commands.cfg #一些有代表性和可能会用到的配置
# 'notify-host-by-email' command definition #这是注释说明
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$
} #这是主机邮件告警设置
邮件格式为:
标题:**通知类型(PROBLEM|RECOVERY) Host Alert:主机名称 is 主机状态**
邮件内容:
***** Nagios *****
Notification Type: 通知类型(PROBLEM|RECOVERY)
Host:主机名称
State:主机状态(DOWN/UP)
Address: IP地址
Info:内容类似于括号内的内容(PING CRITICAL - Packet loss = 100%)
Date/Time: 报警触发的时间,如括号中(Fri Dec 16 09:13:21 CST 2016)
# 'notify-service-by-email' command definition
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$
}
邮件格式为:
标题:** 通知类型(PROBLEM|RECOVERY)Service Alert: 主机名称/nagios监控项 is nagios状态(OK|WARNING|CRITICAL|UNKOWN) **
邮件内容:
***** Nagios *****
Notification Type: 通知类型(PROBLEM|RECOVERY)#(问题|恢复)
Service:监控的服务项
Host:主机名称
Address:主机IP
State:nagios状态(OK|WARNING|CRITICAL|UNKOWN)
Date/Time: 通知触发时间
Additional Info:
通知的详细信息(如:CRITICAL - 215 MB ( 02%) Free Memory或者CHECKGANGLIA OK: load_one is 8.74)
注:
到这里插一嘴,为什么我要把主机和服务的邮件格式罗列一下呢,一是为了方便我们日后更改通知的信息与格式,而是如果我们自建邮件服务器用来收发监控信息的话,可以看到报警是有固定格式的,我们可以基于此对邮件进行分析以实现服务自动的处理问题。
# 'check-host-alive' command definition
define command{
command_name check-host-alive #监控主机存活状态
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
} #resource.cfg文件里面定义$USER1$=/usr/local/nagios/libexec,所以这里是调用/usr/local/nagios/libexec/check_ping 插件,-H 监控主机IP,延时>3000ms或者丢包率大于80%为WARNING告警状态;延时>5000ms或者丢包率为100%为CRITICAL危险状态,即宕机。-p 5为发五个包
# 'check_local_disk' command definition
define command{
command_name check_local_disk #监控磁盘空间的命令
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
} #-w 百分比数 -c 百分比数 -p 要监控的磁盘分区,如下列:
# /usr/local/nagios/libexec/check_disk -w 20% -c 10% /
DISK OK - free space: / 3913 MB (23% inode=78%);| /=12991MB;14252;16034;0;17816
# /usr/local/nagios/libexec/check_disk -w 23% -c 22% /
DISK WARNING - free space: / 3913 MB (23% inode=78%);| /=12991MB;13718;13896;0;17816
# /usr/local/nagios/libexec/check_disk -w 30% -c 25% /
DISK CRITICAL - free space: / 3913 MB (23% inode=78%);| /=12991MB;12471;13362;0;17816
# 'check_local_load' command definition
define command{
command_name check_local_load #查看load的命令,即top命令load average: 0.00, 0.00, 0.00的内容(分别代表了最近1分钟,5分钟,15分钟CPU的平均负载情况,如果是单核CPU的话,1.00就表示CPU已经满负荷了, 如果是多核CPU的话,load average达到CPU的核数即说明该CPU已经满负荷了, 如果是多颗物理CPU,则当load average达到所有物理CPU的总核数时,说明系统CPU满负荷了。简而言之,CPU的核数即为我们根据load average衡量CPU负载的依据。)
command_line $USER1$/check_load -w $ARG1$ -c $ARG2$
}
# /usr/local/nagios/libexec/check_load #如果不知道怎么用,可以直接执行此插件,下面会告诉我们插件的用法,还可以加-h参数查看更详细的说明
check_load [-r] -w WLOAD1,WLOAD5,WLOAD15 -c CLOAD1,CLOAD5,CLOAD15
# /usr/local/nagios/libexec/check_load -w 2.0 1.8 1.5 -c 3.0 2.8 2.5
OK - load average: 0.00, 0.00, 0.00|load1=0.000;2.000;3.000;0; load5=0.000;2.000;3.000;0; load15=0.000;2.000;3.000;0;
# 'check_local_users' command definition
define command{
command_name check_local_users #用户登录数量报警
command_line $USER1$/check_users -w $ARG1$ -c $ARG2$
} #同时登录用户的数量,-w 超过这个值就w报警 -c 超过这个值就c报警
# last |head -3
root pts/2 192.168.1.103 Mon Dec 19 22:57 still logged in
root pts/1 192.168.1.103 Mon Dec 19 22:57 still logged in
root pts/0 192.168.1.103 Mon Dec 19 21:24 still logged in
# /usr/local/nagios/libexec/check_users -w 2 -c 3
USERS WARNING - 3 users currently logged in |users=3;2;3;0
# /usr/local/nagios/libexec/check_users -w 3 -c 4
USERS OK - 3 users currently logged in |users=3;3;4;0
# /usr/local/nagios/libexec/check_users -w 1 -c 2
USERS CRITICAL - 3 users currently logged in |users=3;1;2;0
# 'check_local_swap' command definition
define command{
command_name check_local_swap
command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$
} #swap分区剩余状态监测
# /usr/local/nagios/libexec/check_swap -w 20% -c 10%
SWAP OK - 100% free (2047 MB out of 2047 MB) |swap=2047MB;409;204;0;2047
# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
} #这属于主动监控了,/usr/local/nagios/libexec/check_http -h 可以看详解,但是像这种监控服务的我们都会自己编写自定义的插件的
# /usr/local/nagios/libexec/check_http -w 0.2 -c 0.3 -H www.51niux.com #可以看根据响应时间做监控
HTTP CRITICAL: HTTP/1.1 200 OK - 32303 bytes in 0.119 second response time |time=0.118988s;0.200000;0.100000;0.000000 size=32303B;;;0
# /usr/local/nagios/libexec/check_http -w 1 -c 2 -H www.51niux.com
HTTP OK: HTTP/1.1 200 OK - 32303 bytes in 0.100 second response time |time=0.099648s;2.000000;1.000000;0.000000 size=32303B;;;0
3.3 contacts.cfg联系人配置文件详解:
# vi /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name nagiosadmin #联系人模板的名称
use generic-contact #调用的templates.cfg模板里面的generic-contact
alias Nagios Admin # 别名,也是全称
email nagios@localhost #邮箱地址,多个邮箱地址用逗号隔开。
}
define contactgroup{
contactgroup_name admins #定义联系人组的名称,方便一次性发送多人
alias Nagios Administrators #组别名
members nagiosadmin # #定义组成员,这里的nagiosadmin,也就是上面contact_name的值,多个联系人用逗号隔开。
}
3.4 templates.cfg 模板配置文件详解:
# vim /usr/local/nagios/etc/objects/templates.cfg
# Generic contact definition template - This is NOT a real contact, just a template!
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,f,s
#这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态,c即criticle,表示紧急状态,r即recover,表示恢复状态。f为在服务启动和停止闪烁时通知。s为通知服务何时开始和停止扑动。
host_notification_options d,u,r,f,s
#定义主机在d是down,u是unreachable不可到达状态,r标识recovery重新恢复状态,发送通知给联系人。f为在主机启动和停止闪烁时通知。s为当主机计划的停机时间开始和结束时发送通知
service_notification_commands notify-service-by-email
#服务故障或恢复时,发送通知的方式和内容其中“notify-service-by-email”在commands.cfg文件中定义,notify-service-by-email定义了通知的方式为邮件并定义了通知的邮件格式。
host_notification_commands notify-host-by-email
#主机触发通知的时候,发送的内容格式和方式,在commands.cfg文件中notify-host-by-email 定义。
register 0
}
# Generic host definition template - This is NOT a real host, just a template!
define host{
name generic-host
#主机模板名称
notifications_enabled 1
#主机通知启用
event_handler_enabled 1
#主机事件处理程序已启用
flap_detection_enabled 1
#启用Flap检测
process_perf_data 1
#Nagios就会调用相应的命令来输出数据了。Nagios的command定义中默认有一项“process-service-perfdata”,该命令声明了Nagios输出哪些 值到输出的文件中,为了绘制性能分析图表。
retain_status_information 1
#在程序重新启动时保留状态信息
retain_nonstatus_information 1
#在程序重新启动时保留非状态信息
notification_period 24x7
#随时发送主机通知
register 0
}
# Linux host definition template - This is NOT a real host, just a template!
define host{
name linux-server
#主机模板名称为linux-server
use generic-host
#此模板从generic-host模板继承其他值
check_period 24x7
#这里的check_period告诉nagios检查主机的时间段为24x7
check_interval 5
#nagios对主机的检查时间间隔,这里是5分钟。
retry_interval 1
#重试检查时间间隔,单位是分钟。这里是1分钟。
max_check_attempts 10
#nagios对主机的最大检查次数,当nagios在检查发现某主机异常时,并不立马进行异常通知,可能由于网络问题,最多尝试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
}
# Generic service definition template - This is NOT a real service, just a template!
define service{
name generic-service
#server模板名称
active_checks_enabled 1
#启用活动服务检查
passive_checks_enabled 1
#启用被动检测服务
parallelize_check 1
#启用并发活动监测服务
obsess_over_service 1
#此项设置的是决定nagios 是否被服务检测迷惑并运行之后定义的ocsp_command 命令,此项只在执行分布式检测是才启用,否则不要轻易启用该项
check_freshness 0
#关闭服务更新检测
notifications_enabled 1
#启用时间通知
event_handler_enabled 1
#启用事件处理程序
flap_detection_enabled 1
#启用状态抖动监测
process_perf_data 1
#启用进程性能数据记录
retain_status_information 1
#启用状态信息保存功能。当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的状态数据。
retain_nonstatus_information 1
#启用非状态信息保存功能。当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的非状态数据
is_volatile 0
check_period 24x7
#监控的时间段
max_check_attempts 3
#检测异常再次尝试次数
normal_check_interval 10
#正常的检测周期为10分钟,假设你想以5秒钟检测一次,怎么办?这时候你需要修改配置文件nagios.cfg中的“interval_length”参数的值,默认值为60,代表基数是60秒,你改成1,代表基数是1秒,这时,“normal_check_interval”的值为5就表示正常检测周期为5秒了。请注意,把“interval_length”的值修改以后,所有其他和周期有关的地方你都要检查一遍,保证都被更改为了正确的数值,否则到时就全乱套了。
retry_check_interval 2
#监测失败后尝试的间隔,单位分钟。
contact_groups admins
#通知的联系人组
notification_options w,u,c,r
#设定监测指定服务产生的事件通知的条件选项。这里后面跟上一些级别类型参数: w代表warning告警; u代表unknown未知; c代表critical严重;
r代表recover恢复;
notification_interval 60
#如果问题没有解决,再次报警的间隔,单位是分钟。这里为1小时。
notification_period 24x7
#发送报警的时间,这里为 24x7随时
register 0
}
3.5 timeperiods.cfg配置文件详解
# vim /usr/local/nagios/etc/objects/timeperiods.cfg
define timeperiod{
timeperiod_name 24x7
#时间模板名称为:24X7,已经在上面被多次调用了
alias 24 Hours A Day, 7 Days A Week
#别名
sunday 00:00-24:00
#周日全天
monday 00:00-24:00
#周一全天
tuesday 00:00-24:00
#周二全天
wednesday 00:00-24:00
#周三全天
thursday 00:00-24:00
#周四全天
friday 00:00-24:00
#周五全天
saturday 00:00-24:00
#周六全天
}
# 'workhours' timeperiod definition
define timeperiod{
timeperiod_name workhours
#模板名称:workhours
alias Normal Work Hours
#别名可以看出这是工作时间段
monday 09:00-17:00
#周一的9:00-17:00
tuesday 09:00-17:00
#周二的9:00-17:00
wednesday 09:00-17:00
#周三的9:00-17:00
thursday 09:00-17:00
#周四的9:00-17:00
friday 09:00-17:00
#周五的9:00-17:00
}
3.6 localhost.cfg详解
# vim /usr/local/nagios/etc/objects/localhost.cfg #nagios本地的几个监控项都在这个配置文件里面定义,我们也可以正好了解一下这个监控流程
define host{ #定义主机,标准格式define host{}
use linux-server #继承了templates.cfg中linux-server中设置的值,里面有检测主机状态,报警联系人等
host_name localhost #主机名称,并非实际的主机名称,只是这台机器在nagios里面定义的名称,报警提示哪个主机有问题这个名称。
alias localhost #别名
address 127.0.0.1 #主机IP
}
define hostgroup{
hostgroup_name linux-servers #主机组名称
alias Linux Servers #别名
members localhost #主机组中又哪些成员,现在只有localhost这一个主机,多个主机之间用逗号隔开
}
define service{ #定义服务,标准格式define service{}
use local-service #继承了templates.cfg中linux-server中设置的值
host_name localhost #指定主机名,在host段中预定义
service_description PING #监控服务的名称,也就是在web页面上显示的监控项目
check_command check_ping!100.0,20%!500.0,60% #指定检查的命令,check_ping命令在commands.cfg中定义,后跟两个参数,命令与参数间用!分割。
}
#剩下的几个service服务意思是一样的。下面是效果图。
博文来自:www.51niux.com
四、定义邮件通知机制及简述nagios调用过程
4.1 配置邮件通知机制
第一步:确定信息发送媒介
一般就是使用邮件就行通知报警,所以我们这里以邮件报警为例。如果你是远程调用邮件服务器就在/etc/mail.rc 里面进行配置,如果是本地发送,就启用postfix服务。
然后在:/usr/local/nagios/etc/objects/contacts.cfg配置文件里面 email后面设置成你要收邮件的邮件地址,多邮件地址用逗号隔开。
好了这就配置完毕了,下来我们来测试一下是否警告和恢复都能发送邮件出去。
现在我们只定义了本地的监控,那么就拿本地监控做测试了。
修改:/usr/local/nagios/etc/objects/localhost.cfg配置文件,将 check_local_disk!20%!10%!/改为 check_local_disk!80%!70%!/,然后重新加载nagios配置文件。
然后观察一下是否能收到报警邮件,然后再把disk检测值改回去,重新加载nagios配置文件,看是否能收到服务回复邮件通知。
4.2 结合上面的例子,我们来捋一捋这个调用过程。
首先我们的主机在localhost.cfg里面定义了,好了就去localhost.cfg里面去看一下:
define host{
use linux-server #这里定义了引用templates.cfg模板文件里的linux-server host_name localhost #这里定义了监控主机的名称为localhost
alias localhost
address 127.0.0.1 #这里定义了监控主机的地址127.0.0.1
}
define hostgroup{
hostgroup_name linux-servers #这里定义了一个linux-servers的主机组
alias Linux Servers
members localhost #现在主机组里面有一个叫做localhost的成员,主机ip就是上面的127.0.0.1
}
define service{
use local-service #这里又一个引用templates.cfg模板文件里 local-service
host_name localhost #这里定义了一个叫localhost的主机引用这个服务监控,多主机间用逗号隔开。
service_description Root Partition #这里是在nagios的web页面显示的监控项目名称
check_command check_local_disk!20%!10%!/ #这里是要执行的命令(我们做报警测试时改为了:check_local_disk!80%!70%!/ )
}
然后我们去templates.cfg模板文件里面看一看linux-server 和local-service都是什么:
define host{
name linux-server #模板名称为linux-server
use generic-host #这里又一个引用templates.cfg模板文件里generic-host
check_period 24x7 #这里是引用了timeperiods.cfg模板文件里的24x7
check_interval 5 #五分钟进行一次状态检查
retry_interval 1 #如果主机状态有问题,1分钟再检查
max_check_attempts 3 #尝试三次,如果主机依然有问题,进行报警
check_command check-host-alive #这里是引用了commands.cfg模板里面的check-host-alive
notification_period workhours #这里是引用了timeperiods.cfg模板里面的workhours
notification_interval 120 #如果主机出现down机或者状态不可达没有解决,每2小时报警一次
notification_options d,u,r #主机down机、不可达或者状态恢复就会邮件通知
contact_groups admins #这里是引用了contacts.cfg模板里面的admins联系人组
register 0
}
define service{
name local-service #模板名称为local-service
use generic-service #这里是引用了timeperiods.cfg模板文件里的generic-service模板
max_check_attempts 2 #再次检查2次之后如果还有问题就进行报警通知
normal_check_interval 1 #一分钟对服务进行一次状态检查
retry_check_interval 1 #如果检测服务出现问题了,再次发起状态是否恢复正常的时间间隔为1分钟
register 0
}
再次我们来看上面红色的字体,调用了三个模板:generic-host,24x7,commands.cfg,workhours,admins,generic-service
然后这里就啰嗦了,这些模板前面都有说过了,通过名称我们可以看出来:
关于主机状态的会去调用:generic-host这个全局模板,里面定义了比较多的参数
关于服务状态的会去调用:generic-service这个全局模板,里面定义了比较多的参数
关于监控时间段的会去timeperiods.cfg模板里面调用:24x7,workhours或者我们定义的其他一些时间模板
关于执行命令的调用会去commands.cfg模板里面调用:一些我们定义好的命令
关于触发了通知要把信息发送给谁回去contacts.cfg模板里面调用:admins组,或者我们定义的其他联系人组,或者联系人
注:Nagios可用的全部的宏:
主机宏:
$HOSTNAME$ 主机简称(如"web"),取自于主机定义里的host_name域
$HOSTADDRESS$ 主机地址。取自于主机定义里的address域
服务宏
$SERVICESTATE$ 服务状态描述,有w,u,c
$SERVICEDESC$ 对当前服务的描述
联系人宏
$CONTACTNAME$ 表示联系人,在联系人文件中定义
通知宏
$NOTIFICATIONTYPE$ 返回下面信息:("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT", "FLAPPINGSTART", "FLAPPINGSTOP", "FLAPPINGDISABLED", "DOWNTIMESTART", "DOWNTIMEEND", or "DOWNTIMECANCELLED").
日期/时间宏
$LONGDATETIME$ 前的日期/时间戳
文件宏
$LOGFILE$ 日志文件的保存位置。
$MAINCONFIGFILE$ 主配置文件的保存位置。
其他宏
$ADMINEMAIL$ 全局的管理员EMail地址
$ARGn$ 指向第n个命令传递参数(通知、事件处理、服务检测等)。Nagios支持最多32个参数宏