如何获取机器网络IO(以字节/秒为单位)?



我正在尝试以"每秒字节数"计算给定EC2机器(linux os(的网络使用情况。

起初我使用的是从/proc/net/netstat//proc/net/snmp中检索的TcpInsegsTcpOutsegsUdpInDatagramsUdpOutDatagrams。但我很快意识到这些指标是单位"每秒计数"。

我需要"每秒字节数",因为我得到的网络容量信息在这个单元中。有没有办法获取这些信息?

我知道IpExtInOctetsIpExtOutOctets这两个指标,但不知道它们是否适合我。而且我没有找到他们的文档。

有人知道我如何以每秒字节为单位获取机器网络 IO?非常感谢!

在 SNMP 的接口表下,您可以获取每个接口的输入和输出(总数据包和总字节数(,因此您不必添加单个来获取总数。

除此之外,所有计数器TcpInSegsTcpOutSegs等都由相同数量的 coutner 补充,但以字节为单位(它们后缀为octets,但含义相同。 你找不到它们的问题是命名法的问题。 在SNMP术语中,字节称为八位字节,TCP数据包称为段,UDP称为数据报,在以太网中称为数据包(不确定最后一点(。

该信息存储在 linux 中的文件/proc/net/dev中,格式如下:

$ cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
enp2s0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
wlp3s0:  164083     571    0    0    0     0          0         0    16635      98    0    0    0     0       0          0
lo:     660      10    0    0    0     0          0         0      660      10    0    0    0     0       0          0
$ _

可能就足够了。

相关内容

最新更新