日志说明

查看日志可以使用下面命令:

  1. kubectl logs -n higress-system -l app=higress-gateway since=5m

Higress 默认使用的日志格式为 JSON 格式,如下所示:

  1. {
    authority”: “%REQ(:AUTHORITY)%”,
    bytes_received”: “%BYTES_RECEIVED%”,
    bytes_sent”: “%BYTES_SENT%”,
    downstream_local_address”: “%DOWNSTREAM_LOCAL_ADDRESS%”,
    downstream_remote_address”: “%DOWNSTREAM_REMOTE_ADDRESS%”,
    duration”: “%DURATION%”,
    method”: “%REQ(:METHOD)%”,
    path”: “%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%”,
    protocol”: “%PROTOCOL%”,
    request_id”: “%REQ(X-REQUEST-ID)%”,
    requested_server_name”: “%REQUESTED_SERVER_NAME%”,
    response_code”: “%RESPONSE_CODE%”,
    response_flags”: “%RESPONSE_FLAGS%”,
    route_name”: “%ROUTE_NAME%”,
    start_time”: “%START_TIME%”,
    trace_id”: “%REQ(X-B3-TRACEID)%”,
    upstream_cluster”: “%UPSTREAM_CLUSTER%”,
    upstream_host”: “%UPSTREAM_HOST%”,
    upstream_local_address”: “%UPSTREAM_LOCAL_ADDRESS%”,
    upstream_service_time”: “%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%”,
    upstream_transport_failure_reason”: “%UPSTREAM_TRANSPORT_FAILURE_REASON%”,
    user_agent”: “%REQ(USER-AGENT)%”,
    x_forwarded_for”: “%REQ(X-FORWARDED-FOR)%”
    }

Value 的配置含义可以参考envoy 日志说明

字段名类型含义
authoritystring请求报文中的Host Header。
bytes_receivedlong请求的Body大小(不包含Header)。
bytes_sentlong响应的Body大小(不包含Header)。
downstream_local_addressstring网关Pod地址。
downstream_remote_addressstring连接到网关的Client端地址。
durationlong请求整体耗时。
methodstringHTTP方法。
pathstringHTTP请求中的Path。
protocolstringHTTP的协议版本。
request_idstring网关会为每次请求产生一个ID,并放在Header的x-request-id中,后端可以根据这个字段记录并进行排查。
requested_server_namestringSSL连接时使用的Server Name。
response_codelongHTTP响应的状态码。
response_flagsstring响应失败的原因。
route_namestring路由名。
start_timestring请求开始时间。
trace_idstringTrace ID。
upstream_clusterstring上游集群。
upstream_hoststring上游IP。
upstream_local_addressstring本地连接上游的地址。
upstream_service_timelong最后一次调用上游服务的时间。
upstream_transport_failure_reasonstring上游链接失败的原因。
user_agentstringHTTP Header中的UserAgent。
x_forwarded_forstringHTTP Header中的x-forwarded-for,通常用来表示HTTP请求端真实IP。