nginx日誌可用變量梳理
近期需要統計一下公司相關域名下的某些文件的下載速度,初步計劃打算聯繫專業頁面監測廠家,購買頁面監測服務,對相關頁面下載速度進行監控,這個需要花費成本,部署週期也比較長。後來扒拉一下nginx日誌方面的全局變量,發現nginx本身就能做到對域名下的文件下載響應時間、頁面大小、後端響應時間等進行記錄,我們只要把相關變量配置到日誌打印內容即可。
1.nginx日誌配置實例:
"log_format time '$time_local ,,$remote_addr,, $status ,,$body_bytes_sent,, $bytes_sent,, $request_length,, $request_time,, $upstream_addr ,,$upstream_response_time ,,$remote
_user ,, $request,, $http_accept_language ,,$http_user_agent ,, $http_host ,,$http_referer ,,$connection ,,$connection_requests,, $time_iso8601,, $msec,, $pipe,, $uri,, $request_filename,,
$scheme';"
2.打印日誌實例內容展示:
"
20/Mar/2014:17:36:21 ,, +0900 ,, 118.000.72.00 ,, 304 ,, 0 ,, 204 ,, 609 ,,0.000 ,,192.168.18.72:9080 ,,0.000 ,,- ,, GET /ja/xxx.js HTTP/1.1,, zh-CN,zh;q=0.8,en;q=0.6 ,,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36 ,, tzjs.ptmind.com ,,- ,,8614960 ,,1,, 2014-03-20T17:36:21+09:00,, 1395304581.680 ,, . ,, /ja/xxx.js ,,/usr/local//nginx/html/ja/xxx.js ,,http"
3.nginx日誌可用變量內容詳解
日誌變量 解釋 實例日誌內容
$time_local 通用日誌格式下的本地時間;(服務器時間)==>20/Mar/2014:17:36:21 +0900
$remote_addr 客戶端(用戶)IP地址。==>118.000.72.00
$status 請求狀態(狀態碼,200表示成功,404表示頁面不存在,301表示永久重定向等;==>304
$body_bytes_sent 發送給客戶端的字節數,不包括響應頭的大小; 該變量與Apache模塊mod_log_config裏的“%B”參數兼容;==>0
$bytes_sent 發送給客戶端的總字節數;==> 204
$request_length 請求的長度(包括請求行,請求頭和請求正文);==>609
$request_time 請求處理時間,單位爲秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最後一個字符發送給客戶端後進行日誌寫入爲止;==>0.001
$upstream_addr 集羣輪詢地址;==> 192.168.18.72:9080
$upstream_response_time 是指從Nginx向後端(php-cgi)建立連接開始到接受完數據然後關閉連接爲止的時間;==>0.001
$remote_user 用來記錄客戶端用戶名稱;==> 空值 -
$request 請求方式(GET或者POST等);==>GET /ja/xxx.js HTTP/1.1
$http_accept_language 用戶瀏覽器語言;==>zh-CN,zh;q=0.8,en;q=0.6
$http_user_agent用戶瀏覽器其他信息,瀏覽器版本、瀏覽器類型等;==>Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36
$http_host 請求的url地址(目標url地址)的host;==>tzjs.ptmind.com
$http_referer 來源頁面,即從哪個頁面轉到本頁,專業名稱叫做“referer”;==>直接訪問值爲空
$connection 接的序列號;==>8614960
$connection_requests 當前通過一個連接獲得的請求數量;==>1
$time_iso8601ISO8601 標準格式下的本地時間;==>2014-03-20T17:36:21+09:00
$msec 日誌寫入時間。單位爲秒,精度是毫秒;==>1395304581.680
$pipe 如果請求是通過HTTP流水線(pipelined)發送,pipe值爲“p”,否則爲“.”;==>.
$uri 請求中的當前URI(不帶請求參數,參數位於$args),不同於瀏覽器傳遞的$request_uri的值,它可以通過內部重定向,或者使用index指令進行修改。不包括協議和主機名,例如/foo/bar.html==> /ja/xxx.js
$request_filename 當前連接請求的文件路徑,由root或alias指令與URI請求生成。==>/usr/local//nginx/html/ja/xxx.js
$server_protocol |$scheme 請求使用的協議,通常是HTTP/1.0或HTTP/1.1。==>http
$geoip_country_code 用戶地理位置代碼(國家代碼)安裝國家地理代碼庫可用;
通過上面的參數介紹可以看出nginx可以輸出的內容還是比較豐富,具體怎麼使用?用在哪裏?仁者見仁智者見智!
原文鏈接:http://michaelkang.blog.51cto.com/1553154/1380853