巧用escalations限制Nagios报警次数

来源:互联网 发布:阿里云 geotrust 编辑:程序博客网 时间:2024/05/16 16:20

Nagios是非常强大的一款监控工具,尤其是它的告警功能,现在网上实现的形式多种多样如结合移动139邮箱、Fetion、MSN等,但是如果服务器出现故障而未能及时的解决,Nagios就会不断的发送告警信息,实在令人头疼。现在用如下方法可以解决Nagios的告警次数问题。

系统环境:CentOS 5.2
Nagios版本:3.0.6
Nagios安装路径:/usr/local/nagios
配置文件内容定义:#基本的配置就不再进行注释了。

hosts.cfg
define host{

        host_name                       WWW-Server
        alias                                 WWW-Server
        address                            193.1.16.100
        check_command                check-host-alive
        max_check_attempts         5
        check_period                     24x7
        notification_interval           10
        notification_period             24x7
        notification_options            d,u,r
        notifications_enabled          1
        contact_groups                 chengnan
        }

Services.cfg
define service{
        host_name                        WWW-Server
        service_description             Check_HTTP
        check_command                 check_http
        max_check_attempts          10
        normal_check_interval         3
        retry_check_interval            2
        check_period                      24x7
        notification_interval             5
        notification_period              24x7
        notification_options            w,u,c,r
        contact_groups                  admin
        }
       
define service{
        host_name                      WWW-Server
        service_description           Check_Jetty
        check_command               check_tcp!8080
        max_check_attempts        10
        normal_check_interval       3
        retry_check_interval          2
        check_period                    24x7
        notification_interval           5
        notification_period            24x7
        notification_options          w,u,c,r
        contact_groups                admin
        }

Contacts.cfg
define contact{

        contact_name                          chengnan
        alias                                        chengnan
        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                                        chengnan@139.com           //手机邮箱

        }

define contactgroup{
        contactgroup_name       chengnan
        alias                             Nagios Administrators
        members                      chengnan
        }

除此之外再定义一个联系人
define contact{
        contact_name                           chengnan_cor
        alias                                         chengnan_cor
        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                                        chengnan@company.com     //公司邮箱
        }

define contactgroup{
        contactgroup_name       sysadmin
        alias                             sysadmin
        members                      chengnan_cor
        }


然后创建一个配置文件:
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          sysadmin
}


保存

修改nagios.cfg
vi nagios.cfg
添加:
cfg_file=/usr/local/nagios/etc/objects/escalations.cfg

检查nagios配置文件是否正确
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

重新启动nagios服务:
service nagios restart

测试:
服务器启动后停掉被监控测试机的相应服务,确认告警信息是否按照设置发送至不同信箱

后记
escalations这个功能官方给的定义是notification的扩充,使notification变得更加灵活,方便。文中我使用的方法算是耍了个小聪明,将第四条告警信息后的所有信息全部发送至我公司邮箱直至服务器恢复(recovery的信息还是会发送至手机的),从而实现限制告警信息发送至手机的条数。

官方文档地址:http://nagios.sourceforge.net/docs/3_0/escalations.html