|
|
|
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;
|
|
|
|
}
|
|
|
|
|