nginx1.24配置logrotate日誌切割

abcderg1234567發表於2024-04-25

安裝 logrotate(如果尚未安裝):

yum install logrotate # CentOS/RHEL

配置 logrotate:
通常,logrotate 的配置檔案位於 /etc/logrotate.conf,並且可以包含指向其他配置檔案的引用。這些其他配置檔案通常位於 /etc/logrotate.d/ 目錄中。

建立 Nginx 的 logrotate 配置檔案:
vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 nginx root
sharedscripts
postrotate
/bin/kill -USR1 cat /run/nginx.pid 2>/dev/null || true
endscript
}

daily:表示每天進行日誌切割。
missingok:如果日誌檔案丟失,不會報錯。
rotate 7:保留7天的日誌,超出的舊日誌將被刪除。
compress:使用 gzip 壓縮舊日誌。
delaycompress:不立即壓縮當前日誌,等待下一次輪轉。
notifempty:如果日誌檔案為空,則不進行輪轉。
create 644 nginx root:建立新的日誌檔案,設定許可權和所有者。
sharedscripts:表示 postrotate 指令碼對所有匹配的日誌檔案只執行一次。
postrotate:執行的指令碼,這裡用於通知 Nginx 切換到新的日誌檔案

測試 logrotate 配置:
使用 logrotate -d /etc/logrotate.d/nginx 命令來測試配置檔案,而不實際執行輪轉。

手動執行 logrotate:
如果需要立即執行日誌切割,可以使用 logrotate -f /etc/logrotate.d/nginx。

日誌切割後的驗證:
檢查 Nginx 日誌目錄,確認日誌檔案已經被重新命名並壓縮,例如 access.log-20210405。

日誌切割的排錯:
如果在執行 logrotate 時遇到問題,檢查配置檔案的語法是否正確,確認是否有執行許可權,以及確認是否有必要的依賴工具(如 gzip)。

日誌切割的自動化:
logrotate 預設透過 cron 每日執行,不需要手動干預

相關文章