本篇主要讲述主机监控的工做原理html
Check的调度配置是经过Nagios Core Deamon控制ios
按期性检查:若是设置check_interval is zero 那么就不会进行按期检查。
关联服务触发的检查:该检查被触发,当一个主机关联的服务改变了状态,由于Nagios Core 须要知道是否主机已经在服务状态改变以前已经改变了状态。这个很好理解,由于一般一个服务状态发生了变化,咱们很大基础上会去想知道,承载服务的基础,host是否状态已经发生变化。
做为主机可到逻辑的一部分所触发的主机检查:Nagios Core被设计用于尽量快的发现网络断电,区分Down和Unreachable两种状态。这是很是不一样的两种状态,能够帮助管理员快速定位形成网络断电的位置。这是一种parent/child关系,咱们要保证这种逻辑链的健康,好比说网络ip可达,来检测这种链路是健康的。不过一旦不可达了,那么就须要快速定位是链路中哪一个或者哪些节点出了问题。一般咱们会从哪里开始入手呢?这就是从nagios做为网络的根节点,而后依次是nagios经过网络设备达到各个host,固然网路设备也是host。以下图,能够从nagios为root来构建的一个树结构:
缓存
当其中一个或者几个主机状态发生变化,那么逻辑可达中的全部主机将进行一个并发的check,当收到每一个节点的check结果后,nagios会断定这个节点的check路径上的上峰节点的check状态是否有不正常的,若是有,那么该节点状态为Unreachable而不是down,若是上峰节点都是正常的,那么该节点状态就是Down,由于上峰不可达后,那么依赖上峰的当前节点状态是未知的,上峰节点阻塞了检查,那么就该断定为Unreachable。
固然对于down和unreachable状态监控仍是都会通知到相关contact的。而后admin会根据网络拓扑图,从nagios角度出发,来发现down的设备。服务器
做为predictive host dependecy check 逻辑的一部分被触发:
可预测的依赖检查,单独放在后面的Predictive Host Dependecy Check讲。网络
经过实现缓存检查的使用,能够显着提升按需主机检查的性能,这使Nagios Core能够在肯定相对较新的检查结果的状况下放弃执行主机检查。有关缓存检查的更多信息,请参见此处。
也就是说,常规计划性的检查结果缓存下来,可用于突发的按需检查,避免了屡次价差请求,已提升性能。并发
您能够定义主机执行依赖性,以防止Nagios Core根据一个或多个其余主机的状态来发起一个检查当前主机的状态。这个属于高阶知识点,有关依赖关系的更多信息,请参见此处。性能
计划的主机检查是并行运行的。当Nagios Core须要运行计划的主机检查时,它将启动主机检查,而后返回执行其余工做(运行服务检查等)。主机检查在从主要Nagios Core守护程序进行fork()处理的子进程中运行。主机检查完成后,子进程将把检查结果通知主Nagios Core进程(其父进程)。而后,主要的Nagios Core流程将处理检查结果并采起适当的措施(运行事件处理程序,发送通知等)。测试
若是须要,还能够并行运行按需主机检查。如前所述,Nagios Core若是可使用相对较新的主机检查中的缓存结果,则能够放弃按需主机检查的实际执行。操作系统
当Nagios Core处理计划的和按需的主机检查结果时,它可能会启动(辅助)其余主机的检查。能够出于两个缘由启动这些检查:预测依赖性检查和使用网络可达性逻辑肯定主机的状态。启动的辅助检查一般并行运行。可是,您应该意识到一个大例外,由于它可能会对性能产生负面影响...设计
将max_check_attempts值设置为1的主机可能会致使严重的性能问题。缘由?若是Nagios Core须要使用网络可达性逻辑来肯定其真实状态(以查看它们是DOWN仍是UNREACHABLE),则它将必须启动对主机的全部直接父级的串行检查。重申一下,这些检查是串行运行的,而不是并行运行的,所以可能会严重影响性能。所以,我建议您始终在主机定义中为max_check_attempts指令使用大于1的值。
如您所知,主机并不是老是保持一种状态。 事情中断了,补丁被应用了,服务器须要重启。 当Nagios Core检查主机状态时,它将可以检测到主机什么时候在UP,DOWN和UNREACHABLE状态之间切换,并采起适当的措施。 这些状态更改致使不一样的状态类型(HARD或SOFT),这能够触发事件处理程序的运行和通知的发送。 检测并处理状态更改是Nagios Core的所有目的。
当主机更改状态的频率过高时,它们被视为“拍动”。 主机波动的一个很好的例子是服务器,一旦操做系统加载,该服务器就会自发重启。 这老是颇有趣的状况。 Nagios能够检测主机什么时候开始震荡,而且能够抑制通知,直到震荡中止而且主机的状态稳定为止。 能够在此处找到有关襟翼检测逻辑的更多信息。
预测依赖性检测
主机和服务的依赖能够被定义来容许你更好的控制,何时checks被执行和何时通知被发送。因为依赖关系用于控制监视过程的基本方面,所以相当重要的是,确保依赖关系逻辑中使用的状态信息尽量最新。
Nagios Core 容许你进行预测性的依赖检测,针对hosts和service用于去肯定依赖逻辑有最新新的状态信息,当咱们须要这些信息去肯定是否发送通知或容许触发一次主机或服务检测。
白话说就是,当检测到一个主机或者服务有问题时。会去预测性的发出它说依赖的依赖服务主机和有直接网络逻辑的父和子的进行一次check。
下图显示了Nagios Core监视的主机的基本示意图,以及它们的父/子关系和依赖关系。
在此示例中,Switch2主机刚刚将状态从UP状态更改成问题状态。 Nagios Core须要肯定主机是DOWN仍是UNREACHABLE,所以它将启动对Switch2的直接父代(Firewall1)和子代(Comp1,Comp2和Switch3)的并行检查。这是主机可达性逻辑的正常功能。
您还将注意到,Switch2依赖于Monitor1和File1来进行通知或检查执行(在此示例中,哪一个不重要)。若是启用了预测性主机依赖性检查,则Nagios Core将同时启动Monitor1和File1的并行检查,并启动Switch2的直系父母和孩子的检查。 Nagios Core之因此这样作是由于它知道在不久的未来(例如出于通知目的)必须测试依赖关系逻辑,而且它想确保它具备参与依赖关系的主机的最新状态信息。