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