Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Logrotate 日誌輪轉完整配置指南:原理、參數、Nginx 實戰案例

編輯:關於 Linux

Logrotate 是 Linux 系統日誌管理的標準工具,透過 cron 定時執行,實現日誌切割、壓縮、保留、郵件通知、腳本觸發等自動化流程。本文深度解析運作原理、核心配置指令、/etc/logrotate.d 模組化管理、Nginx 實戰配置範例。

運作原理

  • 由 /etc/cron.daily/logrotate 每日觸發(預設 23:59)
  • 讀取主配置 /etc/logrotate.conf 與 /etc/logrotate.d/ 下所有檔案
  • 對符合條件的日誌檔案執行輪轉動作

核心配置指令速查

指令說明預設值
daily/weekly/monthly輪轉頻率weekly
rotate N保留輪轉份數4
create [mode] [owner] [group]輪轉後建立新檔案權限/擁有者—
dateext輪轉檔案後綴用日期格式 (如 -20240125)數字遞增 .1
compress輪轉檔案壓縮 (gzip)不壓縮
delaycompress延遲壓縮到下一次輪轉—
missingok日誌檔不存在不報錯—
notifempty空檔案不輪轉—
minsize N檔案大小超過 N 才輪轉—
size N檔案大小達 N 強制輪轉 (忽略時間)—
sharedscripts多檔案共用 prerotate/postrotate 腳本—
prerotate ... endscript輪轉前執行腳本—
postrotate ... endscript輪轉後執行腳本 (常用 reload 服務)—

主配置檔範例 /etc/logrotate.conf

weekly
rotate 4
create
dateext
compress
include /etc/logrotate.d

/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

模組化配置 /etc/logrotate.d/syslog 範例

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    prerotate
        /usr/bin/chattr -a /var/log/messages
    endscript
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2>/dev/null` 2>/dev/null || true
        /usr/bin/chattr +a /var/log/messages
    endscript
}

關鍵點:sharedscripts 確保多檔案僅觸發一次腳本;postrotate 發送 SIGHUP 讓 syslog 重新開啟日誌檔;chattr +a 保護日誌只能追加。

實戰案例:Nginx 日誌輪轉配置

建立 /etc/logrotate.d/nginx:

/usr/local/nginx/logs/*.log {
    daily                    # 每日輪轉
    rotate 5                 # 保留 5 份
    dateext                  # 日期後綴
    compress                 # 壓縮舊檔
    sharedscripts
    postrotate
        if [ -f /usr/local/nginx/logs/nginx.pid ]; then
            kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
        fi
    endscript
}

解析:Nginx 收到 SIGUSR1 會重新開啟日誌檔案,無需重啟服務,實現零停機輪轉。

除錯與驗證技巧

# 測試配置語法 (不實際執行)
logrotate -d /etc/logrotate.conf

# 強制執行一次 (忽略時間條件)
logrotate -f /etc/logrotate.conf

# 查看狀態檔
cat /var/lib/logrotate/status

最佳實踐建議

  1. 採用 /etc/logrotate.d/ 模組化管理,每服務一檔
  2. 統一啟用 dateext + compress,利於歸檔查詢
  3. 生產環境建議 rotate 30 以上,配合集中日誌系統
  4. postrotate 必須發送正確信號讓服務重開檔案描述符
  5. 重要日誌加入 mail root 異常通知
  6. 定期驗證 /var/lib/logrotate/status 確認輪轉正常

上一頁 1 2 3 下一頁 共 3 頁

Copyright © Windows教程網 All Rights Reserved