利用Nginx日志排查服務器故障是高效的運維手段,能幫助你洞察服務器運行狀態、精準定位問題并實施優化。本文將介紹幾種常見的Nginx日志類型及故障排查方法。
1. 訪問日志 (access log)
關鍵字段:
- $remote_addr:客戶端IP地址
- $http_user_agent:客戶端User-Agent字符串
- $http_referer:請求來源頁面
- $status:http狀態碼
- $body_bytes_sent:發送給客戶端的響應體字節數
- $request_time:請求處理時間
排查步驟:
-
識別4xx和5xx錯誤: 查找狀態碼為4xx(客戶端錯誤)和5xx(服務器錯誤)的請求,分析錯誤信息和請求路徑。
grep ' [45][0-9]{2} ' /var/log/nginx/access.log
-
分析訪問模式: 使用awk或grep分析訪問量、訪問頻率及熱門頁面。
awk '{print $7}' /var/log/nginx/access.log | cut -d'/' -f3 | sort | uniq -c | sort -nr
-
檢測慢請求: 基于$request_time字段,找出處理時間過長的請求。
awk '$4 > 1' /var/log/nginx/access.log
2. 錯誤日志 (Error log)
錯誤日志記錄了Nginx運行過程中的錯誤信息。
關鍵字段:
- $time_local:本地時間
- $remote_addr:客戶端IP地址
- $request:請求行
- $status:HTTP狀態碼
- $body_bytes_sent:發送給客戶端的響應體字節數
- $http_user_agent:客戶端User-Agent字符串
排查步驟:
-
查看最新錯誤: 查看錯誤日志中最近的錯誤信息,了解錯誤原因。
tail -n 100 /var/log/nginx/error.log
-
分析錯誤類型: 使用grep查找特定類型的錯誤(例如配置錯誤、權限問題)。
grep 'permission denied' /var/log/nginx/error.log
3. 自定義日志
Nginx支持自定義日志格式,以便更精細地記錄特定信息。
排查步驟:
-
配置自定義日志: 在Nginx配置文件中配置自定義日志格式。
http { log_format custom '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access_custom.log custom; }
-
查看自定義日志: 查看自定義日志文件,獲取更詳細的信息。
tail -n 100 /var/log/nginx/access_custom.log
總結
通過分析Nginx訪問日志和錯誤日志,可以有效地進行故障排查,了解服務器運行狀況,并采取相應的優化措施。 記得定期檢查和清理日志文件,避免占用過多磁盤空間。