nginx-ingress controller的日志格式如果不配置,默认就是nginx的日志格式,并且不指定都是标准输出,如果你想方便后续对日志的收集,你需要配置将nginx-ingress controller日志按照指定格式输出到对应日志文件。
修改nginx-ingress controller的configmap配置,添加下面的日志路径配置。
access-log-path: /var/log/nginx/nginx_access.log
error-log-path: /var/log/nginx/nginx_error.lognginx-ingress指定自定义日志格式需要在configmap加上log-format-upstream配置
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名称端口 |
普通日志格式配置方式
$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_portjson格式的配置方式
'{"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"}'原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。