nginx日志中$request_body 十六进制字符(\x22) 引号问题处理
最近使用filebeat
收集nginx json
格式日志,发现很多十六进制字符(\x22)的转换,因为需要通过logstash
做清洗处理,但是读取json消息提示json格式错误,无法进行分析。
解决方式:
nginx版本需大于1.11.8
,在定义 log 格式时,加上 escape=json
log_format nginx_logs escape=json
'{"@timestamp":"$time_iso8601",'
'"host":"$hostname",'
'"server_ip":"$server_addr",'
'"client_ip":"$remote_addr",'
'"xff":"$http_x_forwarded_for",'
'"domain":"$host",'
'"url":"$uri",'
'"referer":"$http_referer",'
'"args":"$args",'
'"upstreamtime":"$upstream_response_time",'
'"responsetime":"$request_time",'
'"request_method":"$request_method",'
'"status":"$status",'
'"size":"$body_bytes_sent",'
'"request_body":"$request_body",'
'"request_length":"$request_length",'
'"protocol":"$server_protocol",'
'"upstreamhost":"$upstream_addr",'
'"file_dir":"$request_filename",'
'"http_user_agent":"$http_user_agent"'
'}';