• 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

  • 相关阅读:
    2.(1)栈的链式存储、链栈的操作(图解、注释、代码)
    flutter3-macOS桌面端os系统|flutter3.x+window_manager仿mac桌面管理
    离线数仓(2):数据仓库相关架构和规范
    如何组装一个注册中心?
    杭电多校-Darnassus-(最小生成树本质+预处理+链式向前星)
    Vue3 - watchEffect 使用教程
    数据加密标准DES安全性
    [Servlet/Tomcat] HttpServletRequest#getHeader(headerNameWithIgnoreCase)(获取header时不区分大小写)
    Appium - python
    vue2.0项目安装依赖 sass 报错
  • 原文地址:https://blog.csdn.net/icanlove/article/details/125616852