Nginx 日志分析
說明:
- 日志分析是運維人員在對系統(tǒng)及應用程序維護時的一個必要的也是最有效的工具之一,所以學習日志分析是做為一個運維人員的必要選擇,及掌握日志分析是作為一個運維人員的必要技能
- 在centons6以上的系統(tǒng)版本中,這種日志數(shù)據由系統(tǒng)服務rsyslog同一管理,根據其配置文件/etc/rsyslog.conf中的設置決定將內核消息及各種系統(tǒng)程序消息記錄到什么位置。
- 由于日志的重要性,所以syslog服務成為服務器五個必備服務成員之一。及network(網絡服務)、sshd(遠程連接服務)、crond(任務計劃服務)、sysstat(性能監(jiān)控服務)及syslog(日志服務)
Nginx日志內容具體分析:
在成功安裝nginx后,我們通過nginx的配置文件(nginx.conf),可以看到nginx日志的格式及存放位置。首先我們這里根據一條日志及配置文件中的日志格式來解讀下日志內容的具體含義

101.38.162.61 - - [27/Apr/2018:14:03:40 +0800] "POST /wp-admin/admin-ajax.php HTTP/1.1" 200 58 "http://39.105.23.127/wp-admin/widgets.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" "-"
Nginx的默認配置文件中,log_format即日志格式:
① $remote_addr 遠程連接地址,即請求者的ip(即101.38.162.61)如果有前端,則此處的ip是代理服務器的ip地址 ② $remote_user 遠程連接的用戶,此處為空白,因其是匿名的,即第二個- , 此處有兩個--,然而第一個-對應日志格式中的- ③ [$time_local] 服務器本地時間(即27/Apr/2018:14:03:40 +0800) ④ "$request" 請求的協(xié)議及方法及請求的目錄(即:用的HTTP1.1協(xié)議以post方法請求的/wp-admin/admin-ajax.php目錄) ⑤ $status 狀態(tài)碼,這里的狀態(tài)碼是200 ⑥ $body_bytes_sent 發(fā)送給客戶端的字節(jié)數(shù),不包括響應頭的大小,這里是58字節(jié) ⑦ $http_referer 告訴服務器該請求來自哪里 這里的請求來自http://39.105.23.127/wp-admin/widgets.php ⑧ $http_user_agent 瀏覽頁面的訪問者在用什么操作系統(tǒng)(包括版本號)瀏覽器(包括版本號)和用戶個人偏好的代碼 即對應得"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36". ⑨ $http_x_forwarded_for" 是一個 HTTP 擴展頭部,用來表示 HTTP 請求端真實 IP,這里為空,因為該架構沒有使用代理服務器,真實ip是$remote_addr,所以此處為空 ⑩ 注:此處是默認的日志格式,我們可以根據需要自行添加和刪減,例如$bytes_sent發(fā)送給客戶端的總字節(jié)數(shù);$connection_requests 當前通過一個連接獲得的請求數(shù)量; $request_time 請求處理時間,單位為秒; $request_length請求的長度等。
日志的用途:
我們可以利用AWK工具,結合日志文件中的條件過濾出我們需要ip
1、分析截止目前為止訪問量最高的ip排行 awk '{print $1}' host.access.log |sort |uniq -c|sort -nr |head -20
過濾出hos.access.log日志文件中訪問量前20的ip
sort 將文件進行排序,并將排序結果標準輸出 uniq -nr 去重并在右邊顯示重復出現(xiàn)的次數(shù) sort -nr -n依照大小來排序,-r倒序
2、找到當前日志中對應狀態(tài)碼的錯誤頁面來統(tǒng)計,比如502
awk '{print $0}' host.access.log |grep '502' |awk '{print $1,$7,$9}'
這里的 {print $0} |grep 502 是指從所有內容中過濾出帶有502的行,交給后面處理
3、在日常生產中難免會碰到cc攻擊。例如對服務器發(fā)送大量head請求,占用連接數(shù),導致服務器不能提供正常的訪問,我們可以通過對日志文件分析,參考方法1,過濾出異常ip請求,然后寫自動腳本,達到防火墻進行限制80端口訪問
4、當然也可以過濾出日志文件中其他的參考,比如請求的大小請求的連接數(shù)等,進步加強對網站架構的掌握,做到進步優(yōu)化

浙公網安備 33010602011771號