nginx日誌配置

2021-09-30 19:12:01 字數 3925 閱讀 3273

1. 配置錯誤日誌 error log

nginx 將遇到的不同嚴重級別問題的資訊寫入錯誤日誌。 error_log 指令設定對特定檔案,stderr 或 syslog 的日誌記錄,並指定要記錄的訊息的最低嚴重級別。 預設情況下,錯誤日誌位於 logs/error.log(絕對路徑取決於作業系統和安裝),並且預設記錄所有嚴重級別的訊息。 

下面的配置將記錄錯誤資訊的最低級別從 error 改為 warn:

error_log  logs/error.log warn;
此時,warn、error crit、alert 和 emerg 這幾種級別的訊息會寫入日誌。

錯誤日誌的預設設定在全域性範圍內有效。為了覆蓋這個設定,可以在主配置檔案的頂級上下文中使用 error_log 指令。主配置檔案的頂級上下文中的設定可以被其他的配置上下文繼承。error_log 還可以在 http、stream、server 和 location 上下文中制定,從而覆蓋上層上下文中的設定。發生錯誤時,相關資訊只會寫入和錯誤最相關的上下文指定的那個錯誤日誌。然而,如果在同乙個上下文中使用了多個 error_log 指令,錯誤資訊會寫入所有指定的日誌中。

2. 配置訪問日誌 access log

nginx 會在客戶端請求處理完成後,立刻把相關資訊寫入訪問日誌。預設情況下,訪問日誌位於 logs/access.log,並且資訊會以預定義的組合格式寫入日誌。要覆蓋預設設定,可以使用 log_format 指令更改日誌訊息的格式, access_log 指令指明日誌位置和格式。日誌格式用變數定義。

常見的日誌變數

記錄客戶端ip位址

$remote_user

記錄客戶端使用者名稱

$request

記錄請求的url和http協議(get,post,del,等)

$status

記錄請求狀態

$body_bytes_sent

傳送給客戶端的位元組數,不包括響應頭的大小; 該變數與apache模組mod_log_config裡的「%b」引數相容。

$bytes_sent

傳送給客戶端的總位元組數。

$connection

連線的序列號。

$connection_requests

當前通過乙個連線獲得的請求數量。

$msec

日誌寫入時間。單位為秒,精度是毫秒。

$pipe

如果請求是通過http流水線(pipelined)傳送,pipe值為「p」,否則為「.」。

記錄從哪個頁面鏈結訪問過來的

記錄客戶端瀏覽器相關資訊

$request_length

請求的長度(包括請求行,請求頭和請求正文)。

$request_time

請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第乙個位元組開始,直到把最後乙個字元傳送給客戶端後進行日誌寫入為止。

$time_iso8601 iso8601

標準格式下的本地時間。

$time_local

通用日誌格式下的本地時間。

log_format 定義日誌格式

語法格式:      log_format name [escape=default|json] string ...;

預設值 : log_format combined "...";

作用域 : http

例項

main格式

access_log  logs/access.log  main;json格式

log_format logstash_json '';

壓縮格式

}upstream格式

增加upstream消耗的時間。

}3. 啟用條件日誌記錄(conditional logging)

條件日誌記錄允許從訪問日誌中排除不重要日誌(trivial)或不重要的日誌條目(unimportant log entries)。 在 nginx 中,條件日誌記錄由 access_log 指令的 if 引數啟用。

下面的例子中,將 http 狀態碼為 2xx(成功)和 3xx(重定向)的請求排除:

map $status $loggable 

access_log /path/to/access.log combined if=$loggable;

4.open_log_file_cache設定日誌檔案快取

每一條日誌記錄的寫入都是先開啟檔案再寫入記錄,然後關閉日誌檔案。如果你的日誌檔案路徑中使用了變數,如access_log /var/logs/$host/nginx-access.log,為提高效能,可以使用open_log_file_cache指令設定日誌檔案描述符的快取。

語法open_log_file_cache max=n [inactive=time] [min_uses=n] [valid=time];

作用域:http、server、location。

基本用法

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
例子中,設定快取最多快取1000個日誌檔案描述符,20s內如果快取中的日誌檔案描述符至少被被訪問2次,才不會被快取關閉。每隔1分鐘檢查快取中的檔案描述符的檔名是否還存在。

5.日誌切割

nginx日誌預設情況下統統寫入到乙個檔案中,檔案會變的越來越大,非常不方便檢視分析。以日期來作為日誌的切割是比較好的,通常我們是以每日來做統計的。下面來說說nginx日誌切割。

切割nginx日誌,我們可以通過兩種不同的方式進行,分別是:通過logrotate和通過shell指令碼。

這裡介紹下使用shell指令碼方式進行切割日誌。

shell指令碼內容如下:

vi /usr/local/cut_del_logs.sh

#!/bin/bash

#初始化

logs_path=/var/log/nginx

yesterday=$(date -d "yesterday" +%y%m%d)

#按天切割日誌

mv $/access.log $/access_$.log

#向nginx主程序傳送usr1訊號,重新開啟日誌檔案,否則會繼續往mv後的檔案寫資料的。原因在於:linux系統中,核心是根據檔案描述符來找檔案的。如果不這樣操作導致日誌切割失敗。

kill -usr1 `ps axu | grep "nginx: master process" | grep -v grep | awk ''`

#刪除7天前的日誌

cd $

find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f

exit 0

Nginx日誌配置

一,日誌格式 http referer http user agent 此日誌格式為,ip不僅記錄 的ip還記錄遠端客戶端真實ip。remote addr與 http x forwarded for 用以記錄客戶端ip位址,乙個記錄 ip,乙個記錄真實ip remote user 用以記錄客戶端使用...

nginx 日誌配置

不同使用者防衛nginx會把每個使用者訪問往咱的日誌資訊記錄到指定的日誌檔案裡,供 管理員分析使用者瀏覽行為等,此功能又ngx http log module 模組負責。控制訪問日誌的引數引數 說明log format 通過不同的名稱來定義日誌的輸出格式,可以定義多個 access log 用來指定...

Nginx配置日誌

nginx配置日誌 通過錯誤日誌,你可以得到系統某個服務或server的效能瓶頸等 日誌生成的到根目錄logs access.log檔案,預設使用 main 日誌格式,也可以自定義格式 預設 main 日誌格式 remote addr 客戶端的ip位址 伺服器,顯示 服務ip remote user...