Linux日志切割logrotate服務配置


一、logrotate介紹

  logrotate軟件是一個日志管理工具,用於非分隔日志,刪除舊的日志文件,並創建新的日志文件,起到“轉儲作用”,可以為系統節省磁盤空間。一般centos系統已經自帶安裝好了。

  logrotate是基於crontab運行的,其腳本是/etc/cron.daily/logtotate,日志輪轉是系統自發完成的,實際運行時,logrotate會調用配置文件/etc/logrotate.conf。可以在/etc/logrotate.d目錄里放置自定義好的配置文件,用來覆蓋logrotate.conf的缺省值。

二、logrotate配置文件

2.1 logrotate默認配置文件

 [root@linux-node1 ~]# grep -v '^#' /etc/logrotate.conf 
  weekly                       #默認每周執行一次日志輪詢
  rotate 4                     #默認保留4個日志文件
  create                       #自動創建新的日志文件,新的文件和原來的文件具有相同的權限
  dateext                      #日志切割后,文件以當前日志為結尾,例如:messages-20181125
  include /etc/logrotate.d     #將/etc/logrotate.d目錄中的配置文件加載進來

  /var/log/wtmp {              #針對wtmp日志的配置參數
      monthly                  #每月切割一次
      create 0664 root utmp    #新建日志的權限為0644,屬主為root,屬組為utmp
      minsize 1M               #文件大小超過1M后才會切割
      rotate 1                 #只保留1個日志文件
  }

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

2.2 logrotate常用參數

配置參數                     功能說明
compress                    #通過gzip,壓縮轉儲以后的日志
nocompress                   #不需要壓縮時,用這個參數
copytruncate                 #用於還在打開中的日志文件,把當前日志備份並截斷
nocopytruncate               #備份日志文件但是不截斷
create mode owner group     #轉儲文件,使用指定的文件模式創建新的日志文件
nocreate                    #不建立新的日志文件
delaycompress 和 compress   #一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
nodelaycompress             #覆蓋delaycompress 選項,轉儲同時壓縮。
errors address              #專儲時的錯誤信息發送到指定的Email 地址
ifempty                     #即使是空文件也轉儲,這個是 logrotate 的缺省選項。
notifempty                  #如果是空文件的話,不轉儲
mail address                #把轉儲的日志文件發送到指定的E-mail 地址
nomail                      #轉儲時不發送日志文件
olddir directory            #轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
noolddir                    #轉儲后的日志文件和當前日志文件放在同一個目錄下
prerotate/endscript         #在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript        #在轉儲以后需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
daily                       #指定轉儲周期為每天
weekly                      #指定轉儲周期為每周
monthly                     #指定轉儲周期為每月
rotate count                #指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
size(或minsize)             #size當日志文件到達指定的大小時才轉儲,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

2.3 nginx日志文件的切割

 [root@linux-node1 ~]# cat /etc/logrotate.d/nginx 
  /var/log/nginx/*.log {     #日志文件的路徑
        daily                #每天切割
dateext #日志切割后,文件以當前日志為結尾,例如:access-logs-20181125
missingok #日志不存在分析,分析下一個 rotate 30 #日志保留30份 compress #轉存之后壓縮.tar.gz delaycompress #日志壓縮會被延后到下次分割時進行 notifempty #空文件不轉儲 create 644 nginx adm #新日志文件權限 sharedscripts #整個日志組運行一次腳本 postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` #重啟nginx,重新加載日志文件,防止日志無法寫入新文件 endscript #結束腳本 }
[root@linux-node1 ~]# logrotate -d /etc/logrotate.d/nginx #進行日志切割測試
[root@linux-node1 ~]# cat /etc/anacrontab #生效時間是在凌晨3點到22點之間,而且隨機延遲時間是45分鍾
# /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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM