在 CentOS 服务器上监控网络流量,可以使用多种系统自带或轻量级的命令行工具。以下是常用、可靠且无需额外安装(或仅需简单安装)的方案,按推荐顺序和场景分类说明:
✅ 一、系统自带工具(无需安装,开箱即用)
1. ss(替代 netstat,更高效)
查看实时连接及流量统计(需配合 -i 显示接口信息):
# 查看所有 TCP/UDP 连接及其接收/发送队列(含字节数)
ss -tuln
# 查看每个 socket 的详细统计(需内核支持,部分版本支持 -i)
ss -ti # 显示 TCP 连接的重传、RTT、接收/发送字节等(高级诊断)
⚠️ 注意:
ss -i不直接显示总流量,但可观察连接级实时吞吐特征。
2. /proc/net/dev(最底层、最准确的接口级流量)
直接读取内核网络设备统计:
# 实时刷新查看 eth0 流量(单位:bytes)
watch -n 1 'cat /proc/net/dev | grep eth0'
# 或格式化输出(接收/发送字节 + 包数)
awk '/eth0/{printf "RX: %.2f MB, TX: %.2f MBn", $2/1024/1024, $10/1024/1024}' /proc/net/dev
✅ 优点:零开销、绝对权威;
❌ 缺点:无历史趋势、需手动计算速率。
3. iftop(类 top 的实时流量监控 —— 需安装)
虽非默认安装,但属于 EPEL 中标准工具,极轻量实用:
# 启用 EPEL(CentOS 7/8/9 均适用)
sudo yum install epel-release -y # CentOS 7/8
# 或 CentOS 9+:sudo dnf install epel-release -y
# 安装 iftop
sudo yum install iftop -y # CentOS 7/8
sudo dnf install iftop -y # CentOS 9+
# 使用示例
sudo iftop # 按连接显示实时带宽(TOP N)
sudo iftop -P # 显示端口
sudo iftop -f "port 80" # 过滤 HTTP 流量
sudo iftop -B # 以 Bytes/s 显示(而非 bps)
✅ 亮点:实时排序、支持过滤、直观显示源/目标 IP:Port。
4. nethogs(按进程监控流量 —— 强烈推荐用于排障)
定位“谁在吃带宽”:
sudo yum install nethogs -y # 安装
sudo nethogs eth0 # 监控指定网卡,按进程显示实时上下行
sudo nethogs -t # 显示时间戳
💡 适合排查异常进程(如X_X、备份、未授权服务)。
✅ 二、轻量级长期监控与绘图(可选进阶)
▶ vnstat(基于 /proc/net/dev 的轻量数据库,低开销)
- 不抓包,只轮询
/proc/net/dev,资源占用极低; - 支持日/月/小时流量统计与图表。
# 安装
sudo yum install vnstat -y
# 初始化数据库(针对 eth0)
sudo vnstat -u -i eth0
# 启动服务并开机自启
sudo systemctl enable vnstat
sudo systemctl start vnstat
# 查看统计
vnstat # 今日/本月汇总
vnstat -d # 按天查看
vnstat -h # 按小时查看(最近24h)
vnstat --oneline # 简洁一行输出(适合脚本调用)
✅ 优势:无性能影响、数据持久化、支持导出 CSV/JSON。
✅ 三、其他实用技巧
🔍 快速诊断高流量来源
# 统计当前 ESTABLISHED 连接最多的 IP(可能为攻击源或爬虫)
sudo ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
# 查看各端口流量(需结合 netstat/ss + /proc)
# 或使用:sudo lsof -iTCP -sTCP:ESTABLISHED -n -P | awk '{print $9}' | cut -d: -f2 | sort | uniq -c | sort -nr
📊 可视化(可选)
bmon(终端带宽监视器,支持多网卡、颜色图表):sudo yum install bmon -y && sudo bmon- 配合
Grafana + Prometheus + node_exporter实现企业级监控(适合生产环境长期运维)。
🚫 不推荐的做法
- ❌
tcpdump抓包分析(除非深度排错):性能开销大、产生大量日志、不适用于常规监控; - ❌
iftop/nethogs长期后台运行(它们是交互式工具,应按需启动); - ❌ 修改内核参数或加载额外模块(除非特殊需求,违背“系统工具”原则)。
✅ 总结:按场景选择工具
| 场景 | 推荐工具 | 命令示例 |
|---|---|---|
| ✅ 快速查看网卡总流量(实时) | watch -n 1 'cat /proc/net/dev' |
watch -n 1 'awk "/eth0/{print $2,$10}" /proc/net/dev' |
| ✅ 实时连接级带宽排名 | iftop |
sudo iftop -B -P |
| ✅ 定位哪个进程在发包 | nethogs |
sudo nethogs eth0 |
| ✅ 长期流量统计(日/月报表) | vnstat |
vnstat -d |
| ✅ 深度 TCP 连接分析(重传、延迟) | ss -ti |
ss -s; ss -ti state established |
需要我为你生成一个一键流量监控脚本(如每5秒打印 eth0 RX/TX 速率 + top 5 进程),或配置 vnstat 的邮件告警/微信通知?欢迎随时提出 👍
PHPWP博客