0°

Nginx 之 ngx_http_log_module 日志模块

ngx_http_log_module日志模块官方文档:http://nginx.org/en/docs/http/ngx_http_log_module.html

Nginx日志格式

1.log_format

Syntax: log_format name [escape=default|json|none] string ...;
Default: log_format combined "...";
Context:    http

日志格式可以为 escape|json|none|string等,适用于http配置段

2.日志变量
常用的日志变量如下

$remote_addr
$remote_addr表示记录客户端IP

$remote_user
用来记录客户端用户名称,有些页面需要Basic模块认证登录,此字段就是用来记录登录的用户名称

$time_iso8601
记录请求时间,这种方式比较直观,还有一种方式记录请求时间 $time_local

$request
记录客户端请求方法、请求的url、请求的协议

$status
记录响应状态码

$body_bytes_sent
记录响应的body的大小

$connection
连接序列号

$connection_requests
通过连接发出的当前请求数

$http_referer
表示来源url,从哪个地址跳到的当前页面,表示请求的referer连接,可用于防盗链

$http_user_agent
记录请求的客户端类型,比如浏览器名称、型号等

$http_x_forwarded_for
记录代理IP,如果nginx前面还有一层代理设备,那么此变量将记录nginx上层的代理服务器地址

$gzip_ratio
记录此次请求获得的压缩率

$request_time
记录本地服务器的响应时间

$upstream_addr
记录上游服务器的IP地址和端口

$upstream_response_time
记录上游服务器的响应时间

$upstream_status
记录上游服务器返回的状态码

$http_host
记录客户端访问的域名或者地址

关于Nginx更多内置变量见:http://nginx.org/en/docs/varindex.html

3.日志路径、格式、缓冲区相关配置

Syntax: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
Default: access_log logs/access.log combined;
Context: http, server, location, if in location, limit_except

access_log path:设置日志路径,可输出多个日志路径
format:指定格式,与 log_format 指定的格式一致
buffer=size:默认日志是直接写入磁盘,如果指定了了buffer大小,那么将启用缓冲区,日志将现写入缓冲区后在落到磁盘。
gzip[=level]:如果启用gzip参数,那么在日志写入文件之前,缓冲区的数据将被压缩后写入文件,压缩级别为1-9,(1为压缩时间较快,压缩比最低,9为压缩时间最慢,压缩比最高)。默认情况下,缓冲区大小等于64K字节,压缩级别设置为1。由于数据是在块中压缩的,所以日志文件可以在任何时候由“zcat”解压或读取。
[flush=time]:刷新时间

4.日志缓存区相关的元数据信息

Syntax:   open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
          open_log_file_cache off;
Default:    open_log_file_cache off;
Context:    http, server, location

open_log_file_cache off:关闭缓存日志文件相关的元数据信息
open_log_file_cache:开启缓存日志文件相关的元数据信息
max=N:缓存的最大文件描述符数量
[inactive=time]:非活动时长
[min_uses=N]:在inactive指定的时长内访问大于等于此值方可被当作活动项
[valid=time]:验正缓存中各缓存项是否为活动项的时间间隔;

总结:在非活动时长inactive参数指定的时间内,如果使用次数小于min_users值,nginx就会把它标注为非活动项进行删除,间隔valid参数指定的时间检查一次

Nginx日志模块 main 格式

log_format  main  '$remote_addr" "$remote_user" "$time_iso8601" "$request"'
                  ' "$status" "$body_bytes_sent" "$connection" "$connection_requests" "$http_referer"'
                  ' "$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio" "$request_time"'
                  ' "$upstream_addr" "$upstream_response_time" "$upstream_status" "$http_host"';
access_log  logs/access.log  main;

log_format main | json 
指定日志格式,可选为 main 和 json两种格式,日志格式可以包含公用变量,以及仅在写入日志时存在的变量,main格式为默认选项。

main 格式日志如下:

139.226.64.83" "-" "2020-03-20T18:00:19+08:00" "GET /crm/back-stage/img/icon/favicon.ico HTTP/1.1" "200" "16958" "658771" "13" "http://k8sops.cn/crm/console/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" "-" "-" "0.005" "172.19.54.88:8081" "0.004" "200" "k8sops.cn"

Nginx日志模块 json 格式

log_format json '{"@timestamp":"$time_iso8601",'
                 '"remote_ip":"$remote_addr",' 
                 '"login_user":"$remote_user",'
                 '"request":"$request",'
                 '"status_code":"$status",' 
                 '"body_bytes":"$body_bytes_sent",' 
                 '"conn_number":"$connection",'
                 '"requests_number":"$connection_requests",'
                 '"referer_url":"$http_referer",'
                 '"agent":"$http_user_agent",' 
                 '"proxy_ip":"$http_x_forwarded_for",'
                 '"gzip_ratio":"$gzip_ratio",'
                 '"local_request_time":"$request_time",' 
                 '"upstream_addr":"$upstream_addr",'
                 '"upstream_response_time": "$upstream_response_time",'
                 '"upstream_status_code":"$upstream_status",'
                 '"http_host":"$http_host"}';
access_log  logs/access.log  json;

"@timestamp":"$time_iso8601"
时间json,@timestamp为键,$time_iso8601为值

日志格式变量意思与 main 一致

json格式日志如下:

{"@timestamp":"2020-03-20T17:57:23+08:00","remote_ip":"116.236.73.132","login_user":"-","request":"GET /crm/console/translog/detail?id=2120 HTTP/1.1","status_code":"200","body_bytes":"5182","conn_number":"658646","requests_number":"2","referer_url":"http://k8sops.cn/crm/console/translog/list","agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko","proxy_ip":"-","gzip_ratio":"-","local_request_time":"0.015","upstream_addr":"172.19.54.88:8081","upstream_response_time": "0.016","upstream_status_code":"200","http_host":"k8sops.cn"}






「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论