Nginx-自定义访问日志转换为json

访问日志是记录客户端即用户的具体请求内容信息,全局配置模块中的error_log是记录nginx服务器运行时的日志保存路径和记录日志的level,因此有着本质的区别,而且Nginx的错误日志一般只有一个,但是访问日志可以在不同server中定义多个,定义一个日志需要使用access_log指定日志的保存路径,使用log_format指定日志的格式,格式中定义要保存的具体日志内容。

Nginx 的默认访问日志记录内容相对比较单一,默认的格式也不方便后期做日志统计分析,生产环境中通常将nginx日志转换为json日志,然后配合使用ELK做日志收集-统计-分析。

复制代码
log_format access_json '{"@timestamp":"$time_iso8601",'
    '"host":"$server_addr",'
    '"clientip":"$remote_addr",'
    '"size":$body_bytes_sent,'
    '"responsetime":$request_time,'              #记录的是nginx开始收到client请求,到将请求发回给client期间过去的时间
    '"upstreamtime":"$upstream_response_time",'  #后端服务器处理完成响应时间
    '"upstreamhost":"$upstream_addr",'           #
    '"http_host":"$host",'
    '"uri":"$uri",'
    '"domain":"$host",'
    '"xff":"$http_x_forwarded_for",'             #透传客户端真实IP地址
    '"referer":"$http_referer",'                 #客户访问当前网站的上一级网站
    '"tcp_xff":"$proxy_protocol_addr",'          #TCP负载均衡透传客户ip
    '"http_user_agent":"$http_user_agent",'      #用户浏览器类型
    '"status":"$status"}';                       #状态码
  access_log logs/access.log
access_json; #定义日志引用
复制代码

部分变量说明

复制代码
$remote_addr, $http_x_forwarded_for(反向) 记录客户端IP地址
$remote_user 记录客户端用户名称
$request 记录请求的URL和HTTP协议
$status 记录请求状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
$bytes_sent 发送给客户端的总字节数。
$connection 连接的序列号。
$connection_requests 当前通过一个连接获得的请求数量。
$msec 日志写入时间。单位为秒,精度是毫秒。
$pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
$http_referer 记录从哪个页面链接访问过来的
$http_user_agent 记录客户端浏览器相关信息
$request_length 请求的长度(包括请求行,请求头和请求正文)。
$request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601 ISO8601标准格式下的本地时间。
$time_local 通用日志格式下的本地时间。
复制代码

测试访问

{"@timestamp":"2022-01-15T06:29:13-08:00",    '"host":"192.168.64.130",'    '"clientip":"192.168.64.1",'    '"size":463,'    '"responsetime":0.000,'    '"upstreamtime":"-",'    '"upstreamhost":"-",'    '"http_host":"www.magedu.net",'    '"uri":"/about/index.html",'    '"domain":"www.magedu.net",'    '"xff":"-",'    '"referer":"-",'    '"tcp_xff":"",'    '"http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",'    '"status":"200"}'

 

posted @   不会跳舞的胖子  阅读(363)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示