Linux监控TCP连接数并触发日志记录

Z先森 2018-12-05 PM 3631℃ 0条

场景

由于服务器经常半夜出现TCP连接数暴增,没办法及时查看处理,回头看记录又看不到现象,不好排查,故编写此脚本用于记录日志。

脚本内容

#!/bin/bash
#任务计划设置此脚本每分钟执行一次即可,* * * * * sh /shell/tcp_stats.sh
now_time=$(date +%Y%m%d-%H:%M:%S)
log_dir="/var/log/tcp_stats/" #日志
time_range="3" #3秒内的差异值
max_tcp_diff="1000" #差异值的上限

function get_netstat_log(){
        if [[ ! -d $log_dir ]];then
                mkdir -p $log_dir
        fi
        before_tcp_stats=$(netstat -anltp | wc -l) #取当前tcp连接数
        sleep $time_range
        after_tcp_stats=$(netstat -anltp | wc -l) #隔${time_range}秒后取tcp连接数
        diff=$(expr ${after_tcp_stats} - ${before_tcp_stats})  #计算差异值
        if [[ $diff > $max_tcp_diff ]];then
                netstat -anltp >${log_dir}${now_time}.log
        fi
}
for ((i=1, i<6, i++))
do
        get_netstat_log
        sleep 7
done
标签: shell, netstat

如无特殊说明,本博所有文章均为博主原创。

评论啦~