nload 与 bmon 与 vnstat:带宽监控对比

11 分钟阅读 - 2026年6月15日

hero section cover
目录
  • nload 与 bmon 与 vnstat:Linux 带宽监控工具对比
  • nload:实时吞吐量一目了然
  • bmon:监控多个接口
  • vnstat:长期使用情况追踪
  • 快速对比
  • 何时使用何种工具
  • 总结
分享

nload、bmon 和 vnstat 在 Linux 带宽监控中的对比分析。何时使用哪一种工具、它们各自的局限性,以及如何组合使用以实现全面覆盖。

nload 与 bmon 与 vnstat:Linux 带宽监控工具对比

nloadbmonvnstat 是三款值得了解的 Linux 带宽监控工具。它们各自解决不同的问题,而最佳方案通常是两者的结合。本文将介绍每款工具的擅长之处、不足之处,以及在特定情况下应选用哪一款。

nload:实时吞吐量一目了然

nload 是一款终端工具,通过 ASCII 图表实时显示单个接口的吞吐量,分别展示入站和出站流量。它直接读取 /proc/net/dev ,因此无需 root 权限即可运行,且 CPU 占用率微乎其微。

使用接口名称启动它:

nload eth0

有用的参数:

  • -u M 将显示单位改为 MB/s(默认单位为每秒比特数)
  • -m 在同一屏幕上显示多个接口,不显示图表
  • -t 1000 设置刷新间隔(单位为毫秒)

按下 F2 会话中按此键,可在不重启的情况下调整刷新率和图表缩放比例。

屏幕上显示的内容:当前速率、平均值、最小值、最大值以及会话期间的总传输量。这些信息足以确认服务器是否正在传输您预期的流量,或发现突发的流量峰值。您无法获得:按进程归因、按连接细分或任何历史数据。关闭终端后,会话统计数据将消失。

若想在五秒内解答“该服务器当前是否已占满带宽?”,请使用 nload。

bmon:监控多个接口

bmon 采用了不同的方法。它不再详细展示单个接口,而是同时显示主机上的所有接口。顶部面板列出了每个接口及其当前的接收(RX)和发送(TX)速率。底部面板则针对您所选的接口绘制图表。使用方向键可在各接口间切换。

这正是您在虚拟化主机、路由器、配备多网卡的专用服务器,或运行 Docker 的任何设备上所需的工具——在这些场景中,接口列表往往多达数十个。若使用 nload 逐个检查,将十分繁琐。

按下 d 在会话中,即可切换至详细统计视图,该视图会额外显示数据包计数、错误率、丢包数及碰撞情况。这些数据对于诊断链路波动、MTU 不匹配或未表现为吞吐量问题的网卡驱动程序故障至关重要。

使用 -p 过滤接口列表以减少视觉杂乱:

bmon -p "eth*,ens*"

bmon 还可以通过 -o JSON、XML、ASCII 或 HTML 格式导出结构化数据,这对于脚本化快照或将数据输入其他工具非常方便:

bmon -o ascii -p eth0 > /tmp/eth0-stats.txt

不过与 nload 一样,它也有一个局限性:没有持久化的历史记录。关闭后数据即消失。

vnstat:长期使用情况追踪

vnstat 填补了其他两者的空白。它作为后台守护进程运行(vnstatd),并将流量计数器写入位于 /var/lib/vnstat/。该数据库在系统重启后仍会保留数据,并保存 5 分钟采样数据 48 小时、每小时数据 4 天、每日总计 2 个月,以及无限期保存的月度和年度汇总数据。

请在第一天就启用它:

systemctl enable --now vnstat

关键点:vnstat 仅统计守护进程启动后的流量。它无法追溯测量安装前的使用情况。在新服务器上,请在配置阶段安装该工具,否则在需要数据时将无法获取。

标准查询:

vnstat              # summary
vnstat -d           # daily breakdown
vnstat -m           # monthly totals
vnstat -h           # last 24 hours, hourly
vnstat -t           # top days
vnstat --json       # JSON export
vnstat -i eth0      # specific interface

vnstat 是解答“上个月我们传输了多少数据?”、“是否在月度配额范围内?”以及“长期趋势如何?”等问题的理想工具。 --alert 参数允许您设置与自定义计费周期相关的阈值,当您的服务商计费周期与日历月不一致时,此功能非常有用。

若需在状态页面或报告中展示图表,请配合 vnstati 生成 PNG 输出,以便在状态页面或报告中使用图表:

vnstati -s -i eth0 -o /var/www/html/traffic.png

vnstat 不擅长的领域:实时诊断。虽然 -l 虽然有实时模式,但它仅是一个计数器,没有图表,也没有按接口的详细信息。对于事件响应,您仍需在另一个窗口中打开 nload 或 bmon。

快速对比

功能nloadbmonvnstat
重点实时吞吐量多接口实时统计历史使用情况
可视化双ASCII图表接口列表 + 图表表格、通过 vnstati 生成的 PNG 图
持久化数据
导出格式JSON、XML、ASCII、HTMLJSON、XML、CSV
按进程归因
以守护进程方式运行
需要 root 权限
最适合快速检查拥有多个网卡的主机容量规划、计费

这些工具均无法告知您是哪一个进程或连接导致了流量。为此, iftop (按连接)和 nethogs (按进程) 才是合适的工具,且它们与上述所有工具配合良好。

何时使用何种工具

对于具有月流量上限的单网口 VPS,请在第一天安装 vnstat,并在需要快速检查时使用 nload。这可满足 95% 的情况。

对于独立服务器、虚拟化主机或任何运行容器的环境,请用 bmon 替代 nload。当您拥有超过三四个网卡和网桥时,多接口视图能节省大量时间。

若需对整个机群进行容量规划,vnstat 的 JSON 导出数据可无缝接入 Prometheus、Grafana 或您现有的任何指标监控系统。只需配置一次,直到需要生成月度报告时才需再次关注。

当流量异常且需要追踪源头时,上述三种工具均无法提供答案。此时 iftop (按带宽排序的顶级连接)和 nethogs (前几大进程) 便大显身手。

这三款工具均读取内核计数器而非捕获数据包,因此即使在饱和的10Gbps链路上,其开销也微乎其微。没有理由不将这三款工具全部安装。

总结

nload、bmon 和 vnstat 分别针对不同的问题:某个接口当前的状况、多个接口的整体状况,以及历史流量趋势。针对每个问题选择一个工具,您就能轻松搞定带宽监控——整个配置过程仅需约五分钟,且不会带来可测量的系统负载。

如果您的工作负载产生稳定的流量,且希望不再担心超额账单,那么不限流量的 VPS 能为您提供固定费率的端口和可预测的成本,这使得 vnstat 的历史数据成为规划工具,而非计费警报。

博客

本周特色

更多文章
优化 Linux 服务器工作负载的调整配置文件

优化 Linux 服务器工作负载的调整配置文件

如何为 GPU、数据库和高带宽 Linux 服务器选择、应用和定制经过调整的配置文件,并提供示例和 Ansible 部署技巧。

16 分钟阅读 - 2026年6月9日

VPS 的 Linux OOM 杀手调整:实用指南

12 分钟阅读 - 2026年6月8日

更多文章