使用logrotate定期切割nginx日志
前言
默认情况下,nginx的日志都会写到access.log文件中,访问流量大的话,日志文件很快就会膨胀到几十G,不方便分析处理,也占用硬盘空间。借助linux自带的logrotate工具可以很方便地实现日志自动分割。
- nginx日志目录:/usr/local/nginx/logs/
按天切割nginx日志的配置
vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
daily
size 10M
minsize 10M
rotate 30
missingok
notifempty
compress
nodelaycompress
copytruncate
dateext
dateformat -%Y-%m-%d
dateyesterday
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ];then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
配置说明:
- 按天切割
- 文件大小为10M的时候才切割
- 保留最近30天的日志文件
- 切割中遇到日志错误忽略
- 日志如果为空将不进行切割和压缩
- 以gzip压缩
- 不要将刚切割后的日志文件放到下个循环中进行压缩
- 切割后的日志文件添加扩展名
- 扩展名为年月日
- 扩展名的年月日为昨天的日期
- 在切割后执行 postrotate/endscript之间的命令,此处为热重启nginx
logrotate常用配置指令
| 指令 | 说明 |
|---|---|
| daily | 日志归档周期为1天。默认周期 |
| hourly | 日志归档周期为1小时 |
| weekly | 日志归档周期为1周 |
| monthly | 日志归档周期为1月,通常为每月的第一天 |
| size | 日志文件可被归档的最小值 |
| minsize | 日志文件可被归档的最小值,没到归档周期执行时间,不会执行归档操作 |
| maxsize | 日志文件大小超过设定值时,即使没到归档周期执行时间,也会执行归档操作 |
| rotate | 保留归档文件数,默认为0 |
| missingok | 如果日志文件不存在,则不显示错误信息 |
| nomissingok | 如果日志文件不存在,则显示错误信息。默认配置 |
| notifempty | 如果日志文件为空,则不进行归档操作。默认配置 |
| ifempty | 即使日志文件为空,也执行归档操作 |
| compress | 对归档文件启用压缩,默认为gzip压缩 |
| nocompress | 不压缩归档文件。默认配置 |
| compresscmd | 指定压缩归档文件的命令,默认为gzip压缩 |
| delaycompress | 在下一个归档周期再对当前归档文件进行压缩 |
| nodelaycompress | 不延迟压缩。默认配置 |
使用crontab定时执行logrotate
因为系统默认的logrotate规则可能会随机,所以直接删了默认规则,自行定义。
rm -rf /etc/cron.daily/logrotate- 使用
crontab -e新建crontab规则:00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx,这样每天凌晨0点0分就会执行nginx日志切割。注意确认logrotate命令的位置。
脚本方式
有的环境也用shell脚本+crontab的方式实现了nginx日志切割
#!/bin/bash
# description: nginx日志切割脚本
set -u
LogDir="/home/admin/apps/openresty/nginx/logs" # nginx日志路径
Expires=15 # 日志保留时长, 15天
function init() {
if [[ ! -d ${LogDir} ]]; then
echo "${LogDir} not found"
exit 1
fi
}
function main() {
cd ${LogDir}
for logfile in $(ls *.log);do
local logDate=$(date "+%F")
local gzipfile="${logfile}-${logDate}.gz"
gzip -c ${logfile} > ${gzipfile}
cat /dev/null > ${logfile}
done
find ./* -type f -mtime +${Expires} -iname "*.gz" | xargs rm -f
}
init
main
使用logrotate定期切割nginx日志的更多相关文章
- Linux环境下使用logrotate工具实现nginx日志切割
一. 前提背景及需求 nginx运行日志默认保存在nginx安装目录下的 /usr/local/nginx/logs 文件夹, 包含access.log和error.log两个文件. (1) acce ...
- 烂泥:切割nginx日志
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这几天自己看了下博客的nginx日志,发现日志文件发现越来越大. 因为nginx自己不会 ...
- Python切割nginx日志_小组_ThinkSAAS
Python切割nginx日志_小组_ThinkSAAS Python切割nginx日志
- 编写每天定时切割Nginx日志的脚本
自动每天定时切割Nginx日志的脚本,很方便很好用,推荐给大家使用.本脚本也是参考了张宴老师的文章,再次感谢张宴老师.1.创建脚本/usr/local/nginx/sbin/cut_nginx_log ...
- 按小时或天切割Nginx日志
#按小时或天切割Nginx日志到备份文件夹 LOGS_PATH=/home/www/logs/thc SAVE_PATH=/home/www/logs/thc YESTERDAY=$(date -d ...
- shell按日期自动切割nginx日志脚本
shell按日期自动切割nginx日志脚本 参考:自学it网 http://www.zixue.it/. #nginx日志切割脚本 #author:ce #!/bin/bash #设置日志文件存放目录 ...
- shell切割nginx日志
用linux自带的计划任务切割nginx日志,每天0点执行 #!/bin/bash #GuoYabin nginxpid=`/bin/ps aux|grep nginx |awk /master/'{ ...
- logrotate切割nginx日志
1 配置 使用系统自带的logrorate来切个nginx日志,位于/usr/sbin/logrotate 假设服务器上有两个网站的nginx配置分别如下: 去除其它配置信息,只保留了日志相关 A网站 ...
- 028_切割 Nginx 日志文件(防止单个文件过大,后期处理很困难)
mkdir /data/scriptsvim /data/scripts/nginx_log.sh #!/bin/bashlogs_path="/usr/local/nginx/logs/& ...
- Linux系统上面使用python切割nginx日志
#!/usr/bin/python import time import os import commands path = ['/var/log/nginx/', 'access.log'] (nu ...
随机推荐
- blob转string,同步调用
问题背景 通过接口下载文件的时候,后端设置的responseHeader content-disposition: attachment;filename=文件名.xlsx content-type: ...
- #Powerbi 利用EOMONTH,计算月度时间进度
在POWERBI中计算本月的时间进度 许多小伙伴在做看板时,往往会遇到需要时间进度的计算,来配合业绩达成的进度,进行比较分析.那么如何在BI做通过公式进行这个数据的求值呢? 首先,我们需要测算两个值, ...
- 2.OS-Virtualization|抽象:进程
进程:运行中的程序. 没有运行前,就是一个代码,他是静态的. 通过一系列抽象,有了状态. 通过进程抽象,我们需要明白计算机设计的一些思考点:如何分离?如何管理?如何抽象? 运行 就绪 阻塞 它就是一个 ...
- Django4全栈进阶之路21 项目实战(在线报修):创建App应用和Model模型
创建应用App python manage.py startapp RepairApp 创建模型 在models.py文件中定义一个Repair模型来表示报修单,其中包含以下字段: repair_id ...
- cnpm : 无法加载文件 D:\nodejs\node_global\cnpm.ps1,因为在此系统上禁止运行 脚本。
错误信息: cnpm : 无法加载文件 D:\nodejs\node_global\cnpm.ps1,因为在此系统上禁止运行 脚本.有关详细信息,请参阅 https:/go.microsoft.com ...
- vst实例(2) 创建VST
前面我们知道,创建一个虚拟树,应该首先告知VST节点数据的大小(即nodedatasize),其实在创建树结构时,这一点并不是必须的,而是如果你需要让VST的每一个节点能指向一定的数据,从而在执行树的 ...
- 2023-05-29:给你一个由 n 个正整数组成的数组 nums 你可以对数组的任意元素执行任意次数的两类操作 如果元素是 偶数 ,除以 2 例如,如果数组是 [1,2,3,4] 那么你可以对最后一
七.设计算法,仅使用三次实数乘法即可完成复数 a+bi和c+di 相乘.算法需接收a.b.c和d 为输入,分别生成实部 ac-bd 和虚部ad+bc. 文心一言: 可以使用如下算法来计算复数 a+bi ...
- 前端开发如何更好的避免样式冲突?级联层(CSS@layer)
作者:vivo 互联网前端团队 - Zhang Jiqi 本文主要讲述了CSS中的级联层(CSS@layer),讨论了级联以及级联层的创建.嵌套.排序和浏览器支持情况.级联层可以用于避免样式冲突,提高 ...
- R 语言 download.file 的几点知识
R 语言中,不管是安装包,还是下载数据,很多时候都会用到download.file这个函数.如果你在安装包或者下载数据过程中出现中断,或者异常,想要判断是远程源服务器的问题,还是自身服务器的问题,还是 ...
- 记一次 .NET 某旅行社审批系统 崩溃分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序跑着跑着就崩溃了,让我看下怎么回事,其实没怎么回事,抓它的 crash dump 就好,具体怎么抓也是被问到的一个高频问题,这里再补一下链接: ...