date: 2020-03-31title: nginx日志配置json格式 #标题
tags: nginx日志配置json格式 #标签
categories: nginx # 分类
很多朋友都是以文本的方式来记录日志,然后在logstash上通过filter中的grok模块来处理为json格式的。
这里我写下另一种方式,在nginx记录日志时就变成json的格式,方便ElasticSearch对其检索。
nginx日志格式配置如下:
[root@nginx logs]# cat ../conf/nginx.conf # 查看配置文件
log_format log_json '{"@timestamp":"$time_local",'
'"host": "$server_addr",'
'"clientip": "$remote_addr",'
'"size": $body_bytes_sent,'
'"responsetime": $request_time,'
'"upstreamtime": "$upstream_response_time",'
'"upstreamhost": "$upstream_addr",'
'"http_host": "$host",'
'"url": "$uri",'
'"xff": "$http_x_forwarded_for",'
'"referer": "$http_referer",'
'"agent": "$http_user_agent",'
'"status": "$status"}';
access_log logs/access.log log_json;
上述调用的都是nginx内置变量,关于这些变量的含义,可以参考博文:nginx内置预定义变量
记录的日志如下:
{"@timestamp":"31/Mar/2020:12:10:23 +0800","host": "192.168.20.2","clientip": "192.168.20.88","size": 82896,"responsetime": 0.006,"upstreamtime": "0.006","upstreamhost": "192.168.20.3:80","http_host": "192.168.20.2","url": "/img/header-background.png","xff": "-","referer": "http://192.168.20.2/","agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36","status": "200"}