Linux流量监控并不复杂,关键在于选对工具:实时查看用iftop,进程溯源用nethogs,历史统计用vnstat,分布式环境用Prometheus。
为什么需要监控Linux流量
流量监控是运维的基本功,带宽跑满导致业务中断,某个进程悄悄上传数据,或者云服务器流量超支,这些场景都能通过监控提前发现。多数情况下,流量异常是性能瓶颈和安全隐患的前兆,监控能帮你做三件事:容量规划,给扩容提供依据;成本控制,尤其是云服务器按流量计费时;故障定位,快速找到是哪个IP或进程在捣乱。业内专家指出,没有流量监控的服务器就像蒙眼开车,迟早会出事。
Linux流量监控工具对比:如何选择适合你的方案
不同场景需要不同工具,不必追求大而全,下面针对常见需求进行对比,帮你快速找到合理选择。
| 工具 | 核心功能 | 资源占用 | 适用场景 |
|---|---|---|---|
| iftop | 实时显示连接级带宽,按IP排序 | 极低 | 临时查看带宽使用情况,排查热点IP |
| nethogs | 按进程显示实时流量 | 低 | 定位哪个程序在占用带宽 |
| vnstat | 后台运行,记录日/月/年流量 | 极低 | 长期统计,流量趋势分析 |
| iptraf-ng | 全功能网络统计,含TCP/UDP端口 | 中等 | 需要详细协议分析的场景 |
| Prometheus + Grafana | 分布式监控,历史数据,可视化告警 | 较高(需部署) | 多台服务器集群,企业级监控 |
实时流量查看:iftop与nload
iftop是最常用的实时工具,安装后直接运行iftop -i eth0,能看到每个连接的瞬时收发速率,按流量大小排序,使用-n不解析主机名,速度更快;-P显示端口,适合定位服务,nload更简洁,只显示总带宽和入站出站流量,适合快速扫一眼。
进程级定位:nethogs
当发现流量异常但不知道是哪个进程引起的,nethogs是首选,运行sudo nethogs eth0,直接列出进程名、PID以及实时流量,一目了然。
据统计,相当一部分运维人员靠它找出过挖矿木马或P2P下载器。
历史流量统计:vnstat
vnstat后台驻留,不占用终端,安装启动后,vnstat -d看日报,-m看月报,-l实时模式,它适合做长期趋势分析,比如判断带宽峰值是否接近上限,或者云服务器月度流量是否超标,配置文件在/etc/vnstat.conf,可以自定义更新间隔。
全功能网络监控:iptraf-ng
iptraf-ng提供更详细的统计菜单,包括IP流量、TCP/UDP服务、包大小分布等,通过交互式界面操作,适合需要深度分析协议的场景,资源占用比iftop稍高,但功能更全面。
分布式环境监控方案
对于多台服务器,单机工具不够用,Prometheus配合node_exporter采集网络指标,Grafana做可视化面板,可以统一监控几十上百台机器,虽然部署成本高一些,但对于较大规模集群,行业共识认为这是最灵活的方案,告警规则可以配置流量突增通知,避免带宽打满影响业务。
如何监控Linux流量:从入门到进阶
掌握基础命令后,可以进一步实现自动化监控,这部分以实操为主,你可以在自己的服务器上直接测试。
安装与基础使用
- iftop:
sudo apt install iftop(Debian/Ubuntu)或sudo yum install iftop(CentOS/RHEL),运行sudo iftop -i eth0 -n。 - nethogs:
sudo apt install nethogs,运行sudo nethogs eth0。 - vnstat:
sudo apt install vnstat,启动服务sudo systemctl start vnstat,查看数据vnstat -d。 - iptraf-ng:
sudo apt install iptraf-ng,运行sudo iptraf-ng进入菜单。
实用参数与技巧
- 在iftop中按
t切换显示模式(发送/接收/总量),按B切换单位(bytes/bits),按p开启/关闭端口显示。 - nethogs默认按流量排序,按
m切换单位,按q退出。 - vnstat可以设置数据库位置,默认在
/var/lib/vnstat/,若需要重置统计,删除对应接口文件后重启服务。 - 使用
watch -n 1 iftop -i eth0让iftop每秒刷新,适合持续观察。
持久化监控与告警
- vnstat自动运行:服务启动后自动采集,无需额外设置,可以编写cron任务每天输出报表,例如
@daily vnstat -d > /var/log/vnstat_daily.log。 - Prometheus告警:在Prometheus中配置
alerting.rules,当node_network_receive_bytes_total速率超过阈值时触发告警,通过邮件或钉钉通知。 - 脚本监控:用shell脚本采集
/proc/net/dev或ifconfig数据,存储到日志文件,再配合Grafana的Simple JSON数据源展示,这种方式适合不想引入复杂系统的场景。
不同场景下的流量监控方案
单机开发环境
开发机流量不大,主要关注是否有异常占用。只需安装iftop和nethogs,临时查看即可,注意开发时可能跑多个服务,用nethogs快速定位是哪个进程在下载或上传。
生产环境服务器
生产环境需要记录历史流量,用于事后追溯和容量规划,推荐vnstat + 定期告警脚本,vnstat占用资源极低,不会影响业务,同时可以设置cron每天检查前一日峰值流量,如果接近带宽上限则发邮件提醒,对于关键业务,建议配合Prometheus做实时告警。
云服务器流量监控(如简米云、酷番云)
云服务器的流量直接关联费用。linux流量监控价格是很多用户关心的问题,使用开源工具如vnstat,零成本完成流量统计,避免云平台流量超标产生额外费用,云平台自带监控控制台也能看到带宽走势,但通常有5分钟延迟,且无法按进程细分,结合iftop实时查看,能精确控制突发流量。如果需要长期记录,建议在云服务器上部署vnstat,并设置月度流量告警,确保不超套餐。
企业内网流量监控
内网环境通常有多台服务器和桌面设备,需要一个集中监控系统。linux服务器流量监控方案可以采用Cacti或Zabbix,它们通过SNMP采集网络设备数据,但更现代的做法是Prometheus + exporter,在每台目标机器上运行node_exporter,Grafana统一展示,内网监控的重点是发现异常广播风暴或DHCP攻击,可以结合iptraf-ng分析协议类型。
流量监控数据解读与故障排查
拿到数据后,如何判断是否正常?以下是一些常见场景的判别方法。
如何判断带宽是否饱和
- 观察iftop中总带宽是否接近接口上限,例如千兆网卡,实时流量显示900Mbps左右,说明带宽接近饱和。
- 使用
ping -c 100 -f进行压力测试,看丢包率和延迟,如果流量高时丢包明显,说明带宽已满。 - 结合vnstat看日峰值和带宽利用率趋势。持续较高利用率(如超过70%)意味着需要扩容。
定位异常流量源
- 先用nethogs找出占用带宽最高的进程,看是否是已知服务,如果进程名陌生或可疑,使用
ls -la /proc/PID/exe查看执行路径。 - 再用iftop查看该进程对应的IP地址,如果连接大量陌生外网IP,很可能是被攻击或中了木马。
- 最后用
tcpdump -i eth0 host 目标IP抓包,分析具体协议和数据包内容。业内专家指出,大部分流量异常可以通过这三步在几分钟内定位。
监控Linux流量不是一次性的工作,而是一个持续优化的过程,从简单的iftop命令开始,逐步搭建适合自己规模的监控体系,就能在问题爆发前提前发现,保障业务稳定。
Linux流量监控常见问题解答
Q1: Linux流量监控工具哪个最好用?
A: 没有绝对的最好,取决于场景,临时查看推荐iftop,进程定位用nethogs,长期统计用vnstat,集群监控用Prometheus,多数情况下,组合使用比单一工具更有效。
Q2: iftop和nethogs有什么区别?
A: iftop显示的是连接级别的流量,即每个IP地址对的收发速率;nethogs显示的是进程级别的流量,能直接看到是哪个程序在占用带宽,两者互补,可以同时运行来排查问题。
Q3: 如何监控特定端口的流量?
A: 在iftop中按P键显示端口,然后按N过滤,输入端口号即可只看该端口,也可以使用tcpdump -i eth0 port 80抓取HTTP流量,再结合nethogs分析进程,更精确的方法是使用iptables的--dport规则统计指定端口的数据包和字节数。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/552061.html




