• nginx日志定时切割脚本


    1 日志管理

    1.1 Nginx日志描述

    通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。

    1.2 Nginx日志格式

    打开nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf

    日志部分内容:

    #access_log  logs/access.log  main;

    日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

     

    默认“main”日志格式:

     参数明细表:

    $remote_addr

    客户端的ip地址(代理服务器,显示代理服务ip)

    $remote_user

    用于记录远程客户端的用户名称(一般为“-”)

    $time_local

    用于记录访问时间和时区

    $request

    用于记录请求的url以及请求方法

    $status

    响应状态码,例如:200成功、404页面找不到等。

    $body_bytes_sent

    给客户端发送的文件主体内容字节数

    $http_user_agent

    用户所使用的代理(一般为浏览器)

    $http_x_forwarded_for

    可以记录客户端IP,通过代理服务器来记录客户端的ip地址

    $http_referer

    可以记录用户是从哪个链接访问过来的

    查看日志命令tail -f /usr/local/nginx/logs/access.log

    1.3 Nginx自定义日志

    打开nginx.conf配置文件去掉#注释见下图:

    自定义某一个server配置的日志,使用“main”日志格式。

    日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。

    重新读取加载Nginx配置文件:

    执行命令:nginx-s reload

    查看日志文件:

    执行命令:tail -100f /usr/local/nginx/logs/abc.access.log

    1.4 Nginx日志分隔

    nginx的日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。

    第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述符而不是文件名定位文件。

    第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。然后你就可以处理旧的日志文件了。[或者重启nginx服务]。

     

    nginx日志按每分钟自动切割脚本如下:

    新建shell脚本:vi/usr/local/software/nginx/nginx_log.sh

            #!/bin/bash
            #设置日志文件存放目录
            LOG_HOME="/usr/local/software/nginx/logs/"
    
            #备分文件名称
            LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log
    
            #重命名日志文件
            mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log
    
            #向nginx主进程发信号重新打开日志 
            kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid

    创建crontab设置作业

    #设置日志文件存放目录crontab -e

    */1 * * * *  sh /usr/local/software/nginx/nginx_log.sh

  • 相关阅读:
    c++语言特性深究
    springmvc和springboot的差别
    c++11新的大特性
    C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制!
    程序人生丨想学编程,大学什么样的专业能成为一名真正的程序员?
    C/C++编程笔记:C语言预处理命令是什么?不要以为你直接写#就行!
    盘点:中国“颜值+才华”的几位知名女程序员!如何看待女生当程序员?
    程序人生丨三种语言实现—用户登录界面随机验证码,源代码分享!
    自学编程,为何你始终不能学出效果?切记一定要避免这 8 大误区!
    第二批《中等职业学校专业教学标准(试行)》目录
  • 原文地址:https://www.cnblogs.com/duanxz/p/5008739.html
Copyright © 2020-2023  润新知