• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
在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 "\t" $15 "\t" $17 "\t" $20 "\t" $19}' | sort |uniq -c | sort -nr | head -20 

 

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/15095203.html

posted on 2021-08-03 17:15  孙龙-程序员  阅读(170)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3