我想捕获系统上一段时间内往返于一台特定远程计算机的带宽使用情况。iftop
命令绝对是一个选项,它提供网络使用情况,并具有过滤功能,但我需要解析文本输出以获取传入带宽使用情况和传出带宽使用情况。
sudo iftop -t -s 2 -f "src host <remote_machine_ip>"
我当前的计划是循环运行上述命令,每次解析文本输出并附加到 csv 文件(current_time, transmitted, received)
。
有更好的选择吗?
答案1
您是否考虑过使用“sar”工具,该工具会定期收集网络、CPU、内存和其他资源数据并存储以供以后使用?我相信大多数发行版在投票之间都有 10 分钟的延迟,以避免干扰和存储太多数据。
在我的 RHEL 机器上,我只是安装了“sysstat”RPM,它提供了 /usr/bin/sar 命令,并等待了几分钟来收集数据。然后我可以这样查看数据:
PS 您可以通过调整 /etc/cron.d/sysstat 中的 crontab 文件来重新配置轮询频率
PPS SAR 数据默认保留 30 天。您可以通过使用“-f /var/log/sa/saXY”参数告诉 sar 使用哪个文件来查看旧数据,其中 XY 是您感兴趣的两位数日期(例如 12)
[jcall@nas ~]$ sar -n DEV | grep enp4s0
12:10:01 AM enp4s0 4.86 2.33 1.06 0.25 0.00 0.00 1.11
12:20:01 AM enp4s0 4.70 2.32 1.05 0.26 0.00 0.00 1.07
12:30:01 AM enp4s0 4.73 2.25 1.06 0.27 0.00 0.00 1.01
12:40:01 AM enp4s0 5.32 2.76 1.49 0.39 0.00 0.00 0.97
12:50:01 AM enp4s0 4.57 2.22 1.01 0.25 0.00 0.00 0.90
01:00:01 AM enp4s0 4.71 2.32 1.02 0.27 0.00 0.00 1.08
01:10:01 AM enp4s0 4.60 2.29 1.03 0.28 0.00 0.00 0.97
01:20:01 AM enp4s0 4.63 2.21 1.04 0.26 0.00 0.00 0.94
01:30:01 AM enp4s0 4.68 2.18 1.07 0.25 0.00 0.00 0.97
01:40:01 AM enp4s0 4.70 2.20 1.08 0.25 0.00 0.00 0.99
01:50:01 AM enp4s0 10.28 2.72 1.43 0.35 0.00 0.00 0.88
02:00:01 AM enp4s0 4.69 2.29 1.02 0.27 0.00 0.00 1.05
02:10:01 AM enp4s0 4.80 2.26 1.08 0.25 0.00 0.00 1.03
02:20:01 AM enp4s0 4.77 2.26 1.08 0.26 0.00 0.00 0.96
02:30:01 AM enp4s0 4.96 2.42 1.09 0.33 0.00 0.00 0.97
02:40:01 AM enp4s0 4.99 2.37 1.06 0.32 0.00 0.00 1.08
Average: enp4s0 5.13 2.34 1.10 0.28 0.00 0.00 1.00