为了方便分析及导入第三方日志分析系统,如es等,通常需要将日志输出为json格式,如下是一个常用的json配置:
map $upstream_response_time $upstream_response_timer {
default $upstream_response_time;
"" 0;
}
log_format json escape=json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"server_addr":"$server_addr",'
'"remote_addr":"$remote_addr",'
'"host":"$host",'
'"uri":"$uri",'
'"body_bytes_sent":$body_bytes_sent,'
'"bytes_sent":$body_bytes_sent,'
'"upstream_response_time":$upstream_response_timer,'
'"request":"$request",'
'"request_length":$request_length,'
'"request_time":$request_time,'
'"status":"$status",'
'"http_referer":"$http_referer",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"http_user_agent":"$http_user_agent",'
'"staffname":"$staffname"'
'}';
server {
// 一些重要的cookie,也可以写到日志中, set只能放在server、location、if中
set $staffname "";
if ($http_cookie ~* "staffname=(.+?)(?=;|$)") {
set $staffname $1;
}
...
access_log /path/to/access.log json;
}
该博客介绍了如何将日志输出为JSON格式,以方便进行日志分析,如使用ES等第三方系统。内容包括了一个典型的JSON配置示例,涉及了时间戳、服务器和客户端地址、请求信息、响应时间等关键字段,并展示了如何通过Nginx的log_format设置和if条件来处理特定的cookie信息,如staffname。这有助于提升日志管理和数据分析的效率。
1448

被折叠的 条评论
为什么被折叠?



