我的生产服务器保存在美国东海岸,一些支持应用程序保存在欧洲的阿姆斯特丹。 在美国东海岸也有一个Nagios实例运行,它通过ssh进行一些端口检查和一些检查。
问题是几乎每天我都会观察使用mtr(traceroute和ping的组合)以及持续约1分钟的小问题。 我向阿姆斯特丹的服务提供商展示了这些mtr输出,但他否认有任何问题说ICMP(由mtr使用)不是一种可靠的方法来衡量丢弃,因为ICMP在路由器上的优先级最低。 所以路由器可以放弃ICMP,但是对于TCP来说,它们会很好。
我如何向服务提供商certificate他的服务确实存在问题,他需要解决这个问题? 什么是正确的工具和技术呢?
确定性地certificate数据包丢失是困难的。
如果这是你的目标,我build议的策略是:
iptables
规则统计进出的报文数
iperf
进行TCPtesting一段时间,例如300秒 iptables
并比较数据包的数量 使用iptables
的另一种方法是查看两个主机上的接口的tx / rx数据包数量(例如, ifconfig eth0
) – 在testing开始时做一个logging,进行转换testing(例如使用SCP或FTP)然后计算一个主机发送的数据包是否等于另一个主机接收到的数据包。
其他任何技术都会给你提供虚假的信息。 确实,主机和中间路由器将低优先级对待ICMP
,或者根本不应答。 通常, UDP
数据包也被视为较低的优先级,因此使用UDPstream进行受控的iperf
testing可能会导致错误的结果。 而一个没有实际统计发送数据包和接收数据包的TCP
testing,永远不会像底层操作系统处理数据包丢失一样暴露出来。
也许你可以尝试安装smokeping并做一些服务检查(tcp,http,http,…)。 它可以做很好的丢包图。
在我的工作场所,我们使用第三方networking监控服务Wormly 。
我们主要使用它来确保网站正常运行,但是我们也可以对特定端口进行检查等。
你可以得到一个基本的帐户,并设置一些传感器来testingTCP连接,如果ICMP是一个问题。
它会为你生成图表,你可以向你的提供者显示。
testing是从世界各地的几个塔楼完成的,你可以请求支持团队把一个特定的塔楼设置为主要的(我们使用悉尼,以便图表显示我们地区更加现实的平台)
你甚至可以指定某些文本或应该出现在TCP响应中的正则expression式,这非常酷。