最近,在我的nagios 3.2.3安装(CentOS5,监控~300台主机,1150个服务)时,偶尔会报告在50-60个主机上高丢包率。 问题是假的。 手动运行ping(或其自己的check_ping二进制文件)发现没有任何受影响的主机的错误。 目前唯一可能的治疗方法是:
我怀疑(除了单独的重新安排的检查成功之外没有其他的原因),问题可能在于所有的检查是一起进行大规模的计划 – 在这种情况下,在计划中引入一些抖动(如何?)可能会有所帮助。 或者它可能是完全不同的东西。
想法,任何人?
编辑:
对build设性辩论感兴趣的人(而不是点数评分)。 我不想测量数据包丢失。 在这种情况下,networking性能不是我关心的问题,如果是这样的话,将会用适当的工具来调查。 NAGIOS(不知情)主要用于检查主机服务并生成警报。 当它开始产生大量的腥警报,因此非常烦人。 我99.9%的正面认为,这个问题要么是由于:
可能是由nagios调度程序发送的请求突发引起的。 数据包丢失率都在50%以上 – 如果它们是真的,我们的手机就会融化。 到目前为止,我没有(2)的证据,所以我正在寻找(1)中的“现有技术”。 我的想法可能是错误的,但是,如果我必须达到wireshark或类似的,一个build议什么寻找将不胜感激。
在通过不同的工具validation丢包后,首先需要找出哪个插件实际上检查丢包。 find那个插件并在nagios中定义的时间间隔后手动运行它,并检查它的输出是否可以给你一个线索。 问题似乎不是丢包在那里,而是它的故障插件。 一旦你已经validation了插件的输出,然后比较输出与其他工具的输出(看看它是否显示任何数据包丢失,如果其他人不)。 通常这个插件是check_ping。
我在与Nagios的第一次尝试中遇到了类似的问题。 在试图解决这个问题的时候,我发现了这篇博文,其中指出,如果您试图在服务器上没有IPV6地址的IPV6服务器上进行ping操作,则可能会出现此问题。
所以解决办法是在你的Nagiosconfiguration对象文件上重写“check_ping”命令。 在我们的一个.cfg文件中,我添加了以下内容:
define command { command_name check_ping_ipv4 command_line $USER1$/check_ping -4 -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 }
请注意check_ping命令后的“-4”参数。 它会强制ping只使用IPV4。 在定义上面的命令之后,我可以在服务定义中使用它。 例如:
define service { service_description PING host_name MYHOST check_command check_ping_ipv4!100.0,20%!500.0,60% use generic-service }
手动运行ping(或其自己的check_ping二进制文件)发现没有任何受影响的主机的错误
这是一个非常愚蠢的方式来检查数据包丢失。 您应该以间隔(netstat -r)比较为NIClogging的重新传输或使用诸如pastmon或wireshark之类的工具捕获stream量。 以来:
1)你已经说过,数据包丢失发生在突发中 – 你怎么知道你在发生数据包丢失的时候在path上运行ping?
2)less量的数据包丢失可能会对吞吐量产生很大的影响 – 这就是为什么我们要监控它们 – 如果要确认1%的丢包率,那么您需要在path上发送至less200个数据包 – 多less你发了吗?
3)然而,这里的压倒一切的WTF就是TCP和UDP在很小的程度上与ICMP有着很大的不同 – 后者受拥塞问题的影响要小得多(即使假设一致的1500 MTU)
即你没有提供有效的证据表明数据包丢失是虚假的。 然而,你提供的证据表明,你并不真正了解你想要衡量的是什么。
而同一networking上的其他主机不会有相同的损失
你认为丢包只发生在主机之间吗? 这是错的。