首页 > 系统相关 >Linux 系统 logroate日志管理

Linux 系统 logroate日志管理

时间:2022-11-02 09:47:47浏览次数:49  
标签:nginx Linux etc logrotate usr 轮替 日志 logroate

1.简介

Logrotate是基于CRON来运行的,其脚本是「/etc/cron.daily/logrotate」

#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

实际运行时,Logrotate会调用配置文件「/etc/logrotate.conf」

weekly
rotate 4
create
dateext
compress
include /etc/logrotate.d
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

2.日志切割

2.1.Nginx

/usr/local/openresty/nginx/logs/*.log {
  daily
  rotate 5
  missingok
  dateext
  compress
  notifempty
  sharedscripts
  postrotate
    [ -e /usr/local/openresty/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/openresty/nginx/logs/ngi
nx.pid`
  endscript
}

测试并验证是否正常

logrotate -f /etc/logrotate.d/nginx
logrotate -d -f /etc/logrotate.d/nginx

2.2.kong

/usr/local/kong/logs/*.log {
    daily
    rotate 5
    missingok
    dateext
    compress
    notifempty
    sharedscripts
    postrotate
        [ -e /usr/local/kong/pids/nginx.pid ] && kill -USR1 `cat /usr/local/kong/pids/nginx.pid`
    endscript
}

2.3.java 日志

/usr/local/datax-web/log/*.log {
    daily
    rotate 7
    missingok
    dateext
    compress
    notifempty
    copytruncate
}

3.原理说明

3.1.sharedscripts

haredscripts的作用是在所有的日志文件都轮转完毕后统一执行一次脚本(匹配*通配符)。如果没有配置这条指令,那么每个日志文件轮转完毕后都会执行一次脚本。

3.2.日志时间

Logrotate是基于CRON运行的,所以这个时间是由anacrontab控制的(CentOS 6是crontab),具体可以查询CRON的配置文件「/etc/crontab」,可以手动改成如23:59等时间
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

 

3.3.功能说明

参数

说明

compress

启用压缩,指的是轮替后的旧日志,默认用的是gzip压缩

daily

每天轮替

dateext

使用当期日期作为命名格式

dateformat .%s

 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数

ifempty

即使日志文件是空的也轮替

mail

将轮替后的文件发送到指定E-mail地址

copytruncate

用于还在打开中的日志文件,把当前日志备份并截断,是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。

monthly

一个月轮替一次

nocompress

如果在logrotate.conf中启用了压缩,这里是做不用压缩的参数

nomail

不发送邮件到任何地址

notifempty

如果日志是空的就不轮替(也就是空日志不切割)

olddir + 目录

轮替后日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

rotate +次数

轮替最多保留之前的数据几次,超出的将被删除或邮件接收,设为0则不保存

size size

当日志增长到指定大小的时候开始轮替

weekly

如果当前的星期几比上次轮替的星期几少,或者过了一个多星期,就会发生轮替通常是在每周的第一天轮替,如果logrotate不是每天运行的,会在第一次有机会时进行轮替

yearly

如果当前年份不同于上次轮替的年份,则进行日志轮替

Missingok

如果日志丢失,不报错继续滚动下一个日志

标签:nginx,Linux,etc,logrotate,usr,轮替,日志,logroate
From: https://www.cnblogs.com/waringid/p/16849968.html

相关文章

  • linux下使用mysql
    linux下使用mysql1.登录mysqlMySQL-uroot-p123456#-u后面跟的是用户名-p后面跟的是密码2.查看所有数据库showdatabases;3.......
  • nacos 在linux上常用指令
    /usr/local/nacos/nacos/bin这只是我自己服务器的nacos的bin路基1.启动到nacos/bin目录下执行一下命令:shstartup.sh#集群启动shstartup.......
  • 情绪日志-2022-11
    1101咨询话题专注于情绪的对话交流,让我社交的压力小很多不太将自己的注意力放在别人的身上,不再过多的关注别人的得失,没有较重的比较心理独处的能力有所提升,安静看书学......
  • Linux自动安装Nginx
    Nginx(发音同“engineX”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。该软件由俄罗斯程序员伊戈尔·赛索耶夫(ИгорьСысоев)开发并于......
  • 记录一次实验室linux系统的GPU服务器死机排查过程——某显卡满负荷导致内核进程超时导
    在自己没有管理多台高负荷的ubuntu显卡服务器之前,我是万万想不到linux服务器居然也是如此容易死机的。什么每个版本的TensorFlow调用显卡驱动时和内核不兼容,什么系统自动......
  • Git & Linux
    Git资源下载技巧:所有需要外网下载的资源可以去找对应的国内镜像进行下载。基本Linux命令学习cd改变目录cd..回退上一级cd进入默认目录pwd显示当前目录路径......
  • Linux第七节课
    shell脚本:学习SHELL脚本,三要素是脚本声明,脚本注释,以及脚本的命令等,脚本的声明一般是#!/bin/bash的写法,而注释则因内容而异,也可不写,命令的写法就比较多了,常需要看是用于做什......
  • Linux系统的Power States
    实验室的ubuntu服务器不知怎么的突然又崩溃了,死机重启,然后查看日志,发现了下面的情况:    由于从其他的日志中知道是显卡的问题引起的死机,而这个显卡的地址正好是D......
  • Linux命令
    #linus/终端的常用快捷键【ll】显示当前目录的所有文件【详】【ls】显示当前目录的所有文件【略】【ls/路径】显示该路径下的所有文件【cd..】进入上级目录【./】......
  • linux系统基础命令
    ls命令:/:根目录,linux系统只有一个跟目录ls-a:显示出隐藏的内容,以.开头的文件默认默认被隐藏,需要-a才能显示出来ls-l以列表的形式将内容显示出来ls-h可以与-l搭配使用,......