zoukankan      html  css  js  c++  java
  • 在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 

  • 相关阅读:
    好学习法
    error execution phase upload-config/kubelet: Error writing Crisocket information for the control-plane node: timed out waiting for the condition
    linux 大实话
    解决vi/vim中粘贴 格式错乱
    centos7 调试系统服务命令
    gitlab jenkins docker kubernetes
    修改centos7主机名
    野战ci/cd
    相互交流生成快捷网页链接
    设置centos7静态网卡配置文件
  • 原文地址:https://www.cnblogs.com/sunlong88/p/15095203.html
Copyright © 2011-2022 走看看