Nginx日誌分析和參數詳解

本文檔主要介紹Nginx設置日誌參數的做用,以及Nginx日誌經常使用分析命令前端


基本大綱:
nginx

  1.Nginx日誌記錄格式的介紹web

  2.Nginx日誌參數詳解
apache

  3.Web服務流量名詞介紹瀏覽器

  4.Nginx日誌經常使用分析命令示範服務器




一:Nginx日誌記錄格式的介紹
併發


log_format用來設置日誌的記錄格式:
負載均衡

log_format name formatide

name表示格式名稱,format表示等義的格式。log_format有一個默認的無需設置的combined日誌格式,至關於apache的combined日誌格式,以下所示:網站

log_format  combined  '$remote_addr - $remote_user  [$time_local]  '

                                   ' "$request"  $status  $body_bytes_sent  '

                                   ' "$http_referer"  "$http_user_agent" ';

若是nginx位於負載均衡器,squid,nginx反向代理以後,web服務器沒法直接獲取到客戶端真實的IP地址了。  $remote_addr獲取反向代理的IP地址。反向代理服務器在轉發請求的http頭信息中,能夠增長X-Forwarded-For信息,用來記錄客戶端IP地址和客戶端請求的服務器地址。

 

下面是修改後,生產環境下代理服務器用的日誌格式。能夠根據須要添加對應的日誌參數

log_format  main  '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; '

                      '$status $body_bytes_sent "$http_referer" - $request_body'

                      '"$http_user_agent" "$http_x_forwarded_for"';




二:Nginx日誌參數詳解


參數註釋以下:


$remote_addr   #與$http_x_forwarded_for 用以記錄客戶端的ip地址


$http_x_forwarded_for   #當前端有代理服務器時,設置web節點記錄客戶端地址的配置,此參數生效的前提是代理服務器也要進行相關的http_x_forwarded_for設置


$remote_user   #記錄客戶端用戶名稱,通常默認爲空


$time_local   #記錄訪問時間


$request   #記錄請求的URL和HTTP協議


$status   #記錄請求狀態


$body_bytes_sent   #記錄發送給客戶端文件內容大小


$http_referer   #記錄從哪一個頁面連接訪問過來的


$http_user_agent   #記錄客戶端瀏覽器相關信息


$request_time   #處理完請求所花時間,以秒爲單位 


$http_host   #請求地址,即瀏覽器中你輸入的地址(IP或域名)


$request_body   #記錄POST數據


$request_length   #客戶端請求的長度


$upstream_status   #upstream狀態,成功是200


$upstream_addr  #後臺upstream的地址,即真正提供服務的主機地址


$upstream_response_time    #請求過程當中,upstream響應時間




三:Web服務流量名詞介紹


網站併發鏈接數:定義爲網站服務器在單位時間內可以處理的最大鏈接數。示例:某網站的併發是5000.意味着單位時間內(理解爲1秒或數秒內),正在處理的鏈接數,正在創建的鏈接數,加起來一共是5000個。


IP:即Internet Protocol,通常指獨立IP數,獨立IP數是指不一樣IP地址的計算機訪問網站時被計的總次數。通常一天00:00-24:00內相同IP地址只被計算一次。


PV:即Page View,中文翻譯爲頁面瀏覽,即頁面瀏覽量或點擊量,無論客戶端是否相同,也無論IP和網站頁面是否相同,用戶只要訪問網站頁面就會計算PV,一次計爲一個PV


UV:即Unique Visitor,同一個客戶端(PC或移動端)訪問網站被計爲一個訪客。一天(00:00-24:00)內相同的客戶端訪問同一個網站只統計一次UV。UV通常是以客戶端Cookie等技術做爲統計依據的,實際統計會有偏差。


IP,PV,UV的區別在哪?

  舉例說明:假設某個公司有10個員工,都訪問了www.taobao.com這個網站。每一個人平均瀏覽了5個頁面,可是公司的對外出口是一個公網IP。因此對於www.taobao.com這個網站而言,只會計算1個獨立IP訪問。可是由於有10我的在訪問www.taobao.com這個網站,而且平均都訪問了5次,所以,對於www.taobao.com這個網站而言,PV數就是10x5=50個PV,而由於有10我的訪問,就是10個不一樣的客戶端訪問,所以,UV(獨立訪客)爲10.   

  所以上例結果爲IP數爲1個,PV數爲50個,UV爲10個。經過這個結果,不難看出,一個網站的獨立IP數量要比網站實際訪問的PV數量小得多。一般狀況下,網站的UV數也會大於獨立IP數

                                                                                                                                                             



四:Nginx日誌經常使用分析命令示範(注:日誌的格式不一樣,awk取的項不一樣。下面命令針對上面日誌格式執行)


1)總請求數

wc -l  access.log |awk '{print $1}'


2)獨立IP數

awk '{print $1}' access.log|sort |uniq |wc -l


3)每秒客戶端請求數 TOP5

awk '{print $6}' access.log|sort|uniq -c|sort -rn|head -5


4)訪問最頻繁IP Top5

awk '{print $1}' access.log|sort |uniq -c |sort -nr |head -5


5)訪問最頻繁的URL TOP5

awk '{print $7}' access.log|sort |uniq -c |sort -nr |head -5


6)響應大於5秒的URL TOP5

awk '{if ($7 > 5){print $6}}' access.log|sort|uniq -c|sort -rn |head -5


7)HTTP狀態碼(非200)統計 Top5

awk '{if ($11 != 200){print $11}}' access.log|sort|uniq -c|sort -rn|head -5


8)分析請求數大於50000的源IP

cat access.log|awk '{print $NF}'|sort |uniq -c |sort -nr|awk '{if ($1 >50000){print $2}}'

相關文章
相關標籤/搜索