博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx日志定时切割脚本
阅读量:4596 次
发布时间:2019-06-09

本文共 1815 字,大约阅读时间需要 6 分钟。

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还是会向你重命名的文件写日志,是靠文件描述符而不是文件名定位文件。

第二步向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

 

转载于:https://www.cnblogs.com/duanxz/p/5008739.html

你可能感兴趣的文章
线段树 (区间查询最大 区间求和 区间加)带lazy
查看>>
三十而立,从零开始学ios开发(十二):Table Views(上)
查看>>
MySQL中的decimal
查看>>
gitlab+jenkins持续集成(一)
查看>>
4.signed/unsigned char
查看>>
iOS,UIImage有个contentmodel属性
查看>>
Debian 7 amd64 + fbterm + ucimf
查看>>
数据结构之【排序】复习题
查看>>
spring boot 首次请求Controller慢
查看>>
事件绑定
查看>>
grep命令详解
查看>>
iterm2快捷键
查看>>
asp.net 生成PDF方法
查看>>
EntityFramework 7 Join Count LongCount 奇怪问题(已修复)
查看>>
设计模式---组件协作模式之模板方法模式(Tempalte Method)
查看>>
程序员心理看WEB开发框架
查看>>
@Data 注解在实体类的使用可省去生成GET,SET方法
查看>>
webpack 介绍 & 安装 & 常用命令
查看>>
ASP.NET刷新页面的六种方法总结
查看>>
ECSHOP增加独立评论页面,并分页显示
查看>>