linux主机异常流量分析

云主机上偶会收到瞬时异常流量监控告警,当我们有空登陆到服务器上查看时,往往流量已经恢复正常。很难定位产生问题的原因 。解决问题的关键需要获取如果数据:

- 哪个进程以发送大量数据?
- 在和哪个IP之间传送数据?
- 传送数据的内容是什么?

解决问题的思路编写脚本持续监控网卡流量,当超过指定阀值时,开始捕获数据并存储后进行分析
#!/bin/sh
# 获取TX流量
getTX(){ TX1=$(cat /proc/net/dev |grep eth0|awk '{print $10}') sleep 1 TX2=$(cat /proc/net/dev |grep eth0|awk '{print $10}') TX=$((($TX2 - $TX1)/1024*8)) echo $TX }
# 获取RX数据流量 getRX(){ RX1
=$(cat /proc/net/dev |grep eth0|awk '{print $2}') sleep 1 RX2=$(cat /proc/net/dev |grep eth0|awk '{print $2}') RX=$((($RX2 - $RX1)/1024*8)) echo $RX } # 使用tcpdump爬包 getPacket(){ tcpdump -i eth0 -c 50000 -w /opt/script/cap_$(date +%Y%m%d%H%M%S).pcap } # 使用iftop获取过哪些IP哪个端口进行数据交互 getiftop(){ iftoplog=/opt/script/iftoplog.txt for ((i=1;i<10;i++));do echo $(date +%Y-%m-%d:$H%M%S) >> $iftoplog /usr/sbin/iftop -s 2 -P -n -N -t >> $iftoplog done } # 使用nethogs获取哪个进程的数据流量比较大 getnethogs(){ } while [ 1 ];do if [ $(getTX) -gt 10000 ];then getPacket &
getiftop &
getnethogs &
fi done

猜你喜欢

转载自www.cnblogs.com/baill/p/9767486.html