nginx日誌切割實踐

2021-10-05 14:22:37 字數 1536 閱讀 4134

1、access.log 記錄了哪些使用者、哪些頁面以及使用者瀏覽器、ip和其他的訪問資訊;

2、error.log 則是記錄伺服器錯誤日誌.

通常服務如果開啟access日誌,通常再訪問量大的時候日誌記錄會很大,時間長了導致伺服器磁碟爆滿

下面配置nginx使用logtorate工具實現日誌切割:

logrotate是基於crontab執行的,所以這個時間點是由crontab控制的,具體可以查詢crontab的配置檔案/etc/anacrontab。系統會按照計畫的頻率執行logrotate,通常是每天。在大多數的linux發行版本上,計畫每天執行的指令碼位於 /etc/cron.daily/logrotate。

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

cat /etc/logrotate.d/nginx  

/data/logs/nginx/access.log

/data/logs/nginx/access.log 需要輪詢日誌路徑

daily: 日誌檔案分割頻度。可選值為 daily,monthly,weekly,yearly

rotate 20: 一次將儲存7個歸檔日誌。對於第8個歸檔,時間最久的歸檔將被刪除。

missingok: 在日誌輪循期間,任何錯誤將被忽略,例如「檔案無法找到」之類的錯誤。

dateext 使用日期作為命名格式

compress: 在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。

nocompress: 如果你不希望對日誌檔案進行壓縮,設定這個引數即可

delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循週期進行。這在你或任何軟體仍然需要讀取最新歸檔時很有用。

notifempty: 如果日誌檔案為空,輪循不會進行。

sharedscripts 表示postrotate指令碼在壓縮了日誌之後只執行一次

create 644 www root: 以指定的許可權建立全新的日誌檔案,同時logrotate也會重新命名原始日誌檔案。

postrotate/endscript: 最通常的作用是讓應用重啟,以便切換到新的日誌檔案, 在所有其它指令完成後,postrotate和endscript裡面指定的命令將被執行。在這種情況下,rsyslogd 程序將立即再次讀取其配置並繼續執行。

使用指令: logrotate /etc/logrotate.d/nginx

使用指令: logrotate -d /etc/logrotate.d/nginx

測試日誌切割 (如果檔案的時間小於一天,不會執行切割日誌 )

使用指令:  logrotate -vf /etc/logrotate.d/nginx

強制輪詢切割日誌 ( 為了便於我們直觀的觀察測試結果,建議手動試一下 )

至此:使用logrotate配置的nginx日誌切割功能已經實現了,等待第二天觀察是否有日誌切割出來,第三天日誌是否有日誌會被gzip壓縮

nginx日誌切割

web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...

nginx 日誌切割

直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...

Nginx日誌切割

編輯指令碼tianshl tianshl nginx vim nginx log division.sh指令碼內容 bin sh 昨天日期 yesterday date v 1d y m d 日誌目錄 log path usr local var log nginx sdk日誌路徑 sdk path...