• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

nginx access日志按时间进行分割

Nginx相关 zhuxtqw 21次浏览 已收录 0个评论

按小时过滤日志

#!/bin/bash
#file log path
log_file='/var/log/nginx/access.log'

last_hour=1
# start time
start_time=`date -d "$last_hour hour ago" +"%H:%M:%S"`
# end time
end_time=`date +"%H:%M:%S"`
#Get the host ip address
host_ip=`ip addr |grep eth0|awk 'BEGIN{FS="([[:space:]]|/)+"}NR==2{print $3}'`
# output log file
filter_ip='/opt/scripts/log/hour_ip.txt'
# app name
app_name="#"

echo "$app_name: $host_ip $end_time" > $filter_ip

tac $log_file | awk -v st="$start_time" -v et="$end_time" '{t=substr($4,RSTART+14,15);
if(t>=st && t<=et) {print $0}}' \
|awk '{if($9~/404/)a[$1" "$7" "$9]++}END{for(i in a) print i,a[i]}' \
|awk '{print $4,$1,$2}'|sort -nr|head -n 10 >> $filter_ip

num=`cat $filter_ip|wc -l`

if [ $num -ge 2 ]; then
  cat $result | mail -s "$app_name: suspect_attack" test@163.com
fi

按分钟过滤日志:

#/bin/bash
#日志文件
logfile='/var/log/nginx/access.log'
log_file='/opt/scripts/log/half_ip.txt'

# app name
app_name="#"
#host ip addr
host_ip=`ip addr |grep eth0|awk 'NR==2{print $2}'|awk -F/ '{print $1}'`

#time interval
last_minutes=30

#开始时间
start_time=`date -d "$last_minutes minutes ago" +"%H:%M:%S"`

#结束时间
stop_time=`date +"%H:%M:%S"`

echo "$app_name: $host_ip $stop_time" > $log_file

#过滤出单位之间内的日志并统计最高ip数
tac $logfile | awk -v st="$start_time" -v et="$stop_time" '{t=substr($4,RSTART+14,21);if(t>=st && t<=et) {print $0}}' \
| awk '{print $1}' | sort | uniq -c | sort -nr |egrep -v '106.14.240.239'|awk '{if($1 > 1000){print $0}}' >> $log_file

num=`cat $log_file|wc -l`

if [ $num -ge 2 ]; then
  cat $log_file | mail -s "$app_name: suspect_attack" test@163.com
fi

VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明nginx access日志按时间进行分割
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址