• Nginx日志分析和统计


    一、nginx的日志格式

    查看nginx.conf 文件,默认格式如下:

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

    字段说明

    下面具体看下访问日志的内容:

    223.104.41.37 - - [05/Jul/2022:13:34:20 +0800] "GET /api/book/info?bookId=123 HTTP/1.1" 200 14632 "http://www.zzz.com.cn/archive?bookId=123" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"

    解释:

    远程主机IP地址        访问时间         时区        方法        资源        协议        状态码        发送字节   Referer        浏览器信息

    二、access.log 文件位置

    nginx.conf 中内容:
    access_log  /var/log/nginx/access.log  main;

    说明我们的日志位置在/var/log/nginx 下。

    三、日志分析:

    1、统计前5的访问IP

    1. # awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -5
    2. 7093 183.152.124.55
    3. 3719 218.108.36.18
    4. 1797 115.220.140.234
    5. 1545 112.10.236.137
    6. 1141 183.228.110.80

    2、统计指定某一天的访问IP

    1. # grep "18/May/2022" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -5
    2. 755 112.10.236.127
    3. 358 223.94.216.200
    4. 348 116.30.149.23
    5. 283 140.243.118.204
    6. 270 183.253.242.192
    7. # awk '/18\/May\/2022/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -5
    8. 755 112.10.236.127
    9. 358 223.94.216.200
    10. 348 116.30.149.23
    11. 283 140.243.118.204
    12. 270 183.253.242.192

    文件较大的时候,建议先grep再awk,这样速度快很多。

    3、统计指定资源

     处理第7个字段以'.html'结尾的行

    1. # awk '$7 ~ /\.html$/ {print $1,$7,$9}' /var/log/nginx/access.log
    2. 14.104.225.143 /web/common/success.html 200
    3. 219.153.191.189 /web/common/success.html 200
    4. 152.32.189.96 /mtja.html 200
    5. 152.32.189.96 /index.html 200
    6. 152.32.189.96 /login.html 200
    7. 152.32.189.96 /mindex.html 200

    4、过滤URL

    1. $ awk '{print $11}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -5
    2. 12133 "http://www.zzz.com.cn/translation"
    3. 7550 "http://www.zzz.com.cn/applicationAdd"
    4. 4255 "http://www.zzz.com.cn/search"
    5. 2565 "http://www.zzz.com.cn/request"
    6. 2257 "http://www.zzz.com.cn/order"

    5、统计流量

    1. $ grep "03/Jul/2022" /var/log/nginx/access.log | awk '{sum+=$10} END{print sum}'
    2. 54827188

    6、统计状态码

    1. $ awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
    2. 77065 200
    3. 2933 304
    4. 1519 400
    5. 148 405
    6. 106 206
    7. 65 499
    8. 9 173
    9. 5 408
    10. 2 504
    11. 2 404

  • 相关阅读:
    用AI绘画-Stable Diffusion稳定生成指定人物的2-3人场景图,制作小说配图从未如此轻松!
    Vue 前端 实现 HTML 转 PDF 并导出(方案一:html2canvas + jspdf 前端直接实现)
    (三十)大数据实战——HBase集成部署安装Phoenix
    cpp中this和*this区别
    【漏洞复现】浙大恩特CRM大客户系统sql注入0day(三)
    Line多账号如何运营?
    Python学习38:凯撒密码——解密
    【C++STL基础入门】list交换、翻转,排序、合并和拼接操作
    nginx配置dav上传+展示页面
    TCP三次握手以及UDP相关知识
  • 原文地址:https://blog.csdn.net/icanlove/article/details/125616852