當前位置:
首頁 > 知識 > nginx access_log日誌簡介

nginx access_log日誌簡介

nginx 日誌主要有兩條指令:

1)log_format:用來設置日誌格式;

2)access_log:用來指定日誌文件的存放路徑、格式

log_format 日誌格式

1、語法:

log_format name(格式名字) 格式樣式(即想要得到什麼樣的日誌內容)

示例:

2、具體參數格式

3、x_forwarded_for:

通常web伺服器放在反向代理的後面,這樣就不能獲取到客戶的IP地址了,通過$remote_addr拿到的IP地址是反向代理伺服器的iP地址。反向代理伺服器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的伺服器地址。

註:在server中設置x_forwarded_for

access_log

用了log_format 指令設置了日誌格式之後,需要用access_log指令指定日誌文件的存放路徑;

1、語法:

access_log path(存放路徑) format (自定義日誌名稱)

示例:

2、設置刷盤策略:

buffer 滿 32k 才刷盤;假如 buffer 不滿 5s 鍾強制刷盤。

註:一般log_format在全局設置,可以設置多個。access_log 可以在全局設置,但往往是定義在虛擬主機(server)中的location中。

例如:

3、其他:

1)error_log:

配置錯誤日誌,例如上例。

2)open_log_file_cache:

對於每一條日誌記錄,都將是先打開文件,再寫入日誌,然後關閉。可以使用open_log_file_cache來設置日誌文件緩存(默認是off)。

語法:

參數注釋如下:

max:設置緩存中的最大文件描述符數量,如果緩存被佔滿,採用LRU演算法將描述符關閉。

inactive:設置存活時間,默認是10s

min_uses:設置在inactive時間段內,日誌文件最少使用多少次後,該日誌文件描述符記入緩存中,默認是1次

valid:設置檢查頻率,默認60s

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

3)日誌分析:

通過對日誌格式的定義,就可以使用常見的 Linux 命令行工具進行分析了:

查找訪問頻率最高的 URL 和次數:

查找當前日誌文件 500 錯誤的訪問:

查找當前日誌文件 500 錯誤的數量:

查找某一分鐘內 500 錯誤訪問的數量:

查找耗時超過 1s 的慢請求:

假如只想查看某些位:

查找 502 錯誤最多的 URL:

查找 200 空白頁

切割日誌

Nginx 的日誌都是寫在一個文件當中的,不會自動地進行切割,如果訪問量很大的話,將導致日誌文件容量非常大,不便於管理和造成Nginx 日誌寫入效率低下等問題。所以,往往需要要對access_log、error_log日誌進行切割。

切割日誌一般利用USR1信號讓nginx產生新的日誌。實例:

1、分析:

將上面的腳本放到crontab中,每小時執行一次(0 ),這樣每小時會把當前日誌重命名成一個新文件;然後發送USR1這個信號讓Nginx 重新生成一個新的日誌。(相當於備份日誌)將前7天的日誌刪除;

2、說明:

在沒有執行kill -USR1 $pid之前,即便已經對文件執行了mv命令而改變了文件名稱,nginx還是會向新命名的文件」*access.log.2016032623」照常寫入日誌數據的。原因在於:linux系統中,內核是根據文件描述符來找文件的。

3、logrotates:

使用系統自帶的logrotates,也可以實現nginx的日誌分割,查看其bash源碼,發現也是發送USR1這個信號。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux資訊速推 的精彩文章:

IBM超級計算機評美國科技產業最謹慎CEO 馬斯克登頂
Linux 預設命令行——Bash

TAG:Linux資訊速推 |