nagios报警参数详细设置

发布时间:2017-2-21 4:07:58 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"nagios报警参数详细设置",主要涉及到nagios报警参数详细设置方面的内容,对于nagios报警参数详细设置感兴趣的同学可以参考一下。

文章一: nagios报警参数详细设置   (1)所有提醒任务首先要查看hosts.cfg或者services.cfg,在这两个文件中有如下几个参数关系到提醒:  normal_check_interval  :正常报警频率 notifications_enabled : 是否开启提醒功能。1为开启,0为禁用。注,一般,这个选项会在主配置文件(nagios.cfg)中定义,效果相同。 contact_groups: 定义接受提醒的联系人组,如果hosts.cfg文件中所有的条件都符合,那么提醒任务将会继续检查contactgroup.cfg文件。 notification_interval: 重复发送提醒信息的最短间隔时间。默认间隔时间是60分钟。如果这个值设置为0,将不会发送重复提醒。 notification_period: 发送提醒的时间段。非常重要的主机(服务)我定义为7×24,一般的主机(服务)就定义为上班时间。如果不在定义的时间段内,无论什么问题发生,都不会发送提醒。 notification_options: 这个参数定义了发送提醒包括的情况:d = 状态为DOWN, u = 状态为UNREACHABLE , r = 状态恢复为OK , f = flapping。,n=不发送提醒。 综上,如果要提醒信息顺利通过hosts.cfg文件,并且发出提醒的话,要满足: notifications_enabled 值为1 contact_groups 的组已经定义正确。见(3) notification_period 定义的时间段包括出问题的时间,检查方法如见(2) notification_options 定义的包括需要提醒的状态改变。 (2)检查timeperiod的配置,一般在主配置文件中,或者在timeperiod.cfg等配置文件中可以找到: 时间模版:/usr/local/nagios/etc/objects/timeperiods.cfg define timeperiod{         timeperiod_name service (此处可以自定义命名,与上保持一致)         alias           24x7 Sans Holidays         use             us-holidays             ; Get holiday exceptions from other timeperiod         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         } 这个配置就是定义了一个名字是"service"的时间段,包括从周一到周日中每天的24小时。这个时间段里,系统会将故障告警信息发送给联系人。 /usr/local/nagios/etc/contacts.cfg ( 定义联系人) define contact{         contact_name                    chb                    ; Short name of user         alias                           Nagios             ; Full name of user         host_notifications_enabled      1         service_notifications_enabled   1         service_notification_period     24x7         host_notification_period        24x7         service_notification_options    w,u,c,r         host_notification_options       d,u,r         service_notification_commands   service-notify-sms         host_notification_commands      host-notify-sms #       email                           chenhaibo@163.com       ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ****** #       pager                           1515.......         }  define contact{          contact_name                    mail                    ; Short name of user          alias                           null             ; Full name of user         service_notification_period     24x7          host_notification_period        24x7          service_notification_options    w,u,c,r          host_notification_options       d,u,r          service_notification_commands   notify-service-by-email          host_notification_commands      notify-host-by-email          email                           88fly@163.com          } (3)检查contactgroup.cfg的配置 联系组中包含用户chb、mail define contactgroup{         contactgroup_name       mail         alias                   mail         members                 chb,mail         } 此配置定义了一个名字叫 mail 的联系人组,包括成员 chb、mail (4)要检查各个联系人的配置,就要查看contacts.cfg文件:  define contact{          contact_name                    mail                    ; Short name of user          alias                           null             ; Full name of user          service_notification_period     24x7          host_notification_period        24x7          service_notification_options    w,u,c,r          host_notification_options       d,u,r          service_notification_commands   notify-service-by-email          host_notification_commands      notify-host-by-email          email                             88fly@163.com,B@163.com,C@163.com,D@163.com,E@163.com          } 这个配置文件例子顶一了一个mail的联系方式和另外一些参数。 注意这里的参数也可能会造成提醒信息没有发送。email分别对应该联系人的email地址、传真地址、其他地址等等。这里解释一下其他相关的参数: host_notification_period: 主机类提醒发送时间。定义主机类提醒发给该联系人的时间段。 在hosts.cfg/service.cfg中已经定义了一个notification_period, 那个定义是是定义所有该主机需要提醒的人接受提醒的时间段。这里的这个时间段则是说明这个人接受提醒信息的时间段,也就是说提醒发送的时间必须同时满足主机配置文件和此配置文件中的时间段才会正常发送给联系人mail。(这个参数对于那些24小时3班导的人,或者10点之后起床的老板,是很有用的) service_notification_period: 这个参数类似于host_notification_period host_notification_commands: 这个参数说明发送主机提醒信息的命令。 service_notification_commands: 这个参数说明发送服务提醒信息的命令。 host_notification_options:定义接受提醒的主机状态改变:d = DOWN , u = UNREACHABLE, r=UP or OK, f = flapping,n =什么都不发送。 service_notification_options: 定义接受提醒的服务状态改变。参数意义同host_notification_options。 (5) 小结。根据以上的分析,如果关于服务状态改变、提醒信息发送时间段、联系人的联系地址等都没有问题,那么可能的问题就是发送提醒信息的命令出现问题。查看 这些命令之前,请确定nagios系统的服务器上有mail或sendmail等发送邮件的软件包,且工作正常。如果你有一些短信猫,或者用了其他的提醒 脚本,请确定其工作正常。 另外,nagios还包括一个名为 Notification Escalations 的模块,用来扩展已经很强大的提醒体系。 举例说明一下这个模块的功能:你定义一台主机的提醒,首次发现问题不提醒,直到连续三次重复出现问题时,主机管理员A会收到提醒,然后过了一段时间,问题还没有修复,这是又继续发送第4次提醒给A(此时A共收到2次提醒),在第五次提醒的时候,就发给了管理员B,…… ,在第十次提醒的时候就发给了管理员的老板…… 如果你用到这个模块,也需要检查其是否配置正确。 (6)提醒命令 一般的提醒命令名称如 xxx-notify-by-xxx,他只是一个名字,具体是用什么来实现这个提醒的具体工作的,要查看command.cfg文件中,关于此命令的定义,举个例子: # 'notify-service-by-email' command definition define command{  command_name notify-service-by-email  command_line   echo " ** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$HOSTADDRESS$ $SERVICEDESC$ is $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$ Additional Info:$SERVICEOUTPUT$ "| formail -I "Subject: $HOSTADDRESS$*$SERVICEOUTPUT$*$LONGDATETIME$"| sendmail -oi $CONTACTEMAIL$  } # 'notify-host-by-email' command definition #define command{ # command_name notify-host-by-email # command_line   echo " ** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$HOSTADDRESS$  is $HOSTSTATE$ at \n\nDate/Time: $LONGDATETIME$ Additional Info:$HOSTOUTPUT$"| formail -I "Subject:$HOSTADDRESS$*$HOSTOUTPUT$*$LONGDATETIME$ "|sendmail -oi $CONTACTEMAIL$ # }   上例中,定义了一个名字为"notify-by-email"的命令,这个命令的内容,就是command_line对应的命令行定义的。如果你是用独立的脚本来完成提醒功能. 文章二: Nagios监控报警时间设置 发表于171 天前 Nagios监控报警时间设置,打开 /usr/local/nagios/etc/nagios.cfg文件,如下配置: interval_length 表示时间单位,默认为60,即1分钟 /usr/local/nagios/etc/objects/services.cfg:(新版本不存在这个文件)normal_check_interval 表示重新检测的时间间隔,默认为3个时间单位check_interval 与normal_check_interval的作用一样,只能在3.X中使用retry_check_interval 重试时间max_check_attempts 这个是出现故障的连接次数,达到这个次数之后就报警。 关于max_check_attempts、normal_check_interval、retry_check_interval三个参数。首先要说明两个概念,一、软态:被监控项处于retry_check检测周期内的非正常状态;二、硬态:被监控项达到max_check_attempts最大次数后的非正常状态;除此之外的状态,我们估且称 之为“常态”。我们试着看看设置如下参数时,Nagios是怎么做状态检测及告警的: max_check_attempts 3normal_check_interval 3retry_check_interval 2notification_interval 3 首先,Nagios每三分钟检测一次服务,当某次检测到服务状态为异常时,直接进入软态(1/3 soft state),此后,以每2分钟(retry_check_interval)的检测频率,再进行2次(一共进行3次检测,从 而达到 max_check_attempts)检测,如果这两次检测服务都为异常,则直接进入硬态(hard state) 。进入硬态后,Nagios以每3分钟(normal_check_interva)一次的频率检测服务,这与常态时是一样 的;同时每3分钟(notification_interval)进行一次告警。 注意:修改这些参数后并不是即时生效。首先要重启nagios,然后等待下一次检测完成,nagios才会按新的参数计算检测时间与报警次数。 出现alert后,如果要发送email报警,需要满足以下条件: service中有定义notifications_enabled=1,且此service的contacts有定义 service_notification_commands。 service_notification_commands的command出自于commands.cfg,这里定义了使用什么命令发送邮件。 host的alert是一样的。 收不到邮件通常有以下几种可能: 邮件被拒收,检查mail的log可以看到。 nagios是否发送告警邮件,跟contact.cfg(或hosts.cfg)配置文件里的几个参数有关系。下面就着重 讲义下这几个参数: notifications_enabled:是否启用通知提醒功能。1为开启,0为禁用。显而易见,此选项值为0时, nagios肯定是不会发送邮件的。contact_groups:定义接收通知提醒邮件的联系人群组。请确认你的邮件地址是否填写正确并在组中。notification_interval:重复发送提醒邮件(信息)的最短间隔时间。默认间隔时间是60分钟。如果 这个值被设为0,nagios将不会重复发送告警通知邮件,而是一次。 notification_period:定义发送 告警通知的时间段。关键主机服务,设为7×24;一般主机服务,设为上班时间(WorkTime)。那么, 如果定义的监控不在定义的告警时间段里,无论发生什么情况,nagios都不会发送告警通知邮件。notification_options:定义被监控主机(对象)在何种情况下发送告警通知邮件,可选状态如下: (1) w:WARNING,警告(2) u:UNKNOWN,未知(3) c:CRITICAL,危险(已达临界值)(4) d:DOWN,已宕机(5) r:RECOVERY,状态已恢复至OK(6) f:FLAPPING,(未弄懂这个状态的意思,也许是状态波动很大)(7) n:NONE,不发送告警通知邮件 nagios监控与报警时间间隔: max_check_attempts:check_interval:retry interval:notification_interval: 在OK状态,nagios用check_interval定义的时间间隔来监控,出现问题后,切换为retry_interval和 max_check_attempts进行监控,达到max_check_attempts后触发首次报警,同时恢复为check_interval 进行监控,并用notification_interval定义的时间间隔来发送报警,服务恢复后,在最近的 check_interval点发送OK短信,完成报警周期。 特殊:1.max_check_attempts定义为1,检测到问题后立即报警,不重试。2.notification_interval定义为0,报警只发送一次,不重发。 巧用Escalations限制Nagios报警次数 Nagios是非常强大的一款监控工具,尤其是它的告警功能,现在网上实现的形式多种多样如结合移动 139邮箱、Fetion、MSN等,但是如果服务器出现故障而未能及时的解决,Nagios就会不断的发送告警信 息,实在令人头疼。现在用如下方法可以解决Nagios的告警次数问题。 vi escalations.cfg escalations有自动调整;不断增加; 逐步上升等意思,本身配置文件的功能是当服务在某一告警次数前 没有恢复,告警频率周期将会缩短,同时将告警信息发送至指定联系人。 其内容为: define hostescalation{ host_name WWW-Server //被监控主机名称,与Hosts.cfg中一致 first_notification 4 // 第n条信息起,改变频率间隔 last_notification 0 // 第n条信息起,恢复频率间隔 notification_interval 30 // 通知间隔(分) contact_groups sysadmin } 说明:从第4条告警信息起至服务器恢复前,告警信息发送至sysadmin组下的联系人,告警间隔为30分 钟1条信息。 define serviceescalation{ host_name WWW-Server //被监控主机名称,与Hosts.cfg中一致 service_description Check_HTTP,Check_Jetty //被监控服务名称,与Services.cfg中一致 first_notification 4 last_notification 0 notification_interval 30 contact_groups nt-admins,managers,everyone } 保存 修改nagios.cfg vi nagios.cfg添加:cfg_file=/etc/nagios/objects/escalations.cfg 检查nagios配置文件是否正确/usr/sbin/nagios -v /etc/nagios/nagios.cfg 重新启动nagios服务:service nagios restart 测试: 服务器启动后停掉被监控测试机的相应服务,确认告警信息是否按照设置发送至不同信箱 总结 escalations这个功能官方给的定义是notification的扩充,使notification变得更加灵活,方便。文 中我使用的方法算是耍了个小聪明,将第四条告警信息后的所有信息全部发送至我公司邮箱直至服务器 恢复(recovery的信息还是会发送至手机的),从而实现限制告警信息发送至手机的条数。这样,用 Escalations限制Nagios报警次数的功能就成功实现了。 原文地址:http://www.3mu.me/%E8%B0%83%E6%95%B4nagios%E7%9B%91%E6%8E%A7%E4%B8%8E%E6%8A%A5% E8%AD%A6%E6%97%B6%E9%97%B4%E9%97%B4%E9%9A%94%E8%AE%BE%E7%BD%AE/ 文章三: nagios的check时间和页面刷新时间 nagios监控页面刷新时间 命令参数为:check_result_reaper_frequency   # vi /usr/local/nagios/etc/nagios.cfg check_result_reaper_frequency=2             (页面刷新时间为2分钟) :wq 注:页面刷新时间可以最短设置1分钟,已验证 nagios的check时间间隔 命令参数为: normal_check_interval # vi /usr/local/nagios/etc/objects/ming.cfg define service {                   use                generic-service                host_name           ming                service_description  http                check_command        check_nrpe!check_http                normal_check_interval   2                          (check间隔为2分钟) }   文章三有待考核,说得不够专业,我自己也没试过

上一篇:数据库中什么叫事务,具有的属性是什么?
下一篇:HDU1864----最大报销额

相关文章

相关评论