linux服务端流量大监控分析
前言
日常工作中,服务端带宽流量徒增后又降下去,需要事后分析原因,在没有相关相关监控系统保存流量数据时,往往对于事后分析苦于没有数据不能进行定位分析而苦恼,本文主要介绍如何进行实时流量数据获取并保存,然后分析原因。
1、进程级流量监控
一般采用nethogs工具进行采集数据,nethogs的安装可通过yum命令进行,具体安装步骤不在此赘述,以下介绍工具的使用和如何格式化输出保存数据。
执行命令nethogs -h
帮助命令查看使用方法
其中,-b表示适合bughunt模式,配合-t使用。
默认情况下执行nethogs
回车后,页面动态实时显示数据,如果将实时数据写入文本保存,如nethogs > nethogs.log
,如果需要在后台运行可以执行nohup nethogs > nethogs.log &
,但是此种方式保存的文件只能用cat nethogs.log
查看,vim查看会显示乱码。
此种方式不能把所有数据抓取保存,不能达到预期目标,因此需要用使用跟踪模式执行命令:
nohup nethogs -d 5 -t > networks_program.info &
其中,-d 5表示延迟显示数据更新,这样就可以用vim
命令查看保存的抓取到的进程使用的流量数据,但是此种方式保存的数据不便于查看,同时也不知道具体是那个时间的流量情况,如下图:
因此需要对其进行格式化处理,编写相关脚本实现,处理后的进程流量输入如下所示:
这样抓取保存的数据就能很清晰满足时候分析流量大占用的进程是什么了,同时也知道时那个时候采集的进程数据。
2、IP间访问流量监控
在1中我们可以使用nethogs
工具获取到进程相关的流量数据,实际分析中远不够,因此我们需要借助另外一个工具命令iftop
配合使用才能做到具体分析。
如果直接执行iftop
然后将其输出存入文件,这样也不会把采集的实时数据写入文件,这样保存到文件的数据也是只有cat
才能查看,vim
查看同样会乱码,因此需要跟相关参数让输出为文本格式。命令为:nohup iftop -nNP -i eth0 -t -L 10 > networks_ip.info &
,其中-t表示文本输出,-L前提与-t才能配套使用。
⚠️注意iftop
采集的数据量较大,需要关注存储的空间,本人实际使用过发现服务端10小时,采集到了60G的流量数据。
同样,为了后期分析数据,需要对采集的数据进行预处理,在每一行前面添加日期和时间,便于定位IP流量访问。可以使用如下预处理方法:
awk '{ print strftime("%Y-%m-%d %H:%M:%S ", systime()) $0 }' tmp_networks_ip.info >>networks_ip.info
总结
基于以上两种采集保存分析网络流量的工具,需要配套使用才能更好地分析网络流量异常行为。