1. 配置详情
log_format json '{
"time_local": "$time_iso8601", # 本地时间,格式为 ISO 8601
"msec": $msec, # 当前时间的毫秒数
"remote_addr": "$remote_addr", # 客户端的 IP 地址
"remote_user": "$remote_user", # 客户端的用户名(如果有通过 HTTP 基本认证提供)
"body_bytes_sent": $body_bytes_sent, # 发送给客户端的主体内容的字节数
"content_length": "$content_length", # 请求的 Content-Length 头部字段的值
"upstream_response_length": "$upstream_response_length", # 来自上游服务器的响应长度
"upstream_addr": "$upstream_addr", # 处理请求的上游服务器的地址
"upstream_connect_time": "$upstream_connect_time", # 与上游服务器建立连接的时间
"bytes_sent": $bytes_sent, # 发送给客户端的总字节数
"request_length": $request_length, # 请求的总长度(包括请求行、请求头和请求主体)
"connection_requests": $connection_requests, # 当前连接处理的请求数
"http_status": $status, # 响应的 HTTP 状态码
"schema": "$scheme", # 请求的协议(HTTP 或 HTTPS)
"uri": "$uri", # 请求的 URI
"http_cookie": "$http_cookie", # 请求头中的 Cookie 信息
"request_uri": "$request_uri", # 请求的完整 URI,包括参数
"query_string": "$query_string", # 请求的查询字符串
"method": "$request_method", # 请求的方法(GET、POST 等)
"request_time": $request_time, # 处理请求所用的时间
"upstream_response_time": "$upstream_response_time", # 上游服务器响应的时间
"upstream_status": "$upstream_status", # 上游服务器响应的 HTTP 状态码
"http_host": "$http_host", # 请求头中的 Host 字段的值
"http_referrer": "$http_referer", # 请求头中的 Referer 字段的值
"http_x_forwarded_for": "$http_x_forwarded_for", # 请求头中的 X-Forwarded-For 字段的值
"sla_appname": "$cookie_sla_appname", # 来自 Cookie 的 sla_appname 字段的值
"http_user_agent": "$http_user_agent", # 请求头中的 User-Agent 字段的值
"host": "$host", # 请求头中的 Host 字段的值
"request": "$request", # 请求行,包括方法、URI 和 HTTP 版本
"server_addr": "$server_addr", # 处理请求的服务器的 IP 地址
"request_id": "$http_x_request_id" # 请求头中的 X-Request-ID 字段的值
}';
log_format json '
{
"time_local": "$time_iso8601",
"msec": $msec,
"remote_addr": "$remote_addr",
"remote_user": "$remote_user",
"body_bytes_sent": $body_bytes_sent,
"content_length": "$content_length",
"upstream_response_length": "$upstream_response_length",
"upstream_addr": "$upstream_addr",
"upstream_connect_time": "$upstream_connect_time",
"bytes_sent": $bytes_sent,
"request_length": $request_length,
"connection_requests": $connection_requests,
"http_status": $status,
"schema": "$scheme",
"uri": "$uri",
"http_cookie": "$http_cookie",
"request_uri": "$request_uri",
"query_string": "$query_string",
"method": "$request_method",
"request_time": $request_time,
"upstream_response_time": "$upstream_response_time",
"upstream_status": "$upstream_status",
"http_host": "$http_host",
"http_referrer": "$http_referer",
"http_x_forwarded_for": "$http_x_forwarded_for",
"sla_appname": "$cookie_sla_appname",
"http_user_agent": "$http_user_agent",
"host": "$host",
"request": "$request",
"server_addr": "$server_addr",
"request_id": "$http_x_request_id"
}';
2. 配置应用
2.1 nginx
access_log /log/web-slb/nginx/access.log json;
2.2 ingress-nginx
需要使用 log-format-escape-json: 'true' 开启json方式
kind: ConfigMap
apiVersion: v1
metadata:
name: ingress-nginx-controller
namespace: ingress-nginx
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.1.2
helm.sh/chart: ingress-nginx-4.0.18
annotations:
data:
log-format-escape-json: 'true'
log-format-upstream: |-
{
"time_local": "$time_iso8601", # 本地时间,格式为 ISO 8601
"msec": $msec, # 当前时间的毫秒数
............
}