1.关于日志切割

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。

2.Linux 下一般自带logrotate工具

logrotate是一个linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间/大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。
logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。
日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,该目录里的所有文件都会被主动的读入到 /etc/logrotate.conf中执行

3.配置

vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/access.log {
daily 日志文件将按日轮循。其它可用值为‘monthly’,‘weekly’或者‘yearly’
dateext 后缀按照日期显示
rotate 5 保存5个归档,第六个就会删除
compress 在轮循任务完成后,已轮循的归档将使用gzip进行压缩
delaycompress 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok 在日志轮循期间,任何错误将被忽略
notifempty 如果日志文件为空,轮循不会进行
create 644 root staff 指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件
postrotate 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行
[ -e /usr/local/nginx/logs/nginx.pid ] && kill -USR1 cat /usr/local/nginx/logs/nginx.pid
endscript

image.png

4.验证执行

手动执行logrotate
logrotate -d /etc/logrotate.d/nginx

强制轮询切割日志
使用指令: logrotate -vf /etc/logrotate.d/nginx

4.1说明:logrotate可以在任何时候从命令行手动调用。
要调用为/etc/lograte.d/下配置的所有日志调用logrotate
image.png
4.2要为某个特定的配置调用logrotate:例如logrotate.d下的nginx

image.png

5.定制任务时间

使用时配合crontab定期执行logrotate命令,cron的主配置文件/etc/anacrontab中定义了crontab的默认执行规则,其中系统自带的每1天执行的cron计划配置文件放在/etc/cron.daily/目录下,在该目录下的logrotate文件内容如下:
image.png
该脚本每天定时执行一次,即系统默认的logrotate时间计划。如果想更改系统默认的logrotate时间计划,可以将该文件挪走,然后在crontab中指定自己的时间计划,如:
crontab -e
image.png
https://www.yuque.com/listenstar/ygqknt/nrrug6