nginx日志过滤

nginx单条日志格式

61.135.169.92 - - [12/Mar/2018:17:24:45 +0800] "GET /changyan/version-v4.js?15208466853470.1961183244800202 HTTP/1.1" 200 2089 "http://www.apkfuns.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"  

过滤指定时间

cat xxx.log | grep -E "(11/Mar/2018|12/Mar/2018)"  

统计PV

cat xxx.log|wc -l  

根据ip过滤

tail -n 1000 xxx.log | awk '{print $1}' |sort |uniq -c|sort -nr|head  

根据域名过滤

tail -n 100 xxx.log | awk '{print $11}' |sort |uniq -c|sort -nr|head  

去除爬虫

#!/bin/sh
########################################

nginx_home="/opt/nginx/conf" #你的nginx配置目录  
log_path="/data/logs/web_log/www_gznow_cn_access.log" #你的日志路径

########################################

tail -100 ${log_path} \  
|grep -i -v -E "dnspod|google|yahoo|baidu|msnbot|FeedSky|sogo" \
|awk '{print $1}' |sort |uniq -c|sort -nr|head \
|awk '{if($1>80)print "deny "$2";"}' > ${nginx_home}/safe_block_deny.conf

#关键变量解释
#tail -100 ${log_path} 读取日志中最近100行记录
#|grep -i -v -E "dnspod|google|yahoo|baidu|msnbot|FeedSky|sogo" 搜索引擎等蜘蛛除外
#|awk '{print $1}' |sort |uniq -c|sort -nr|head 合并重复记录,并计算数量
#|awk '{if($1>80)print "deny "$2";"}' > ${nginx_home}/safe_block_deny.conf 
#多于80行的IP将在nginx配置目录生成 Nginx deny 语法的配置文件给予调用。  
#以上变量大家使用的时候根据需要修改吧。

shadowsocks 日志过滤

cat /var/log/shadowsocks.log | grep "2018-04-04" | grep "connecting" |  awk '{print $5 $6 $7}' |sort |uniq -c|sort -nr|head  

参考文档