搞了这么多久的nagios,居然没用过handle_event事件,正好有事情需要,就学习一下2021.12.27
运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维
在监控系统Nagios系列(二) 架构中提到了如何定义对象的状态,对象状态根据是插件检查结果综合得到的。
对象状态如果发生了变化,Nagios会调用通知命令,发送警报。为了避免错误的警报,Nagios允许用户定义最大尝试次数(max_check_attempts),只有状态连续变化超过了最大尝试次数,才算是真的状态变化。Nagios通过定义两种状态变化类型:soft, hard,分别表示在max_check_attempts内的状态变化,和超过了max_check_attempts的状态变化。这种做法能够解决的一个典型问题就是状态处于抖动不稳定的对象,通过max_check_attempts,避免重复的警报。
1. soft类型
soft类型状态变化产生的条件为:
- 检查Service或Host状态的插件返回结果为non-OK或non-UP,且检查次数还未达到max_check_attempts,那么这个状态变化是soft类型,是一个soft error。
- 一个Service或Host从soft error恢复(插件检查返回结果为OK或UP),那么这个状态变化是soft类型,是一个soft recovery。
当soft状态变化发生之后,Nagios对应的处理有:
- 记录日志
- 调用外部注册的事件处理回调命令。开发者可以注册事件处理回调命令,尝试修复soft error,在soft error变为hard error之前。
2. hard类型
hard类型状态变化产生条件为:
- 检查Service或Host状态的插件返回结果为non-OK或non-UP,且检查次数已经达到max_check_attempts,那么这个状态变化是hard类型,是一个hard error。
- 一个Service或Host的状态由一个hard类型变化为另外一个hard类型,这次变化也是hard类型。如从Warning变为Critical。
- 一个Service的检查结果为non-OK状态,且与其关联的Host的状态是DOWN或UNREACHABLE,那么Service的状态变化是hard类型,是一个hard error。
- 一个Service或Host从hard error恢复,那么这个状态变化是hard类型,是一个hard recovery。
- Service或Host的状态检查类型为passive_check(由外部注入状态),且全局配置文件(nagios.cfg)中的配置项“ passive_host_checks_are_soft”为0,那么passive_check的检查结果导致的状态变化,都是hard类型。
当hard状态变化发生之后,Nagios对应的处理有:
- 记录日志
- 调用外部注册的事件处理回调命令。
- 通知联系人。