前言
在Linux中一切皆文件的哲学,可以让我们很容易地获取很多信息。/proc/net/dev这个文件就是存放网络适配器及统计信息的途径,可以通过这个文件来统计我们服务器的流量信息。
/proc/net/dev
这个文件的权限是0444,这就意味着只要使用普通用户就可以获取到网卡的流量信息了。
内容:cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 480 8 0 0 0 0 0 0 480 8 0 0 0 0 0 0
wlp5s0: 19584992 18508 0 0 0 0 0 0 2309028 15850 0 0 0 0 0 0
enp4s0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
前面两行是标题信息,这些信息的统计都是从开机开始统计的:
Inter-face:网口名称
Receive:接受数据包的信息,即入口流量信息
Transmit:发送数据包的信息,即出口流量信息
bytes:表示发送数据包的总大小,即发送或者接口的总的流量大小(单位是字节,byte)
packets:表示数据包的个数,即发送或者接口数据包总的个数
errs:由设备驱动程序检测到的发送或接收错误的总数。
drop:设备驱动程序丢弃的数据包总数
fifo:FIFO缓冲区错误的数量
frame:分组帧错误的数量
colls:接口上检测到的冲突数
compressed:设备驱动程序发送或接收的压缩数据包数
multicast:设备驱动程序发送或接收的多播帧数
carrier:由设备驱动程序检测到的载波损耗的数量
获取流量统计:
cat /proc/net/dev | grep -v "|" | awk '{split($1,b,":");print b[1]" "$2" "$10 }'
lo 480 480
wlp5s0 20296158 3494371
enp4s0 0 0
总结
获取网口的流量的平均信息,可以根据时间间隔的流量差取平均值,就可以获取到了,监控的时候一般就是获取这个平均值进行监控。