Linux实时监控网卡流量统计
1、netstat
netstat 常用来查看后台服务进程的相关状态。
netstat 可以用来打印网络连接、路由表、连接的数据统计。
rpm -qi net-tools
rpm -qf `which netstat`
打印所有连接;使用 -a,列出所有连接。
netstat -a
打印 TCP 或 UDP 连接;使用 -t 选项列出 TCP 协议的连接。
netstat -t
netstat -u
禁用反向域名解析;使用 -n 选项禁用域名解析功能,这样可以加快查找速度。
netstat -n
显示对应的程序识别码和程序名称;使用 -p 选项列出正在监听的套接字。
打印连接进程信息;使用 -p 选项查看进程信息。
netstat -p
打印监听中的连接;使用 -l 选项列出正在监听的套接字。
netstat -l
打印网络工作信息统计表;使用 -s 选项查看进程信息(只展示部分结果)。
netstat -s
打印网络接口;使用 -i 选项查看进程信息。
netstat -i
持续输出信息;使用 -c 选项查看进程信息。
netstat -c
根据进程pid查端口;利用 grep 命令,通过进程 pid 查出监听端口。
netstat -nap | grep 8848
统计网络socket状态;借助 awk 命令,统计socket状态对应的个数。
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
常用组合
netstat -anltp
netstat -tan
netstat -uan
netstat -tnl
netstat -unl
路由查询
netstat -rn
route -n
ip route
统计
netstat -I
netstat -Iens160
ifconfig -s
ifconfig -s ens160
执行后发现连接数很少,基本上可以确认应该没啥业务流量了,但是为了保险起见,我们应该对业务监听的端口进行抓包看看(这里以nginx为例)
yum install tcpdump
tcpdump -iany dst port '80 or 443' and dst host '输入自己的ip' -nnv
tcpdump -iany dst port '80 or 443' and dst host '127.0.0.1' -nnv
这里没有输出,证明我们猜想是正确的,确实没有业务流量了
2、使用dstat命令实时查看网卡流量
dstat 命令是一个用来替换 vmstat、iostat、netstat、nfsstat 和 ifstat 这些命令的工具,通用的系统资源统计工具,是一个全能系统信息统计工具。与 sysstat 相比,dstat 拥有一个彩色的界面,在观察性能状况时,数据比较显眼容易观察;而且 dstat 支持即时刷新,输入 dstat 3 即每 3 秒收集一次,和 sysstat 相同的是,dstat 也可以收集指定的性能资源,dstat -c 显示 CPU 的情况。
yum install -y dstat
dstat -tnf 10
PS:dstat命令默认显示的是速度单位,而不是存储单位。例如,dstat -tnf命令的输出中,k和b单位分别表示千字节和字节的速度,而不是存储容量。从下面这张图仔细的小伙伴肯定有疑问,为什么这里的send平均在1500k怎么和上面第二张图的10M不相等呢?
原因:这就是Mb/s和MB/s的区别啦。dstat表示的单位是字节每秒,但是Mb/s表示的是位每秒,通过上面的换算,其实是一样的,只是单位不同而已。
从这里看到确实流量有这么高,进一步查看
3、使用iftop命令
iftop是一个实时流量监控工具,可以用来监控网络接口的流量。要监控某个进程的流量,你可以使用以下命令:
iftop -i eth0 -f "src port <port> or dst port <port>"
但是这里我们并不知道端口,所以执行
iftop -i ens32
从这里就可以确认到是哪一个目的ip了,如果再结合到neatest 命令就可以确认到是哪一个进程。
4、使用nethogs命令
4.1、简单实践
默认监控所有物理网卡,可以后面接口网卡名称方式指定监控某网卡流量,可以接多个网卡名称,网卡之间空格隔开。
nethogs eth0
默认刷新频率间隔1秒,刷新次数不限制直到主动结束进程或者退出。
nethogs -a -d 10
从这里可以查看到某个进程对应的所有流量了。
4.2、nethogs 语法及参数
1、使用语法
用法:nethogs [参数] [device]
2、参数说明
参数 参数说明
-V 打印命令版本
-h 打印帮助
-b bughunt模式
-d 指定显示刷新频率,单位秒,默认1秒
-v 指定流量单位模式(0 = KB/s, 1 = total KB, 2 = total B, 3 = total MB)
-c 设置刷新更新次数
-t tracemode模式,可以记录下每一次刷新的流量值
-p 混杂模式下监听流量(不建议使用)
-s 按照发送流量排序输出
-a 监控所有网卡端口,包括环回接口
3、运行模式下按键说明
按键 按键说明
q 退出
s 按照发送流量排序
r 按照接受流量排序
m 切换端口流量单位显示模式在B,KB,MB之间流量切换
5、nload
使用nload命令也可以实时监控入流量和出流量
使用lsof -i:port 根据端口查询进程
yum install -y epel-release
yum install -y nload
nload ens32
============
vnstat 查看接口统计报告
yum install -y vnstat
实时流量情况
vnstat -i ens32 -l #实时流量情况
当上面的命令 按下“CTRL+C”结束后,会显示监控期间的流量统计结果:
iftop
iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等
命令用法:
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
省略其他……
交互命令:
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
yum install -y iftop
nethogs
三、nethogs使用,按进程实时统计网络带宽利用率(推荐)
命令用法:
1、设置5秒钟刷新一次,通过-d来指定刷新频率:nethogs -d 5
2、监视eth0网络带宽 :nethogs eth0
3、同时监视eth0和eth1接口 : nethogs eth0 eth1
交互命令:
以下是NetHogs的一些交互命令(键盘快捷键)
m : 修改单位
r : 按流量排序
s : 按发送流量排序
q : 退出命令提示符
yum install -y nethogs