免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
Linux中有各种查看网络流量的工具,比如sar、iftop、nethogs等。它们可以从不同的纬度来分析系统中流量信息,本文进行简要介绍。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
对于正常进程导致的带宽跑满或跑高的问题,需要对服务器的带宽进行升级。而对于异常进程,有可能是由于恶意程序问题,或者是部分IP恶意访问导致,也可能是服务遭到了CC攻击。可以按照以下步骤排查定位问题:
分析处理。排查影响带宽使用率过高的进程是否正常,并分类进行处理。
本文相关配置及说明已在CentOS 6.5 64位操作系统中进行过测试。其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档。
sar可以从网络接口层面来分析数据包的收发情况、错误信息等。使用sar来监控网络流量的常用命令如下所示。
sar -n DEV [interval] [count]
说明:interval参数是统计间隔,count参数是统计次数。
执行以下命令,使用sar每1秒统计一次网络接口的活动状况,连续显示5次。
sar -n DEV 1 5
命令执行后会列出每个网卡5次的平均数据取值,根据实际情况来确定带宽跑满的网卡名称,对于ECS实例来说,通常内网网卡为eth0,外网网卡为eth1。系统显示类似如下,确认是eth1通过流量较大,然后执行以下步骤检查具体问题。
iftop命令常见用法如下。参数-i后跟的interface表示网络接口名,比如eth0、eth1等等。如果不通过-i参数指定接口名,则默认检测第一块网卡的使用情况。
iftop [-i interface]
说明:如果安装失败,可以切换CentOS 6的源,详情请参见 CentOS 6 EOL如何切换源。
yum install iftop -y
iftop -i eth1 -P
说明:-P参数将会显示请求端口。系统显示类型如下。
netstat -tunlp |grep [$Port]
说明:[$Port]为上一步查看的端口。系统显示类型如下。
=>
代表发送数据,<=
代表接收数据。说明:iftop的流量显示单位是Mb,这里的b是比特(bit),不是字节(byte)。而ifstat显示的单位是KB中的B,也就是字节。1byte等于8bit。
进入iftop界面后,可以通过按下相应的字母快捷按键,来对显示结果进行调整。
Nethogs是一款开源的网络流量监控工具,可用于显示每个进程的带宽占用情况。这样可以更直观定位异常流量的来源。Nethogs支持IPv4和IPv6协议,支持本地网卡及PPP连接。Nethogs工具的安装方法请参阅其官方帮助文档,本文不再详述。安装完毕,直接输入nethogs启动工具即可。不带任何参数时,nethogs默认监控eth0。用户可以通过ifconfig等指令核实具体哪个网络接口(eth1、eth0)对应公网网卡。
说明:如果安装失败,可以切换CentOS 6的源,详情请参见 CentOS 6 EOL如何切换源。
yum install nethogs -y
nethogs eth1
说明:nethogs默认的监控间隔是1秒,用户可以通过-d参数来设定监控间隔。例如执行如下命令,设定监控间隔为5秒。系统显示类似如下。
nethogs eth1 -d 5
kill -TERM [$Port1]
说明:如果是Web服务程序,您可以使用iftop等工具来查询具体IP来源,然后分析Web访问日志是否为正常流量。日志分析可以使用logwatch或awstats等工具进行。
在nethogs监控界面,按s可以按照Sent列进行排序,按r可以按照Received列进行排序,按m可以切换不同的统计单位显示,例如kb/s、kb、b、mb。监控界面信息说明如下所示。