本文檔主要介紹Nginx設(shè)置日志參數(shù)的作用,以及Nginx日志常用分析命令 基本大綱: 1.Nginx日志記錄格式的介紹 2.Nginx日志參數(shù)詳解 3.Web服務(wù)流量名詞介紹 4.Nginx日志常用分析命令示范 一:Nginx日志記錄格式的介紹 log_format用來設(shè)置日志的記錄格式: log_format name format name表示格式名稱,format表示等義的格式。log_format有一個默認(rèn)的無需設(shè)置的combined日志格式,相當(dāng)于apache的combined日志格式,如下所示: log_format combined '$remote_addr - $remote_user [$time_local] ' ' "$request" $status $body_bytes_sent ' ' "$http_referer" "$http_user_agent" '; 如果nginx位于負(fù)載均衡器,squid,nginx反向代理之后,web服務(wù)器無法直接獲取到客戶端真實的IP地址了。 $remote_addr獲取反向代理的IP地址。反向代理服務(wù)器在轉(zhuǎn)發(fā)請求的http頭信息中,可以增加X-Forwarded-For信息,用來記錄客戶端IP地址和客戶端請求的服務(wù)器地址。
下面是修改后,生產(chǎn)環(huán)境下代理服務(wù)器用的日志格式??梢愿鶕?jù)需要添加對應(yīng)的日志參數(shù) 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日志參數(shù)詳解 參數(shù)注釋如下: $remote_addr #與$http_x_forwarded_for 用以記錄客戶端的ip地址 $http_x_forwarded_for #當(dāng)前端有代理服務(wù)器時,設(shè)置web節(jié)點記錄客戶端地址的配置,此參數(shù)生效的前提是代理服務(wù)器也要進(jìn)行相關(guān)的http_x_forwarded_for設(shè)置 $remote_user #記錄客戶端用戶名稱,一般默認(rèn)為空 $time_local #記錄訪問時間 $request #記錄請求的URL和HTTP協(xié)議 $status #記錄請求狀態(tài) $body_bytes_sent #記錄發(fā)送給客戶端文件內(nèi)容大小 $http_referer #記錄從哪個頁面鏈接訪問過來的 $http_user_agent #記錄客戶端瀏覽器相關(guān)信息 $request_time #處理完請求所花時間,以秒為單位 $http_host #請求地址,即瀏覽器中你輸入的地址(IP或域名) $request_body #記錄POST數(shù)據(jù) $request_length #客戶端請求的長度 $upstream_status #upstream狀態(tài),成功是200 $upstream_addr #后臺upstream的地址,即真正提供服務(wù)的主機地址 $upstream_response_time #請求過程中,upstream響應(yīng)時間 三:Web服務(wù)流量名詞介紹 網(wǎng)站并發(fā)連接數(shù):定義為網(wǎng)站服務(wù)器在單位時間內(nèi)能夠處理的最大連接數(shù)。示例:某網(wǎng)站的并發(fā)是5000.意味著單位時間內(nèi)(理解為1秒或數(shù)秒內(nèi)),正在處理的連接數(shù),正在建立的連接數(shù),加起來一共是5000個。 IP:即Internet Protocol,一般指獨立IP數(shù),獨立IP數(shù)是指不同IP地址的計算機訪問網(wǎng)站時被計的總次數(shù)。一般一天00:00-24:00內(nèi)相同IP地址只被計算一次。 PV:即Page View,中文翻譯為頁面瀏覽,即頁面瀏覽量或點擊量,不管客戶端是否相同,也不管IP和網(wǎng)站頁面是否相同,用戶只要訪問網(wǎng)站頁面就會計算PV,一次計為一個PV UV:即Unique Visitor,同一個客戶端(PC或移動端)訪問網(wǎng)站被計為一個訪客。一天(00:00-24:00)內(nèi)相同的客戶端訪問同一個網(wǎng)站只統(tǒng)計一次UV。UV一般是以客戶端Cookie等技術(shù)作為統(tǒng)計依據(jù)的,實際統(tǒng)計會有誤差。 IP,PV,UV的區(qū)別在哪? 舉例說明:假設(shè)某個公司有10個員工,都訪問了www.taobao.com這個網(wǎng)站。每個人平均瀏覽了5個頁面,但是公司的對外出口是一個公網(wǎng)IP。所以對于www.taobao.com這個網(wǎng)站而言,只會計算1個獨立IP訪問。但是因為有10個人在訪問www.taobao.com這個網(wǎng)站,并且平均都訪問了5次,因此,對于www.taobao.com這個網(wǎng)站而言,PV數(shù)就是10x5=50個PV,而因為有10個人訪問,就是10個不同的客戶端訪問,因此,UV(獨立訪客)為10. 因此上例結(jié)果為IP數(shù)為1個,PV數(shù)為50個,UV為10個。通過這個結(jié)果,不難看出,一個網(wǎng)站的獨立IP數(shù)量要比網(wǎng)站實際訪問的PV數(shù)量小得多。通常情況下,網(wǎng)站的UV數(shù)也會大于獨立IP數(shù)
四:Nginx日志常用分析命令示范(注:日志的格式不同,awk取的項不同。下面命令針對上面日志格式執(zhí)行) 1)總請求數(shù) wc -l access.log |awk '{print $1}' 2)獨立IP數(shù) awk '{print $1}' access.log|sort |uniq |wc -l 3)每秒客戶端請求數(shù) 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)響應(yīng)大于5秒的URL TOP5 awk '{if ($7 > 5){print $6}}' access.log|sort|uniq -c|sort -rn |head -5 7)HTTP狀態(tài)碼(非200)統(tǒng)計 Top5 awk '{if ($11 != 200){print $11}}' access.log|sort|uniq -c|sort -rn|head -5 8)分析請求數(shù)大于50000的源IP cat access.log|awk '{print $NF}'|sort |uniq -c |sort -nr|awk '{if ($1 >50000){print $2}}' |
|