我想收集两台主机(A和B)之间发送的TCP / UDP数据包的统计数据。 我正在寻找一个安装在A和B上的工具来获取以下信息:
有iptraf ,但我很难从命令行configuration它。 tcptrack不汇总数据…我有点失落..:DI可以脚本tcpdump:/
也许,我很想念一些非常明显的事情。
更新:两台服务器运行Ubuntu 14.04。
更新2:我现在用tcpflow(日志增长非常快)实验,我将检查collectId
更新3:跟踪给定的IP或networking的stream量最简单的方法是使用IPTABLES和IPTABLES collectD插件。
这是一个非常有趣的问题。
答案取决于你的networking设置,但是,我会尽力掩盖一些情况。
我相信CollectD是答案的一部分。
首先,因为您希望每秒收集一次度量标准,所以您需要configurationCollectD Interval值
解决schemeN°1 – ServerA在特定的接口上独占地与ServerB通信吗? (反之亦然)
使用Interface插件安装CollectD。 它将“收集”你所需要的一部分:
将CollectD指标转发到时间序列数据库(如Graphite)。
您将能够可视化这些指标并应用移动平均函数 。 它将符合您的需求:
解决schemeN°2 – ServerA是否只在TCP和特定端口上与ServerB通信? (反之亦然)
非常相似。 使用CollectD并仅使用CollectD和TCPConns插件监视特定TCP端口上的stream量。 另外,使用Graphie作为“ 滑动窗口中的平均值 ”
一种方法是使用tshark 。
请执行下列操作 :
tshark选项-z 。 然后 :
每秒获得数据包和字节速率:
tshark -q -r myfile.cap -z io,stat,1
这会产生这样的事情:
============================= | IO Statistics | | | | Interval size: 1 secs | | Col 1: Frames and bytes | |---------------------------| | |1 | | Interval | Frames | Bytes | |---------------------------| | 0 <> 1 | 29 | 2026 | | 1 <> 2 | 35 | 2440 | | 2 <> 3 | 35 | 2440 | | 3 <> 4 | 43 | 2920 | | 4 <> 5 | 93 | 5776 | | 5 <> 5 | 77 | 25758 | =============================
获得数据包和字节聚合以及平均TCP窗口:
tshark -q -r myfile.cap -z io,stat,0,"AVG(tcp.window_size)tcp.window_size"
结果会是这样的:
============================================== | IO Statistics | | | | Interval size: 5.109 secs (dur) | | Col 1: Frames and bytes | | 2: AVG(tcp.window_size)tcp.window_size | |--------------------------------------------| | |1 |2 | | | Interval | Frames | Bytes | AVG | | |-----------------------------------------| | | 0.000 <> 5.109 | 312 | 41360 | 41363 | | ==============================================
现在,如果TCP的窗口平均大小超出了方程(如果没有工具检查stream量,您将无法获得此指标),则可以使用标准监视工具来绘制任何您想要的关于使用任何协议的数据包速率/聚合的示例仙人掌 。
编辑:不知道你的意思是滑动窗口给(upvoted)其他答案。 如果您的意思是指在某个特定时间(而不是TCP窗口大小)开始的指定时间的平均值,则您可以通过使用tshark命令投掷datefilter来完成整个过程。
但是,你似乎只是在寻求一个全球性的监控解决scheme。 仙人掌,collectd,zabbix,shinken,nagios(与icinga或类似的东西)应该可以满足您的需求和定制,足以根据需要过滤特定的stream量。
为两台服务器创build一个端口镜像,并从两台计算机上运行wireshark以收集数据。 因此,这不会影响您的服务器在生产。
我的解决scheme运行1-2小时testing:
tcpflow -i eth0 -FT在结果文件名中有时间戳记 优点:
坏处: