首页 / 帮助文档 / ubuntu服务器运维网络流量监控工具使用

ubuntu服务器运维网络流量监控工具使用

Ubuntu服务器在长期运行后,网络流量异常往往是性能下降或安全问题的第一信号。与其等到业务卡顿再去翻历史记录,不如提前部署好流量监控工具,让数据实时可见。本文直接围绕几款主流工具展开,从安装、使用到适用场景逐一说明,帮助你根据实际需求快速选型。

iftop:实时查看连接级流量

iftop是最直观的实时流量监控工具之一,它按网络连接展示流量,能快速定位哪个IP或端口占用了大量带宽。安装非常简单,在Ubuntu上执行:

sudo apt update && sudo apt install iftop -y

启动时需要root权限,直接运行:

sudo iftop -i eth0

界面中,中间区域显示每对主机之间的实时流量速率,顶部是累计流量,底部是汇总信息。按“n”可以关闭域名解析,减少等待;按“s”切换显示源端口;按“d”切换显示目标端口;按“p”可以暂停刷新。iftop适合快速排查突发流量,但不记录历史数据,只能用于实时观察。

nload:简洁的入站出站流量仪表盘

nload以图形化方式展示网卡的入站和出站流量,界面比iftop更简洁,适合只看总体趋势的场景。安装命令:

sudo apt install nload -y

运行:

nload eth0

界面分为上下两部分,上方是入站流量,下方是出站流量,右侧显示当前速率、平均速率、最小和最大速率以及总流量。使用左右方向键可以切换不同网卡。nload的优势是占用资源极低,适合在服务器负载较高时使用,不会对业务造成额外压力。

vnStat:轻量级流量统计与历史记录

vnStat与前面两款工具不同,它不抓包,而是读取内核网络统计信息,因此几乎不消耗CPU和内存。它最大的价值在于记录历史流量数据,可以按小时、天、月、年查看。安装:

sudo apt install vnstat -y

安装后需要初始化数据库,指定监控的网卡:

sudo vnstat -i eth0

如果网卡名称不同,用ip link show查看实际名称。初始化后,vnStat会自动在后台运行并记录数据。常用命令:

vnstat -h   # 按小时查看
vnstat -d   # 按天查看
vnstat -m   # 按月查看
vnstat -t   # 显示流量最高的天数

vnStat适合需要长期流量审计的场景,比如服务器流量计费、异常流量回溯等。它的数据存储在/var/lib/vnstat/目录下,可以定期备份。

bmon:多网卡带宽监控与文本图形输出

bmon支持同时监控多个网卡,并提供多种输出模式,包括交互式文本图形和可编程输出。安装:

sudo apt install bmon -y

运行:

bmon

默认界面会列出所有网卡,每个网卡显示实时速率曲线。按“g”可以切换图形模式,按“d”显示详细统计信息。bmon还支持将数据输出到文件或通过管道交给其他程序处理,适合需要集成到自定义监控脚本中的场景。

nethogs:按进程统计流量

当服务器上多个服务同时运行时,iftop只能看到连接级流量,无法直接知道是哪个进程在消耗带宽。nethogs解决了这个问题,它按进程显示实时流量。安装:

sudo apt install nethogs -y

运行:

sudo nethogs eth0

界面中每一行对应一个进程,显示该进程的发送和接收速率。按“m”可以切换显示模式,按“s”按流量排序。nethogs在排查某个服务异常上传或下载时非常高效,比如发现某个PHP进程持续向外发送数据,可能就是被植入恶意脚本的迹象。

ss与netstat:查看连接状态与端口流量

虽然ss和netstat不是专门的流量监控工具,但在排查网络问题时必不可少。ss是netstat的现代替代品,速度更快。常用命令:

ss -tunap   # 查看所有TCP和UDP连接及对应进程
ss -s       # 查看连接统计摘要

netstat如果未安装,可以通过sudo apt install net-tools安装。使用netstat -i可以查看网卡的收发包统计,包括错误包和丢包数,这对判断网络质量很有帮助。

netstat -i
netstat -an | grep ESTABLISHED | wc -l   # 统计当前已建立连接数

这些命令适合与流量监控工具配合使用,先通过iftop或nethogs定位到异常流量,再用ss查看具体连接详情和进程信息。

tcpdump:深度抓包分析

当流量监控工具显示有异常,但无法确定具体内容时,就需要抓包分析。tcpdump是命令行抓包的标准工具,安装:

sudo apt install tcpdump -y

基本用法:

sudo tcpdump -i eth0 -n host 192.168.1.100   # 抓取与指定主机的通信
sudo tcpdump -i eth0 -n port 80             # 抓取HTTP流量
sudo tcpdump -i eth0 -n -w capture.pcap     # 保存到文件供后续分析

抓包文件可以用tcpdump -r读取,也可以下载到本地用Wireshark分析。tcpdump功能强大但输出较为底层,适合有网络协议基础的用户。在生产环境中抓包时要注意控制抓包时长和文件大小,避免占用过多磁盘空间。

sar:系统级网络统计与历史数据

sar是sysstat工具包的一部分,可以收集和报告系统活动信息,包括网络接口的统计。安装:

sudo apt install sysstat -y

启用数据收集:

sudo systemctl enable sysstat
sudo systemctl start sysstat

查看网络统计:

sar -n DEV 1 5   # 每秒采样一次,共5次,显示所有网卡
sar -n EDEV 1 5  # 显示错误和丢包统计

sar的优势在于可以查看历史数据,数据默认保存在/var/log/sysstat/目录下。通过-f参数可以读取指定日期的数据文件。这对于事后分析服务器在某个时间段的网络表现非常有用。

Netdata:现代化实时监控面板

如果希望有一个图形化的Web界面来监控网络流量以及CPU、内存、磁盘等各项指标,Netdata是一个很好的选择。安装命令:

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

安装完成后,Netdata默认监听19999端口,通过浏览器访问http://服务器IP:19999即可看到实时监控面板。在面板中可以找到网络接口的详细图表,包括入站出站速率、数据包数量、错误计数等。Netdata占用资源较低,适合需要可视化监控但不想部署复杂监控系统的场景。

工具选型建议

不同的监控需求对应不同的工具。如果只是临时查看当前谁在占用带宽,iftop和nethogs最直接;如果需要长期记录流量数据用于审计,vnStat是首选;如果需要图形化展示且监控多个指标,Netdata更合适;如果需要深度分析数据包内容,tcpdump不可替代;如果服务器资源紧张,nload和vnStat对系统影响最小。实际运维中,通常组合使用两到三个工具,例如用vnStat做长期记录,用nethogs做实时排查,再用ss查看连接详情。

网络流量监控不是装完工具就结束了,更重要的是建立日常巡检习惯。每天查看一次vnStat的日流量报告,每周检查一次sar的历史数据,发现异常及时用nethogs和tcpdump深入排查。这样才能在问题扩大之前及时发现并处理。