Linux
Web 伺服器日誌歸檔的最佳實踐(Linux + Nginx)
我想保留/歸檔我所有的 Web 伺服器日誌,並且不讓它們被 logrotate 刪除。推薦的方法是什麼?這是一個 Linux 機器,執行 Nginx。提前致謝。
(我更喜歡使用 cronolog,但由於 Nginx 處理日誌記錄的方式,它似乎與 Nginx 不兼容。)
用 logrotate 來做,告訴它你想要什麼……
/var/log/nginx/*.log { daily dateext missingok rotate 7305 # 2 decades olddir /var/log/nginx/old compress delaycompress notifempty create 644 nginx root sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }
我不使用 nginx,所以我使用了我為 postrotate 找到的範例……如果您已經有 logrotate 腳本,請從修改它開始。
關鍵部位:
- “每天”是指每一天。您可以每週或基於大小進行,但這與“dateext”的互動效果不那麼好。
- “dateext”意味著它將根據日期而不是簡單的數字為旋轉的日誌文件命名;這樣就不必每天重命名每個日誌文件*,*您可以從文件名中判斷日誌文件的日期
- “旋轉 7305”——這是兩個十年。或多或少地保持… logrotate 確實更喜歡某種退休,但您可以將其設置得高得離譜。
- “olddir”必須在同一個文件系統上,但這會將日誌保存在一個單獨的目錄中,這樣你就可以弄清楚發生了什麼
- “delaycompress”和“create”有助於確保它與不想使用它的軟體一起使用