介绍
通过实施缓存检查的使用,可以显着提高Nagios Core监控逻辑的性能。缓存检查允许Nagios Core放弃执行主机或服务检查命令(如果它确定会执行相对较新的检查结果)。
仅适用于按需检查
定期计划的主机和服务检查不会通过使用缓存的检查来提高性能。缓存检查仅对提高按需主机和服务检查的性能有用。计划检查有助于确保主机和服务状态得到定期更新,这有可能导致将来将其结果用作缓存检查的可能性更大。
作为参考,按需进行主机检查:
- 与主机关联的服务更改状态时。
- 根据需要作为主机可达性逻辑的一部分。
- 根据需要进行预测性主机依赖性检查。
并进行按需服务检查:
- 根据需要进行预测性服务依赖性检查。
注意:除非您使用服务依赖项,否则Nagios Core将无法使用缓存的检查结果来改善服务检查的性能。不必担心-这是正常现象。缓存主机检查是提高性能的关键所在,每个人都应该从中受益。
缓存如何工作
当Nagios Core需要执行按需主机或服务检查时,它将确定是否可以使用缓存的检查结果,或者是否需要通过执行插件来执行实际检查。它通过检查是否在最近的X分钟内发生了对主机或服务的最后检查来完成此操作,其中X是缓存的主机或服务检查范围。
如果最后一次检查是在缓存的检查范围变量指定的时间范围内执行的,则Nagios Core将使用最后一次主机或服务检查的结果,并且不会执行新检查。如果尚未检查主机或服务,或者上次检查不在缓存的检查时间范围内,则Nagios Core将通过运行插件来执行新的主机或服务检查。
这到底是什么意思
Nagios Core执行按需检查,因为它需要在该确切时间知道主机或服务的当前状态。利用缓存的检查,您可以让Nagios Core认为最近的检查结果“足够好”来确定主机的当前状态,并且不需要退出并实际重新检查该主机或服务的状态。
缓存的检查范围会告诉Nagios Core最近的检查结果如何才能可靠地反映主机或服务的当前状态。例如,使用30秒的缓存检查范围,您要告诉Nagios Core,如果在最近30秒内某个时间检查了主机的状态,则该检查的结果仍应视为主机的当前状态。
Nagios Core可以使用的已缓存检查结果数与其必须实际执行的按需检查数相比,可以认为是已缓存检查“命中”率。通过将缓存的检查范围增加到等于主机的常规检查间隔,理论上您可以实现100%的缓存命中率。在这种情况下,该主机的所有按需检查都将使用缓存的检查结果。
缓存的检查结果信息的可靠性随时间降低。较高的高速缓存命中率要求在较长的时间段内将先前的检查结果视为“有效”。在任何网络情况下,情况都可能迅速发生变化,并且不能保证30秒钟前运行正常的服务器现在不会着火。需要权衡-可靠性与速度。如果缓存的检查范围较大,则可能会在监控逻辑中使用不可靠的检查结果值。
Nagios Core最终将确定所有主机和服务的正确状态,因此,即使缓存的检查结果证明不可靠地代表了它们的真实价值,Nagios Core也会在短时间内处理错误的信息。即使是短暂的不可靠状态信息,也可能会给管理员带来麻烦,因为管理员可能会收到有关不再存在的问题的通知。
没有任何Nagios Core用户可以接受的标准缓存检查范围或缓存命中率。有些人将需要较短的时间范围和较低的缓存命中率,而另一些人将需要较大的时间范围和较高的缓存命中率(可靠性较低)。有些用户甚至可能希望完全禁用缓存的检查,以获得100%的可靠性。测试不同的时间范围及其对状态信息可靠性的影响,是单个用户唯一希望为其情况找到“正确”值的条件。关于此的更多信息将在下面讨论。
配置变量
以下变量确定将先前的主机或服务检查结果用作缓存的主机或服务检查结果的时间范围:
- 所述cached_host_check_horizon变量控制缓存主机检查。
- 所述cached_service_check_horizon变量控制缓存服务检查。
优化缓存效率
为了最有效地使用缓存的检查,您应该:
- 安排定期检查主机
- 使用MRTG为1)按需检查和2)缓存检查绘制统计图
- 调整缓存的检查范围变量以适应您的需求
通过在主机定义中为check_interval选项指定一个大于0的值,可以安排对主机的定期检查。如果这样做,请确保将max_check_attempts选项设置为大于1的值,否则将导致性能严重下降。此处将详细描述这种潜在的性能损失。
确定缓存的检查范围选项的正确值的一种好方法是比较Nagios必须实际运行多少个按需检查以及如何使用缓存的值。所述nagiostats实用程序可以产生上缓存的检查,然后可将其信息与MRTG作图。右侧显示了示例MRTG图,显示了已缓存的与实际的按需检查。
产生以上图表的监控设备具有:
- 共有44位主机,均定期进行检查
- 平均(定期计划)主机检查间隔为5分钟
- 15秒的cached_host_check_horizon
第一个MRTG图显示了与已发生的高速缓存主机检查相比,有多少个定期调度的主机检查。在此示例中,平均每五分钟进行53次主机检查。其中9个(17%)是按需检查。
第二张MRTG图显示了一段时间内发生了多少缓存的主机检查。在此示例中,每五分钟平均进行2次缓存的主机检查。
请记住,缓存的检查仅适用于按需检查。根据图表的5分钟平均值,我们看到Nagios能够在必须运行按需检查的9次中每2次使用缓存的主机检查结果。看起来可能并不多,但是这些图表示一个小的监控环境。考虑到9分之2是22%,您可以开始了解如何在大型环境中显着帮助提高主机检查性能。如果增加了缓存的主机检查范围变量值,该百分比可能会更高,但这会降低缓存的主机状态信息的可靠性。
一旦拥有了数小时或数天的MRTG图,您应该看到通过执行插件进行了多少次主机和服务检查,而那些使用了缓存检查结果的插件。使用该信息可以根据情况适当调整缓存的检查范围变量。随着时间的推移,继续监控MRTG图,以查看更改范围变量如何影响缓存的检查统计信息。冲洗并根据需要重复。