zoukankan      html  css  js  c++  java
  • Nginx日志分析及脚本编写

    在我们日常的运维中,当Nginx服务器正常运行后,我们会经常密切关注Nginx访问日志的相关情况,发现有异常的日志信息需要进行及时处理。

    那今天我将跟大家一起来研究和分析Nginx日志,nginx默认日志路径为:/usr/local/nginx/logs/access.log 和error.log文件。如下图查看nginx日志:cat access.log |more

     

    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"';

    access_log  logs/access.log  main;

    格式说明:

    $remote_addr, $http_x_forwarded_for 记录客户端IP地址

    $remote_user 记录客户端用户名称

    $request 记录请求的URL和HTTP协议

    $status 记录请求状态

    $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。

    $bytes_sent 发送给客户端的总字节数。

    $connection_requests 当前通过一个连接获得的请求数量。

    $http_referer 记录从哪个页面链接访问过来的

    $http_user_agent 记录客户端浏览器相关信息

    $request_length 请求的长度(包括请求行,请求头和请求正文)。

    $request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。

    Nginx日志分析需求:

    1)                 分析截止目前为止访问量最高的IP排行。

    awk '{print $1}' /usr/local/nginx/logs/access.log|sort |uniq -c |sort -nr |head -20

    2)                 分析从早上9点至中午12点总的访问量。

     

    3)                 分析上一秒的访问请求数。

     

    4)                 找到当前日志中502或者404错误的页面并统计。

    awk '{print $0}' /usr/local/nginx/logs/access.log|egrep "404|502"|awk '{print $1,$7,$9}'|more

    通过编写脚本实现自动分析Nginx异常访问并加入防火墙:

    1)       首先要判断什么是恶意访问呢?

    我们可以定义为每秒请求一个URL超过20次的IP都可以封掉哦。

    #!/bin/sh

  • 相关阅读:
    Oracle删除.dbf文件报错
    Java 7 新的 try-with-resources 语句,自动资源释放
    模式对话框提交form之后总是打开新的页面
    MyEclipse更改项目的发布目录
    IntelliJ IDEA 更换发布目录
    java.sql.SQLException: ORA-00942: 表或视图不存在
    编码那点事
    配置nginx实现windows/iis应用负载均衡
    MSMQ消息队列
    .NET 分布式技术比较
  • 原文地址:https://www.cnblogs.com/linuxx/p/8028131.html
Copyright © 2011-2022 走看看