在CentOS 8中,使用awk+sort+uniq进行Apache访问日志分析

本文介绍在CentOS 8中,通过AWK、Sort、Uniq三个命令,对Apache日志进行分析。

基础准备:
1. 查看Apache Log的格式

通过命令head /var/log/httpd/access_log,获取Apache日志如下。

10.10.0.1 - - [23/Mar/2020:16:43:12 +0800] "GET /noindex/common/css/styles.css HTTP/1.1" 200 71634 "http://10.10.3.212/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0"

2. 按照空格进行分割后,该日志可以拆解为20个字段,具体如下。

第01字段:10.10.0.1
第02字段:-
第03字段:-
第04字段:[23/Mar/2020:16:43:12
第05字段:+0800]
第06字段:"GET
第07字段:/noindex/common/css/bootstrap.min.css
第08字段:HTTP/1.1"
第09字段:200
第10字段:99548
第11字段:"http://10.10.3.212/"
第12字段:"Mozilla/5.0
第13字段:(Windows
第14字段:NT
第15字段:10.0;
第16字段:Win64;
第17字段:x64;
第18字段:rv:74.0)
第19字段:Gecko/20100101
第20字段:Firefox/74.0"

分析案例:
访问量最高的10个来源IP地址
cat /var/log/httpd/access_log | awk '{print $1}' | sort | uniq -c | sort -nr | head -1

访问次数最多的文件或页面
cat /var/log/httpd/access_log | awk '{print $11}' | sort | uniq -c | sort -nr | head -20

访问量最高的视频文件
cat /var/log/httpd/access_log | awk '($7~/.css/) { print $7} ' | sort -nr | uniq -c | head -10

文件大小超过40M的视频文件的访问量
cat /var/log/httpd/access_log | awk '($10 > 40000000 && $7~/.mp4/){print $7}' | sort -n | uniq -c | sort -nr | head -100

统计网站流量                                                                                                                
cat /var/log/httpd/access_log | awk '{sum+=$10} END {print sum/1024/1024 "MB"}'

发生404响应的用户请求
cat /var/log/httpd/access_log | awk '($9 ~/404/)' | awk '{print $9,$7}' | sort | uniq -c

统计http status
cat /var/log/httpd/access_log | awk '{print $9}' | sort | uniq -c | sort -nr

网站访问最常用的协议
cat /var/log/httpd/access_log | awk '{print $8}' | sort | uniq -c | sort -nr

用户访问网站最常用的浏览器
cat /var/log/httpd/access_log | awk '{print $20}' | sort |uniq -c | sort -nr | head -20

访问网站的客户端设备使用情况
cat /var/log/httpd/access_log | awk '{print $16 " " $15 " " $17 " " $20 " " $19}' | sort |uniq -c | sort -nr | head -20 

原文地址:https://www.cnblogs.com/sunlong88/p/15095203.html