1. active_check
active_check的触发条件:
- 定时触发
- 按需触发
按照host或service中定义的 check_interval, retry_interval 属性来确定触发执行的检查,就是定时触发。
还有一些情况下,比如service状态由OK变为Critical,那么会触发该service所关联的Host的状态检查,这种就是按需触发。
一种更典型的按需触发的场景是 reachable 可达性检测。可达性检测是一种网状依赖关系下的Host状态检测(关于可达性检测后续会说明)。如果Host网中某个Host状态变化,会触发执行网中所有其他Host的状态检查,以保证其状态的准确性。
active_check 是由Nagios的Dameon进程调度执行的,Deamon进程根据配置的插件command,执行此command并获取到结果,根据结果判定下一步动作(调用事件处理函数,发送通知等)。
2. passive_check
passive_check 是由外部程序提交数据给Nagios Deamon处理,获得Host或Service的状态。
pasive_check 针对的场景:
- 无法通过定时执行命令的方式获取检查结果(典型的如SNMP Trap)
- 组网上的限制,被检查的设备在防火墙内部,外部无法连接,但是内部可以出来。
passive_check 的工作流程:
- 外部程序将数据写到Nagios指定的文件中(默认是 /usr/local/nagios/var/rw/nagios.cmd )
- Nagios Deamon定义了一个rape(收割)事件(还记得 监控系统Nagios系列(三) 运行时 中描述的Nagios的线程和事件吗?),该事件定时被触发执行,读取文件中的内容,然后清除文件的内容。
- 读取到的数据,与active_check获得的数据同样处理。
在Nagios的主配置文件和每个Host,Service的定义文件中,通过 accept_passive_service_checks = 1 来启用 passive_check ,默认是不启用。
还需要注意的是,passive_check提交的结果,其对应的Service或Host必须在Nagios的Objects中定义,否则数据会被丢弃。
2.1 Service 的 passive_check 结果文件格式定义
[<timestamp>] PROCESS_SERVICE_CHECK_RESULT;<host_name>;<svc_description>;<return_code>;<plugin_output>"
- timestamp, 时间戳秒值
- PROCESS_SERVICE_CHECK_RESULT, 固定填写
- host_name, Service关联的Host的 host_name属性
- svc_description, Service对象定义中的svc_description
- return_code, 返回值,与插件返回值一致
- plugin_output 插件的输出
2.2 Host 的 passive_check 结果文件格式定义
[<timestamp>] PROCESS_HOST_CHECK_RESULT;<host_name>;<host_status>;<plugin_output>
参数的解释,与上面的 Service passive_check 输出结果类似。
最后需要注意的两点:
- passive_check 的状态类型,默认是 Hard 类型,除非在主配置文件中将 passive_host_checks_are_soft 值配置为1。
- passive_check 导致的Host状态变化,不会触发可达性检测(active_check中的按需检测)。
本文链接:http://www.yunweipai.com/3006.html
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/53201.html