2024-10-05 12:21:19 发布
网友
我在寻找一种在linux下以编程方式(无论是调用库还是独立程序)监视实时ip流量的方法。我不要总数,我要的是当前正在使用的带宽。我在找一个类似于OSX的istat菜单的网络流量监视器的工具。在
我相当确定这样的事情确实存在,但我不确定该去哪里看,我宁愿不必重新发明轮子。在
它是否像监视套接字一样简单?或者我需要一个工具来处理我的大量开销?在
我使用一个名为^{}的小程序,它将许多类似“stat”的函数组合成1个快速输出。非常可定制。它将为您提供当前的网络吞吐量以及更多。在
在linux中,netstat程序将给您原始的网络统计信息。您可以自己解析这些统计信息以生成有意义的输出(dstat就是这样做的)。在
netstat
您可以使用以下dstat命令获得网络吞吐量和数据包计数:
dstat
dstat -n net-packets -f 10
或者,如果要监视特定接口,可以执行以下操作:
如果您喜欢更传统的bits per second输出:
bits per second
dstat -n net-packets -N eth0,wlan0 bits 10
这将为您提供10秒的平均值。如果您希望将其写出来进行后期处理,可以使用以下方法导出到CSV文件:
Dstat附带了很多插件,可以将这些指标与系统中的其他指标关联起来,如果您需要自定义数据或监视特定于您的环境的内容,则可以灵活地添加自己的(python)插件。在
在/proc/net/dev中有字节和数据包计数器,因此:
import time last={} def diff(col): return counters[col] - last[iface][col] while True: print "\n%10s: %10s %10s %10s %10s"%("interface","bytes recv","bytes sent", "pkts recv", "pkts sent") for line in open('/proc/net/dev').readlines()[2:]: iface, counters = line.split(':') counters = map(int,counters.split()) if iface in last: print "%10s: %10d %10d %10d %10d"%(iface,diff(0), diff(8), diff(1), diff(9)) last[iface] = counters time.sleep(1)
我使用一个名为^{} 的小程序,它将许多类似“stat”的函数组合成1个快速输出。非常可定制。它将为您提供当前的网络吞吐量以及更多。在
在linux中,
netstat
程序将给您原始的网络统计信息。您可以自己解析这些统计信息以生成有意义的输出(dstat就是这样做的)。在您可以使用以下
dstat
命令获得网络吞吐量和数据包计数:或者,如果要监视特定接口,可以执行以下操作:
^{pr2}$如果您喜欢更传统的
bits per second
输出:这将为您提供10秒的平均值。如果您希望将其写出来进行后期处理,可以使用以下方法导出到CSV文件:
Dstat附带了很多插件,可以将这些指标与系统中的其他指标关联起来,如果您需要自定义数据或监视特定于您的环境的内容,则可以灵活地添加自己的(python)插件。在
在/proc/net/dev中有字节和数据包计数器,因此:
相关问题 更多 >
编程相关推荐