我正在尝试以"每秒字节数"计算给定EC2机器(linux os(的网络使用情况。
起初我使用的是从/proc/net/netstat/
和/proc/net/snmp
中检索的TcpInsegs
、TcpOutsegs
、UdpInDatagrams
和UdpOutDatagrams
。但我很快意识到这些指标是单位"每秒计数"。
我需要"每秒字节数",因为我得到的网络容量信息在这个单元中。有没有办法获取这些信息?
我知道IpExtInOctets
和IpExtOutOctets
这两个指标,但不知道它们是否适合我。而且我没有找到他们的文档。
有人知道我如何以每秒字节为单位获取机器网络 IO?非常感谢!
在 SNMP 的接口表下,您可以获取每个接口的输入和输出(总数据包和总字节数(,因此您不必添加单个来获取总数。
除此之外,所有计数器TcpInSegs
、TcpOutSegs
等都由相同数量的 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
$ _
可能就足够了。