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 24×7
- notification_interval 10
- notification_period 24×7
- 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 24×7
- notification_interval 5
- notification_period 24×7
- 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 24×7
- notification_interval 5
- notification_period 24×7
- notification_options w,u,c,r
- contact_groups admin
- }
- Contacts.cfg
- define contact{
- contact_name chengnan
- alias chengnan
- service_notification_period 24×7
- host_notification_period 24×7
- 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 24×7
- host_notification_period 24×7
- 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的信息还是会发送至手机的),从而实现限制告警信息发送至手机的条数。
【编辑推荐】