syntax = "proto3"; package envoy.api.v2; import "api/base.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; message EnvoyAccessLog { // The HTTP request method (RFC 7231/2616) RequestMethod request_method = 1; // The time that Envoy started servicing this request google.protobuf.Timestamp start_time = 2; // Incoming protocol variation spoken enum Protocol { PROTOCOL_UNSPECIFIED = 0; HTTP10 = 1; HTTP11 = 2; HTTP2 = 3; } Protocol protocol_variant = 3; // This enum defines the various things that may have occurred while // processing a request. enum ResponseFlag { // Local server healthcheck failed. FAILED_LOCAL_HEALTHCHECK = 0; // No healthy upstream. NO_HEALTHY_UPSTREAM = 1; // Request timeout on upstream. UPSTREAM_REQUEST_TIMEOUT = 2; // Local codec level reset was sent on the stream. LOCAL_RESET = 3; // Remote codec level reset was received on the stream. UPSTREAM_REMOTE_RESET = 4; // Local reset by a connection pool due to an initial connection failure. UPSTREAM_CONNECTION_FAILURE = 5; // If the stream was locally reset due to connection termination. UPSTREAM_CONNECTION_TERMINATION = 6; // The stream was reset because of a resource overflow. UPSTREAM_OVERFLOW = 7; // No route found for a given request. NO_ROUTE_FOUND = 8; // Request was delayed before proxying. DELAY_INJECTED = 9; // Abort with error code was injected. FAULT_INJECTED = 10; // Request was ratelimited locally by rate limit filter. RATE_LIMITED = 11; } // Status flags about the response. repeated ResponseFlag response_flags = 4; // The upstream host URL (Envoy connects to). // // For example, tcp://ip:port for TCP connections. // // IPv6 addresses should be stored in canonical (compressed) format using // [address]:port notation. string upstream_host = 5; // The Upstream Cluster that the upstream host belongs to. string upstream_cluster = 6; // This field is the IP and port on which the request from the user was // received, stored in ipv4:port or [ipv6]:port format. string destination_host = 7; // Size of the HTTP request body in bytes google.protobuf.UInt64Value request_body_bytes = 8; // Size of the HTTP response body in bytes google.protobuf.UInt64Value response_body_bytes = 9; // Size of the HTTP request headers in bytes google.protobuf.UInt64Value request_headers_bytes = 10; // Size of the HTTP response headers in bytes google.protobuf.UInt64Value response_headers_bytes = 11; // Whether the request arrived via a secure (TLS) protocol google.protobuf.BoolValue secure = 12; // Whether the request is a HealthCheck request google.protobuf.BoolValue health_check = 13; // The HTTP response code google.protobuf.UInt32Value response_code = 14; // User agent as sent by client HTTP string user_agent = 15; // Path // // This is the Path portion from the incoming request URI string path = 17; // Referer header as sent by client HTTP // (Referer is spelled to match the HTTP spec, not English). string referer = 18; // X-Forwarded-For request header string forwarded_for = 19; // X-Request-Id request header // // This header is used by Envoy to uniquely identify a request. // It will be generated for all external requests and internal requests that // do not already have a request ID. So this field can be guaranteed to exist // and be unique for request tracing purposes. string request_id = 20; // HTTP2 :authority header value or HTTP1.1 Host header value string authority = 21; // Duration (milliseconds) // // The total duration it took to service this request from the StartTime until // the response was written to the user. google.protobuf.Duration response_duration = 22; // Upstream Service Time Duration // // From the X-Envoy-Upstream-Service-Time response header. This is the amount it took // the upstream server to service the request. google.protobuf.Duration upstream_service_duration = 23; // Original Path from the X-Envoy-Original-Path header. string original_path = 24; // All metadata encountered during request processing, including endpoint // selection. // // This can be used to associate IDs attached to the various configurations // used to process this request with the access log entry. For example, a // route created from a higher level forwarding rule with some ID can place // that ID in this field and cross reference later. It can also be used to // determine if a canary endpoint was used or not. google.protobuf.Struct metadata = 25; // Headers configured for logging but not covered by a specific field. repeated HeaderValue request_headers = 26; repeated HeaderValue response_headers = 27; // SNI hostname from handshake. string tls_sni_hostname = 28; // TLS Version or VERSION_UNSPECIFIED if TLS was not used enum TLSVersion { VERSION_UNSPECIFIED = 0; TLSv1 = 1; TLSv1_1 = 2; TLSv1_2 = 3; TLSv1_3 = 4; } TLSVersion tls_version = 29; // TLS Cipher suite negotiated during TLS handshake. // The value is four hex digits defined by the IANA TLS Cipher Suite Registry, // eg, "009C" for TLS_RSA_WITH_AES_128_GCM_SHA256. // // Here is is expressed as an integer. google.protobuf.UInt32Value tls_cipher_suite = 30; }