如何从Linux系统中获取带宽、流量网络数据
这篇讲的是如何在Linux系统中,把系统记录的原始网络流量数据,转换成我们更常用的带宽指标。作者从国外云厂商(如AWS)以流量(Bytes)为单位监控网络的场景切入,引出了带宽与流量的换算关系:带宽 = 单位时间内的流量 × 8 / 时间段。核心是利用Linux系统 `/proc/net/dev` 文件,它详细记录了每块网卡收发的字节数、数据包数等信息。 文章不仅解释了字段含义,还提供了一个清晰的Shell脚本示例。这个脚本通过两次读取 `/proc/net/dev` 中的流量数据,计算差值,再结合采样时间间隔(如60秒),就能得出入向与出向的带宽(Mbps)。作者还提到,如果想简化计算,有个近似方法:直接将AWS流量数值后7位去掉,就能粗略得到带宽(单位:Mbps),虽有误差但很方便。 最后,文章做了延伸:除了整机网络数据,通过 `/proc/$PID/net/dev` 路径,还可以获取特定进程(包括虚拟机或Docker容器)的网络统计信息,为更细粒度的监控提供了思路。对于需要编写监控脚本或理解Linux网络底层数据的工程师,这是一篇很实用的指南。