我有一个分布式 Icinga 设置,如下所示:
中央
仅接收被动检查结果
分布式A
227 台主机
835 服务
分布式 B
67 台主机
243 项服务
CENTRAL服务器始终低于 1 秒的平均检查延迟。DISTRIBUTED B目前的平均检查延迟约为 10 秒,但随着我们添加更多检查,即使这也在攀升。
DISTRIBUTED A有一些我似乎无法确定的严重检查延迟问题(有时长达 700 秒,在重新加载后更少,但它会建立备份)。这是当前的 icingastats 输出:
Icinga Stats 1.10.3
Copyright (c) 2009 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 02-11-2014
License: GPL
CURRENT STATUS DATA
------------------------------------------------------
Status File: /var/lib/icinga/status.dat
Status File Age: 0d 0h 0m 3s
Status File Version: 1.10.3
Program Running Time: 1d 17h 30m 44s
Icinga PID: 1160
Used/High/Total Command Buffers: 0 / 11 / 4096
Total Services: 839
Services Checked: 839
Services Scheduled: 839
Services Actively Checked: 839
Services Passively Checked: 0
Total Service State Change: 0.000 / 6.250 / 0.007 %
Active Service Latency: 644.742 / 776.293 / 729.813 sec
Active Service Execution Time: 0.010 / 20.163 / 0.720 sec
Active Service State Change: 0.000 / 6.250 / 0.007 %
Active Services Last 1/5/15/60 min: 18 / 274 / 717 / 839
Passive Service Latency: 0.000 / 0.000 / 0.000 sec
Passive Service State Change: 0.000 / 0.000 / 0.000 %
Passive Services Last 1/5/15/60 min: 0 / 0 / 0 / 0
Services Ok/Warn/Unk/Crit: 835 / 2 / 1 / 1
Services Flapping: 0
Services In Downtime: 0
Total Hosts: 227
Hosts Checked: 227
Hosts Scheduled: 227
Hosts Actively Checked: 227
Host Passively Checked: 0
Total Host State Change: 0.000 / 0.000 / 0.000 %
Active Host Latency: 0.000 / 772.310 / 726.904 sec
Active Host Execution Time: 0.006 / 0.338 / 0.030 sec
Active Host State Change: 0.000 / 0.000 / 0.000 %
Active Hosts Last 1/5/15/60 min: 14 / 22 / 196 / 227
Passive Host Latency: 0.000 / 0.000 / 0.000 sec
Passive Host State Change: 0.000 / 0.000 / 0.000 %
Passive Hosts Last 1/5/15/60 min: 0 / 0 / 0 / 0
Hosts Up/Down/Unreach: 227 / 0 / 0
Hosts Flapping: 0
Hosts In Downtime: 0
Active Host Checks Last 1/5/15 min: 14 / 28 / 192
Scheduled: 14 / 26 / 188
On-demand: 0 / 2 / 4
Parallel: 14 / 27 / 190
Serial: 0 / 0 / 0
Cached: 0 / 1 / 2
Passive Host Checks Last 1/5/15 min: 0 / 0 / 0
Active Service Checks Last 1/5/15 min: 31 / 276 / 702
Scheduled: 31 / 276 / 702
On-demand: 0 / 0 / 0
Cached: 0 / 0 / 0
Passive Service Checks Last 1/5/15 min: 0 / 0 / 0
External Commands Last 1/5/15 min: 0 / 0 / 0
这似乎不是外部检查缓冲区问题,因为它始终为 0。我玩过收割机设置,并尝试了最大收割机检查时间 (5,10,30) 和收割机频率 (1,5, 10) 似乎没有什么可以减少时间。
检查status.dat,并不是某些检查会推动平均值上升。所有服务检查和主机检查都显示平均延迟(700 多秒)。全面检查执行时间很短。绝大多数是>1秒。从那里开始,有 143 次检查耗时超过 1 秒但不到 2 秒。有 50 次检查需要 4 秒以上。4 次检查在此点之上,分别用时 8、10、17 和 20 秒。这些数字对我来说似乎并不表示实际的检查时间问题。
服务器本身并没有在资源方面挣扎,CPU和内存都很好。另外值得注意的是,CENTRAL 和 DISTRIBUTED A 服务器位于相同的物理基础架构上,尽管虚拟机不同。
我不确定这是否能完全解决您的问题,但这里有一些地方可以查看。
您似乎正在使用 Icinga v1,这意味着您有一个完全顺序的 Icinga 核心。这意味着它会在检查后运行检查。如果您的检查花费了太多时间,则会产生延迟。此外,如果您在检查后要执行一些操作,这也会延迟下一次服务检查(如 NSCA 发送或其他),以至于它确实可以完全扼杀您的性能。因此,这是您不会直接测量的东西,因为这不是机器负载的问题,而是 Icinga 负载的问题。
释放 Icinga 实例负载的解决方案之一是使用额外的工具。例如,为了分发支票,您可以使用mod gearman。这通常用于制作 nagios/icinga 设置比例。如果您使用 NSCA,我们开发了一个工具来使发送异步以释放 Icinga 的这种负担。
我希望这将有所帮助。