我需要收集一些网络统计数据来测试我的服务器应用程序。我尝试过很多 Linux 工具,但没有找到适合我需求的工具。
基本上,我想收集一些 UDP 统计数据(字节/时间间隔、数据包/时间间隔、数据包丢失),但仅涉及两个特定主机 - 例如,我想从从 IP_A:PORT_A 到 IP_B:PORT_B 的流量中获取 UDP 统计数据。
tcpdump/wireshark 之类的工具可以轻松转储此类流量,但我在获取临时速度等统计数据(参见吞吐量峰值)时遇到了问题,而 linux 系统统计数据为我提供了所有流量的数字。
最好获取文本输出,以便可以解析它并放入 gnuplot。我能够从 iptables 获取所需的信息,但解析来自
iptables -L -v
看起来相当困难。
有谁知道我该如何实现它?
提前致谢
答案1
使用自定义 iptables 规则:
iptables -I INPUT -p udp -s IP_A --sport PORT_A -d IP_B --dport PORT_B
iptables -I OUTPUT -p udp -s IP_B --sport PORT_B -d IP_A --dport PORT_A
然后定期(每秒?5秒?)对其进行轮询,记录变化并进行适当的计算。