使用awk,sort和uniq从ATS访问日志中统计出异常链接域名的次数排名
在運維過程中,發現portal中出現流量異常曲線,
就從排查ATS的訪問日志中的異常域名開始,下面是我截獲的對應時段的訪問日志截圖
發現里面有502,403等異常響應,我們將這段訪問日志文件記為exception_peak.log。采用下面的命令來過濾出502的訪問記錄,并剝離出對應的訪問鏈接的host,統計指定時段中的該host出現次數,最后逆序排名。
cat exception_peak.log | grep ' 502 ' | awk -F '"' '{print $2}' | awk -F '/' '{print $3}' | sort | uniq -c | sort -nr > host_peak.log
這里說明如下:
grep ' 502 ' 只過濾出502的訪問記錄,
awk -F '"' '{print $2}'表示以雙引號為分隔線,取第2段子域,也就是訪問鏈接,
awk -F '/' '{print $3}'表示從訪問鏈接中提取出host
?sort | uniq -c ?表示現將可能重復的行放到一起,再去掉重復行,并標注每行重復的次數
sort -nr ?表示按重復次數逆序排名
這樣處理的結果將會被重定向到一個名為?host_peak.log的日志文件中,它的內容如下
這就是我們想要的效果。
注意:如果采用下面的命令
cat exception_peak.log | grep ' 502 ' | awk -F '"' '{print $2}' | awk -F '/' '{print $3}' | awk 'a[$1]+=1;END{for(i in a){print a[i]" "i;}}' | sort -k1 -urn > host_peak.log
我們會發現有個小bug就是,數字ip的次數無法統計,參見下面的截圖
另外,下面是可能需要用到的幾個命令:
awk -F “/“ ‘{print $0}’?
awk -F “/“ ‘{if ($1==502) print $2}’?
awk -F “:“ ‘{print $1,$2}’?
總結
以上是生活随笔為你收集整理的使用awk,sort和uniq从ATS访问日志中统计出异常链接域名的次数排名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用c++filt查看trafficse
- 下一篇: ATS缓存中间层介绍