如何配置nginx-ingress日志格式

nginx-ingress controller的日志格式如果不配置,默认就是nginx的日志格式,并且不指定都是标准输出,如果你想方便后续对日志的收集,你需要配置将nginx-ingress controller日志按照指定格式输出到对应日志文件。

配置日志输出到日志文件

修改nginx-ingress controller的configmap配置,添加下面的日志路径配置。

1
2
access-log-path: /var/log/nginx/nginx_access.log
error-log-path: /var/log/nginx/nginx_error.log

配置日志格式

nginx-ingress指定自定义日志格式需要在configmap加上log-format-upstream配置

1
log-format-upstream: $remote_addr - $remote_user 

日志格式可以配置成普通格式和json格式,对应的自动如下表说明。

字段说明 描述
$proxy_protocol_addr 启用代理协议时的远程地址
$remote_addr 客户端的源 IP 地址
$remote_user 用户名与基本身份验证一起提供
$time_local 当地时间在通用日志格式中
$request 完整原始请求行
$status 响应状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头
$http_referer Referer 标头的值
$http_user_agent User-Agent 标头的值
$request_length 请求长度(包括请求行、头和请求主体)
$request_time 从客户端读取第一个字节以来的时间已过
$proxy_upstream_name 上游的名称。格式是upstream---
$proxy_alternative_upstream_name 替代上游的名称。格式是upstream---
$upstream_addr 上游服务器的 IP 地址和端口(或通往域插座的路径)。如果在请求处理过程中联系了多个服务器,则其地址按逗号进行分离。
$upstream_response_length 从上游服务器获得的响应长度
$upstream_response_time 花费在接收上游服务器响应上的时间为秒数,分辨率为毫秒
$upstream_status 从上游服务器获得的响应状态代码
$req_id 请求的随机生成 ID
$namespace ingress的命名空间
$ingress_name ingress名称
$service_name service名称
$service_port service名称端口

普通日志格式配置方式

1
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] [$proxy_alternative_upstream_name] [$upstream_addr] [$upstream_response_length] [$upstream_response_time] [$upstream_status] $req_id $namespace $ingress_name  $service_name $service_port

json格式的配置方式

1
'{"time": "$time_local","remote_addr": "$remote_addr","x-forward-for": "$proxy_add_x_forwarded_for","request_id": "$req_id","remote_user": "$remote_user","bytes_sent": "$body_bytes_sent","request_time": "$request_time","status": "$status","vhost": "$host","request_proto": "$server_protocol","path": "$uri","request_query": "$args","request_length": "$request_length","duration": "$request_time","method": "$request_method","http_referrer": "$http_referer","http_user_agent": "$http_user_agent", "namespace": "$namespace", "ingress_name": "$ingress_name","service_name": "$service_name","service_port": "$service_port"}'

如何配置nginx-ingress日志格式
https://www.niewx.cn/2021/11/11/2021-11-11-How-to-configure-nginx-ingress-log-format/
作者
VashonNie
发布于
2021年11月11日
许可协议