分析nginx中access.log日志統計狀態為500


發現系統存在的問題

我們可以使用下面的命令行,統計服務器返回的狀態碼,發現系統可能存在的問題。

 awk '{print $9}' access.log | sort | uniq -c | sort

正常情況下,狀態碼 200 或 30x 應該是出現次數最多的。40x 一般表示客戶端訪問問題。50x 一般表示服務器端問題。

下面是一些常見的狀態碼:

  • 200 - 請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
  • 206 - 服務器已經成功處理了部分 GET 請求
  • 301 - 被請求的資源已永久移動到新位置
  • 302 - 請求的資源現在臨時從不同的 URI 響應請求
  • 400 - 錯誤的請求。當前請求無法被服務器理解
  • 401 - 請求未授權,當前請求需要用戶驗證。
  • 403 - 禁止訪問。服務器已經理解請求,但是拒絕執行它。
  • 404 - 文件不存在,資源在服務器上未被發現。
  • 500 - 服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。
  • 503 - 由於臨時的服務器維護或者過載,服務器當前無法處理請求。

HTTP 協議狀態碼定義可以參閱:Hypertext Transfer Protocol -- HTTP/1.1

有關狀態碼的 awk 命令示例:

1. 查找並顯示所有狀態碼為 404 的請求

 awk '($9 ~ /404/)' access.log

2. 統計所有狀態碼為 404 的請求

 awk '($9 ~ /404/)' access.log | awk '{print $9,$7}' | sort

現在我們假設某個請求 ( 例如 : URI: /path/to/notfound ) 產生了大量的 404 錯誤,我們可以通過下面的命令找到這個請求是來自於哪一個引用頁,和來自於什么瀏覽器。

 awk -F\" '($2 ~ "^GET /path/to/notfound "){print $4,$6}' access.log


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM