如何以每秒字节数获取机器网络 IO?
How to get the machine network IO in bytes per second?
我正在尝试计算 "bytes per second" 中给定 EC2 机器 (linux os) 的网络使用情况。
起初我使用 TcpInsegs
、TcpOutsegs
、UdpInDatagrams
和 UdpOutDatagrams
,从 /proc/net/netstat/
和 /proc/net/snmp
中检索。但我很快意识到这些指标的单位是"count per second"。
我需要"bytes per second"因为我得到的网络容量信息就在这个单元里。有没有办法获取这些信息?
我知道 IpExtInOctets
和 IpExtOutOctets
这两个指标,但不知道它们是否适合我。而且我没有找到他们的文档。
任何人都知道如何以每秒字节数获取机器网络 IO?非常感谢!
在 SNMP 中,在接口 table 下,您可以获得每个接口的输入和输出(总数据包和总字节数),因此您不必添加单个接口来获得总数。
除此之外,所有计数器 TcpInSegs
、TcpOutSegs
等都由相同数量的计数器补充,但以字节为单位(它们后缀为 octets
,相反,但意思相同。)你没有发现它们的问题是命名问题。在 SNMP 术语中,字节称为八位字节,TCP 数据包称为段,UDP 称为数据报,在以太网中它们称为数据包(不确定最后一点)。
该信息存储在文件 /proc/net/dev
的 linux 中,格式如下:
$ 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
$ _
可能就够了。
我正在尝试计算 "bytes per second" 中给定 EC2 机器 (linux os) 的网络使用情况。
起初我使用 TcpInsegs
、TcpOutsegs
、UdpInDatagrams
和 UdpOutDatagrams
,从 /proc/net/netstat/
和 /proc/net/snmp
中检索。但我很快意识到这些指标的单位是"count per second"。
我需要"bytes per second"因为我得到的网络容量信息就在这个单元里。有没有办法获取这些信息?
我知道 IpExtInOctets
和 IpExtOutOctets
这两个指标,但不知道它们是否适合我。而且我没有找到他们的文档。
任何人都知道如何以每秒字节数获取机器网络 IO?非常感谢!
在 SNMP 中,在接口 table 下,您可以获得每个接口的输入和输出(总数据包和总字节数),因此您不必添加单个接口来获得总数。
除此之外,所有计数器 TcpInSegs
、TcpOutSegs
等都由相同数量的计数器补充,但以字节为单位(它们后缀为 octets
,相反,但意思相同。)你没有发现它们的问题是命名问题。在 SNMP 术语中,字节称为八位字节,TCP 数据包称为段,UDP 称为数据报,在以太网中它们称为数据包(不确定最后一点)。
该信息存储在文件 /proc/net/dev
的 linux 中,格式如下:
$ 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
$ _
可能就够了。