Linux 服务器带宽流量查看指南:从基础到进阶的实用命令

快小二编导 技术教程

在运维工作中,实时掌握服务器的带宽流量情况是保障系统稳定运行的关键环节。无论是排查网络延迟、优化资源分配,还是应对突发流量峰值,准确的带宽数据都能为决策提供重要依据。本文将详细介绍 Linux 系统中常用的带宽流量查看命令,从基础工具到高级分析,帮助你全面监控服务器网络状态。

一、基础命令:快速获取带宽概览

1.1 ifconfig:传统网络接口信息查看

ifconfig 是 Linux 系统中最经典的网络配置工具,虽然在部分新发行版中已被 ip 命令取代,但仍广泛用于查看网络接口的基本信息,包括带宽使用情况。

随机图片

使用方法
直接输入 ifconfig 命令,输出结果中包含接口名称(如 eth0ens33)、IP 地址、MAC 地址以及接收(RX)和发送(TX)的数据包统计:

ifconfig eth0

关键参数解析

  • RX packets:接收的数据包总数
  • TX packets:发送的数据包总数
  • RX bytes:接收的总字节数
  • TX bytes:发送的总字节数
  • errors/dropped/overruns:错误、丢弃和溢出的数据包数量

局限性
ifconfig 只能显示累计数据,无法实时监控带宽变化,适合快速查看接口基本状态。

1.2 ip 命令:现代网络管理工具

ip 命令是 ifconfig 的替代工具,功能更强大,支持更详细的网络配置和监控。

查看接口统计信息

ip -s link show eth0

输出示例

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:00:00:01 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    123456789  123456   0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    987654321  654321   0       0       0       0

优势

  • 支持更丰富的参数(如 -s 显示统计信息)
  • 输出格式更清晰,便于脚本解析
  • 兼容现代网络技术(如 VLAN、隧道等)

二、实时监控工具:动态跟踪带宽变化

2.1 iftop:实时带宽流量监控

iftop 是一款基于终端的实时带宽监控工具,能够直观显示各网络连接的带宽使用情况,按流量大小排序。

安装方法
Debian/Ubuntu:sudo apt install iftop
CentOS/RHEL:sudo yum install iftop

使用方法
直接运行 iftop,默认显示所有网络接口的实时流量。常用参数:

  • -i eth0:指定监控的接口
  • -n:不解析主机名(加快显示速度)
  • -B:以字节为单位显示带宽(默认是比特)
  • -P:显示端口号

界面解析

  • 顶部:接口名称、IP 地址、当前带宽速率(分为 2 秒、10 秒、40 秒平均值)
  • 中间:各连接的源 IP、目标 IP、带宽使用情况(箭头表示流量方向)
  • 底部:累计流量统计

示例

iftop -i eth0 -n -P

2.2 nload:直观的带宽趋势图

nload 以图形化方式展示实时带宽使用情况,分为上下两部分:上半部分显示接收流量,下半部分显示发送流量。

安装方法
Debian/Ubuntu:sudo apt install nload
CentOS/RHEL:sudo yum install nload

使用方法
直接运行 nload,默认监控所有接口。按 左右箭头 切换接口,按 q 退出。

界面解析

  • 左侧:当前带宽速率(实时值、平均值、最大值)
  • 右侧:带宽使用趋势图(绿色表示接收,蓝色表示发送)

优势

  • 图形化展示更直观,适合快速观察带宽变化趋势
  • 支持多接口切换,操作简单

三、高级分析工具:深入挖掘流量细节

3.1 tcpdump:数据包级别的流量分析

tcpdump 是一款强大的网络抓包工具,能够捕获并分析网络数据包,帮助定位具体的流量来源和协议。

安装方法
Debian/Ubuntu:sudo apt install tcpdump
CentOS/RHEL:sudo yum install tcpdump

常用命令

  • 捕获所有接口的流量:sudo tcpdump
  • 捕获指定接口的流量:sudo tcpdump -i eth0
  • 过滤特定端口(如 80):sudo tcpdump port 80
  • 保存捕获结果到文件:sudo tcpdump -w traffic.pcap
  • 读取保存的文件:sudo tcpdump -r traffic.pcap

示例
捕获 HTTP 流量并显示详细信息:

sudo tcpdump -i eth0 port 80 -A

输出解析
显示每个 HTTP 请求和响应的头部信息,便于分析具体的流量内容。

3.2 vnstat:长期带宽统计

vnstat 是一款轻量级的带宽监控工具,能够记录网络接口的历史流量数据,生成日、周、月统计报告。

安装方法
Debian/Ubuntu:sudo apt install vnstat
CentOS/RHEL:sudo yum install vnstat

初始化接口
首次使用需初始化监控接口:

sudo vnstat -u -i eth0

查看统计信息

  • 实时流量:vnstat -l
  • 每日统计:vnstat -d
  • 每月统计:vnstat -m
  • 小时统计:vnstat -h

示例输出

eth0  /  daily

          day        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     2023-10-01    123.45 MB |   67.89 MB |   191.34 MB |   18.21 kbit/s
     2023-10-02    234.56 MB |  123.45 MB |   358.01 MB |   33.98 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        250 MB |     130 MB |     380 MB |

优势

  • 低资源占用,适合长期监控
  • 支持多种统计维度,便于分析流量趋势

四、脚本化监控:自动化带宽数据收集

对于需要定期收集带宽数据的场景,可以通过脚本结合上述工具实现自动化监控。以下是一个简单的示例脚本,用于记录每小时的带宽使用情况:

#!/bin/bash
INTERFACE="eth0"
LOG_FILE="/var/log/bandwidth.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")

# 使用ip命令获取接收和发送字节数
RX_BYTES=$(ip -s link show $INTERFACE | awk '/RX:/ {getline; print $1}')
TX_BYTES=$(ip -s link show $INTERFACE | awk '/TX:/ {getline; print $1}')

# 计算带宽(假设上次记录的字节数保存在临时文件中)
if [ -f /tmp/bandwidth_last ]; then
    LAST_RX=$(awk '{print $1}' /tmp/bandwidth_last)
    LAST_TX=$(awk '{print $2}' /tmp/bandwidth_last)
    DELTA_RX=$((RX_BYTES - LAST_RX))
    DELTA_TX=$((TX_BYTES - LAST_TX))
    # 转换为MB(1MB=1024*1024字节)
    RX_MB=$(echo "scale=2; $DELTA_RX / (1024*1024)" | bc)
    TX_MB=$(echo "scale=2; $DELTA_TX / (1024*1024)" | bc)
    echo "$TIMESTAMP - $INTERFACE: RX $RX_MB MB, TX $TX_MB MB" >> $LOG_FILE
fi

# 保存当前字节数到临时文件
echo "$RX_BYTES $TX_BYTES" > /tmp/bandwidth_last

使用方法
将脚本保存为 bandwidth_monitor.sh,添加执行权限:

chmod +x bandwidth_monitor.sh

通过 crontab 每小时执行一次:

crontab -e
# 添加以下行
0 * * * * /path/to/bandwidth_monitor.sh

五、总结与选择建议

不同的工具适用于不同的场景:

  • 快速查看接口状态ifconfigip 命令
  • 实时带宽监控iftop(适合查看连接级流量)或 nload(适合趋势观察)
  • 数据包分析tcpdump(定位具体流量问题)
  • 长期统计vnstat(生成历史报告)

在实际工作中,建议结合多种工具使用,例如用 iftop 实时监控异常流量,用 vnstat 分析长期趋势,用 tcpdump 深入排查问题。通过合理运用这些工具,你可以全面掌握服务器的带宽使用情况,为系统优化和故障排查提供有力支持。

希望本文能帮助你更好地理解和使用 Linux 系统中的带宽监控命令,提升运维效率。

0 19718

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码