nginx配置logrotate 配置


1. logrotate工具的介紹

 

logrotate是一個linux系統日志的管理工具。可以對單個日志文件或者某個目錄下的文件按時間/大小進行切割,壓縮操作;指定日志保存數量;還可以在切割之后運行自定義命令。

logrotate是基於crontab運行的,所以這個時間點是由crontab控制的,具體可以查詢crontab的配置文件/etc/anacrontab。系統會按照計划的頻率運行logrotate,通常是每天。在大多數的Linux發行版本上,計划每天運行的腳本位於 /etc/cron.daily/logrotate。

主流Linux發行版上都默認安裝有logrotate包,如果你的linux系統中找不到logrotate, 可以使用apt-get或yum命令來安裝。

 

使用指令:rpm -ql logrotate

 

由下圖可知,logrotate的配置文件是 /etc/logrotate.conf, 這個文件用來定義全局默認參數。

 

 

 

 

 其中, /etc/logrotate.d/ 是用於存儲各種自定義應用的配置文件的目錄。該目錄里的所有文件都會被主動的讀入到 /etc/logrotate.conf中執行。該目錄下的應用配置文件繼承所有/etc/logrotate.conf 的默認參數。
因此我們可以新建一個針對nginx日志文件的輪循配置的文件,然后將這個文件放在 /etc/logrotate.d/ 目錄下, 它就會主動的讀入到/etc/logrotate.conf中執行, 以達到按指定頻率定時執行的需求。

 

2. 創建nginx日志分割文件 (路徑: /etc/logrotate.d/nginx )

/data/ai_photo/logs/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}

 

  • home/wwwlogs/*nginx.log 需要輪詢日志路徑
  • daily: 日志文件分割頻度。可選值為 daily,monthly,weekly,yearly
  • rotate 7: 一次將存儲7個歸檔日志。對於第8個歸檔,時間最久的歸檔將被刪除。
  • missingok: 在日志輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
  • dateext 使用日期作為命名格式
  • compress: 在輪循任務完成后,已輪循的歸檔將使用gzip進行壓縮。
  • nocompress: 如果你不希望對日志文件進行壓縮,設置這個參數即可
  • delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
  • notifempty: 如果日志文件為空,輪循不會進行。
  • sharedscripts 表示postrotate腳本在壓縮了日志之后只執行一次
  • create 644 www root: 以指定的權限創建全新的日志文件,同時logrotate也會重命名原始日志文件。
  • postrotate/endscript: 最通常的作用是讓應用重啟,以便切換到新的日志文件, 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。

 

執行壓縮命令:

sudo /usr/sbin/logrotate -vf  /etc/logrotate.d/nginx

 

3、添加定時任務

crontab  -e  #添加以下代碼
0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx  #每天凌晨定時執行腳本 需要放到root用戶下執行

 

 


免責聲明!

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



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