Linux实时网络流量监控

在系统中,有很多自带的查看系统信息的工具,如top可以查看实时进程和cpu内存的使用率等,netstat可以查看网络连接的端口信息。而查看网络实时带宽和网络连接就得另外自己安装软件了。今天推荐的是一款叫的工具。

Linux 实时网络流量监控教程(CentOS7 为主,和你前面 MySQL 环境配套)

先查看网卡名称:

ip a

常见网卡名:eth0、ens33、enp0s3

工具选择一句话区分

  • nload:看网卡整体进出带宽(最简单,看总流量)
  • iftop:看每个 IP 之间的实时流量,查哪个 IP 在跑流量
  • nethogs:看哪个进程占用带宽(最实用,定位程序)
  • sar:系统自带,不用额外装,定时采样
  • vnstat:记录历史流量,看日 / 月总流量(不是纯实时)

1. nload|查看网卡整体实时带宽(推荐新手)

安装(CentOS7 yum)

yum install nload -y

使用

# 监控ens33网卡,替换成你自己网卡
nload ens33

界面:

  • Incoming:入站流量
  • Outgoing:出站流量
  • Curr 当前速率、Avg 平均、Min 最小、Max 峰值、Total 总流量
  • 按左右箭头切换网卡,q退出

常用参数

# 刷新间隔200ms,单位M
nload -t 200 -u M ens33

2. iftop|查看每个 IP 连接的流量(排查外部 IP 跑流量)

安装(CentOS7 需要 epel 源)

yum install epel-release -y
yum install iftop -y

使用

# -i 指定网卡,-n 不解析域名加速,-B 显示Bytes(默认bit)
iftop -i ens33 -n -B

常用快捷键(进入界面后)

  • P:显示端口号
  • t:切换流量统计周期
  • q:退出

必须 root 执行,用来发现哪个 IP 大量传输数据

3. nethogs|按进程查看网络流量【排查哪个程序占带宽首选】

安装

yum install epel-release -y
yum install nethogs -y

使用

nethogs ens33

直接列出:进程名、PID、本机收发流量。

场景:服务器带宽跑满,直接找到是 MySQL/nginx/ 脚本哪个进程在跑流量。

4. sar|系统自带,无需安装,实时采样

sar 属于sysstat包,最小化系统可能没装

yum install sysstat -y
# 每1秒采集一次,一共采集10次,看网卡流量
sar -n DEV 1 10
  • rxkB/s:每秒接收 KB
  • txkB/s:每秒发送 KB

5. vnstat|历史流量统计(记录每日流量,非实时)

yum install vnstat -y
# 监控网卡
vnstat -i ens33
# 实时模式
vnstat -l -i ens33

快速无工具方案(不装软件,简易查看)

读取 /proc/net/dev,写循环实时打印

while true;do clear;cat /proc/net/dev;sleep 1;done

常用场景推荐

  1. 想看服务器总带宽:nload
  2. 想知道哪个 IP 疯狂访问:iftop
  3. 想知道哪个进程吃带宽:nethogs(强烈推荐排查)
  4. 不想装软件:sar

常见问题

  1. 命令找不到:CentOS7 需要先装 epel 扩展源
  2. iftop/nethogs 需要 root 权限,必须 sudo
  3. 网卡名称不对:ip a核对网卡名称,不要一直写 eth0(很多云服务器是 ens33)

实操小案例(你 MySQL 服务器场景)

服务器带宽跑满,排查步骤:

  1. nload ens33 确认入站还是出站打满
  2. nethogs ens33 看是不是 mysqld 进程在大量传输
  3. 如果是外部 IP 大量拉取数据,再用iftop -i ens33 -n看对方 IP
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像-次元社
欢迎您留下宝贵的见解!
提交
头像-次元社

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容