观察网络流量的工具:IPTRAF
想知道你的Linux系统上网络流量有多大吗?想知道是哪一块网卡承载着网络流量吗?想知道哪一个进程产生了网络流量吗?iptraf可以帮你做到。在最新的Linux release上,比如CentOS 7.5,采用了衍生版本iptraf-ng 。
iptraf的参数列表
iptraf后面加上不同的参数,可以起到不同的作用,下面是iptraf的参数命令列表:
参数命令 | 作用 |
---|---|
-i iface | 网络接口:立即在指定网络接口上开启IP流量监视,iface为all指监视所有的网络接口,iface指相应的interface |
-g | 立即开始生成网络接口的概要状态信息 |
-d iface | 网络接口:在指定网络接口上立即开始监视明细的网络流量信息,iface指相应的interface |
-s iface | 网络接口:在指定网络接口上立即开始监视TCP和UDP网络流量信息,iface指相应的interface |
-z iface | 网络接口:在指定网络接口上显示包计数,iface指相应的interface |
-l iface | 网络接口:在指定网络接口上立即开始监视局域网工作站信息,iface指相应的interface |
-t timeout | 时间:指定iptraf指令监视的时间,timeout指监视时间的minute数 |
-B | 将标注输出重新定向到“/dev/null”,关闭标注输入,将程序作为后台进程运行 |
-L logfile | 指定一个文件用于记录所有命令行的log,默认文件是地址:/var/log/iptraf |
-I interval | 指定记录log的时间间隔(单位是minute),不包括IP traffic monitor |
-u | 允许使用不支持的接口作为以太网设备 |
-f | 清空所有计数器 |
-h | 显示帮助信息 |
iptraf -g
通常我们会先看看总体状况,“iptraf -g” 显示每一个网卡上的流量:
# Iface会显示当前服务器上面所有的网卡名字
# 最后一个字段显示的是当前对应网卡的流量默认以(kbps)为单位
iptraf -s eth0
查看指定网卡上的流量统计,总体流量、流入量、流出量、以及按协议分类的流量统计,“iptraf -s eth0”:
# 上图中我们看到iptraf-ng已经展示出各大协议栈整体的流量输出,IPV4,IPV6,TCP,UDP,ICMP等等
# 同时我们也看到了Total rates 整体流量数和pps
# Incoming rates 入口流量数和pps
# Outgoing rates 出口流量数和pps
简单对这些单位做下介绍
入口:用户侧客户端的流量
出口:服务器响应用户侧客户端的流量
常用单位
带宽bps: bits per second(每秒传输bit位数)
包速pps:packets per second(每秒传输数据包数量)
连接cps:connections per second(每秒连接数)
请求qps:queries per second(每秒查询数量)
TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)
iptraf -s eth0
以上我们看到大部分流量来自TCP协议,需要进一步找出这些流量通过哪一个TCP port,“iptraf -s eth0” 统计各port的流量::
很明显是TCP port 443,即https端口。如果我们还想进一步看看是哪些用户在跟我们的https端口通信,“iptraf -i eth0” 可以帮忙:
“iptraf -i eth0” 的输出分为两个窗口,上面是TCP socket pairs,下面是UDP。这里我们看到,连接我们https端口的远程IP是xx.xxx.xxx.xxx。如果你愿意,根据这个socket pair的信息,还可以利用 lsof 工具找出进程号。