快乐的老鼠 发表于 2017-4-20 09:36:16

巧用escalations限制Nagios报警次数

  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_interval3
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
aliassysadmin
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_nameWWW-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
页: [1]
查看完整版本: 巧用escalations限制Nagios报警次数