文章目录
1 介绍
在做大数据分析的时候,需要收集nginx日志,常用json格式,默认nginx日志不方便处理
参数
变量 | 描述 | demo |
---|---|---|
$remote_addr | 客户端的ip地址 | |
$remote_user | 客户端用户名称,一般默认为空 | |
$status | HTTP请求状态 | ‘404’页面找不到 ‘200’成功 |
$time_local | 记录访问时间和时区 | 日期格式:20/Feb/2022:18:15:10 +0800 |
$time_iso8601 | 记录访问时间和时区 | 2022-05-20T14:15:18+08:00 |
$request | 用于记录请求的url以及请求方法 | “GET /free.php?proxy=in_tp HTTP/1.1” |
$request_method | 用于记录请求的url以及请求方法 | GET、POST |
$args | 请求中的参数值 | |
$request_body | 客户端的请求主体,此变量可以在location中使用,将请求主体通过proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass传递给下一级的代理 | |
$request_length | 请求的长度(包括请求的地址,http请求头和请求主体) | |
$request_time | 整个请求的总时间,从接收用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间,程序响应时间,输出响应数据时间 | |
$http_host | ||
$http_x_forwarded_for | ||
$http_true_client_ip | 客户端的真实ip地址 | |
$http_referer | url跳转来源,用来记录从哪个页面链接访问过来的 | |
$http_user_agent | 用户所使用的代理 | 一般为浏览器 |
$http_accept_language | 用户浏览器语言 | es-ES,es;q=0.8 |
$upstream_status | upstream状态 | 例如 200 |
$upstream_addr | 后台提供服务的地址(即转发处理的目标地址) | |
$upstream_response_time | 从nginx向后端建立连接开始到接受完数据然后关闭连接为止的时间 | |
$bytes_sent | 传输给客户端的全部字节数,包含响应头等信息 | |
$body_bytes_sent | 给客户端发送的文件主题内容字节数,响应头不计算在内 | |
$ssl_protocol | SSL协议版本 | TLSv1、TLSv2 |
$ssl_cipher | SSL协议的交换数据中的算法 | RC4-SHA,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384 |
$uri | 请求中的当前URI(不带请求参数,参数位于$args) | |
$geoip_country_code | 用户地理位置代码(国家代码) | |
2 修改nginx配置
nginx.conf
http {
include mime.types;
default_type application/octet-stream;
# 原有日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $request_time';
# json日志格式
log_format log_json '{"@timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"up_resp_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';
access_log logs/access.log log_json; # 引用日志格式名称
...
3 启动
删除原来的 access.log
重新启动nginx
/usr/local/nginx/sbin/nginx -s reload