.. _envoy_api_file_api/filter/accesslog/accesslog.proto: Common access log types ======================= Envoy access logs describe incoming interaction with Envoy over a fixed period of time, and typically cover a single request/response exchange, (e.g. HTTP), stream (e.g. over HTTP/gRPC), or proxied connection (e.g. TCP). Access logs contain fields defined in protocol-specific protobuf messages. Except where explicitly declared otherwise, all fields describe *downstream* interaction between Envoy and a connected client. Fields describing *upstream* interaction will explicitly include ``upstream`` in their name. .. _envoy_api_msg_filter.accesslog.AccessLog: filter.accesslog.AccessLog -------------------------- `[filter.accesslog.AccessLog proto] `_ .. code-block:: json { "name": "...", "filter": "{...}", "config": "{...}" } .. _envoy_api_field_filter.accesslog.AccessLog.name: name (`string `_) The name of the access log implementation to instantiate. The name must match a statically registered access log. Current built-in loggers include: 1) "envoy.file_access_log" .. _envoy_api_field_filter.accesslog.AccessLog.filter: filter (:ref:`filter.accesslog.AccessLogFilter `) Filter which is used to determine if the access log needs to be written. .. _envoy_api_field_filter.accesslog.AccessLog.config: config (`Struct `_) Custom configuration that depends on the access log being instantiated. built-in configurations include: 1) "envoy.file_access_log": :ref:`FileAccessLog ` .. _envoy_api_msg_filter.accesslog.AccessLogFilter: filter.accesslog.AccessLogFilter -------------------------------- `[filter.accesslog.AccessLogFilter proto] `_ .. code-block:: json { "status_code_filter": "{...}", "duration_filter": "{...}", "not_health_check_filter": "{...}", "traceable_filter": "{...}", "runtime_filter": "{...}", "and_filter": "{...}", "or_filter": "{...}" } .. _envoy_api_field_filter.accesslog.AccessLogFilter.status_code_filter: status_code_filter (:ref:`filter.accesslog.StatusCodeFilter `) Status code filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_field_filter.accesslog.AccessLogFilter.duration_filter: duration_filter (:ref:`filter.accesslog.DurationFilter `) Duration filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_field_filter.accesslog.AccessLogFilter.not_health_check_filter: not_health_check_filter (:ref:`filter.accesslog.NotHealthCheckFilter `) Not health check filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_field_filter.accesslog.AccessLogFilter.traceable_filter: traceable_filter (:ref:`filter.accesslog.TraceableFilter `) Traceable filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_field_filter.accesslog.AccessLogFilter.runtime_filter: runtime_filter (:ref:`filter.accesslog.RuntimeFilter `) Runtime filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_field_filter.accesslog.AccessLogFilter.and_filter: and_filter (:ref:`filter.accesslog.AndFilter `) And filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_field_filter.accesslog.AccessLogFilter.or_filter: or_filter (:ref:`filter.accesslog.OrFilter `) Or filter. Precisely one of :ref:`status_code_filter `, :ref:`duration_filter `, :ref:`not_health_check_filter `, :ref:`traceable_filter `, :ref:`runtime_filter `, :ref:`and_filter `, :ref:`or_filter ` must be set. .. _envoy_api_msg_filter.accesslog.ComparisonFilter: filter.accesslog.ComparisonFilter --------------------------------- `[filter.accesslog.ComparisonFilter proto] `_ Filter on an integer comparison. .. code-block:: json { "op": "...", "value": "{...}" } .. _envoy_api_field_filter.accesslog.ComparisonFilter.op: op (:ref:`filter.accesslog.ComparisonFilter.Op `) Comparison operator. .. _envoy_api_field_filter.accesslog.ComparisonFilter.value: value (:ref:`RuntimeUInt32 `) Value to compare against. .. _envoy_api_enum_filter.accesslog.ComparisonFilter.Op: Enum filter.accesslog.ComparisonFilter.Op ----------------------------------------- `[filter.accesslog.ComparisonFilter.Op proto] `_ .. _envoy_api_enum_value_filter.accesslog.ComparisonFilter.Op.EQ: EQ *(DEFAULT)* ⁣= .. _envoy_api_enum_value_filter.accesslog.ComparisonFilter.Op.GE: GE ⁣>= .. _envoy_api_msg_filter.accesslog.StatusCodeFilter: filter.accesslog.StatusCodeFilter --------------------------------- `[filter.accesslog.StatusCodeFilter proto] `_ Filters on HTTP response/status code. .. code-block:: json { "comparison": "{...}" } .. _envoy_api_field_filter.accesslog.StatusCodeFilter.comparison: comparison (:ref:`filter.accesslog.ComparisonFilter `, *REQUIRED*) Comparison. .. _envoy_api_msg_filter.accesslog.DurationFilter: filter.accesslog.DurationFilter ------------------------------- `[filter.accesslog.DurationFilter proto] `_ Filters on total request duration in milliseconds. .. code-block:: json { "comparison": "{...}" } .. _envoy_api_field_filter.accesslog.DurationFilter.comparison: comparison (:ref:`filter.accesslog.ComparisonFilter `, *REQUIRED*) Comparison. .. _envoy_api_msg_filter.accesslog.NotHealthCheckFilter: filter.accesslog.NotHealthCheckFilter ------------------------------------- `[filter.accesslog.NotHealthCheckFilter proto] `_ Filters for requests that are not health check requests. A health check request is marked by the health check filter. .. code-block:: json {} .. _envoy_api_msg_filter.accesslog.TraceableFilter: filter.accesslog.TraceableFilter -------------------------------- `[filter.accesslog.TraceableFilter proto] `_ Filters for requests that are traceable. See the tracing overview for more information on how a request becomes traceable. .. code-block:: json {} .. _envoy_api_msg_filter.accesslog.RuntimeFilter: filter.accesslog.RuntimeFilter ------------------------------ `[filter.accesslog.RuntimeFilter proto] `_ Filters for random sampling of requests. Sampling pivots on the header :ref:`x-request-id` being present. If :ref:`x-request-id` is present, the filter will consistently sample across multiple hosts based on the runtime key value and the value extracted from :ref:`x-request-id`. If it is missing, the filter will randomly sample based on the runtime key value. .. code-block:: json { "runtime_key": "..." } .. _envoy_api_field_filter.accesslog.RuntimeFilter.runtime_key: runtime_key (`string `_, *REQUIRED*) Runtime key to get the percentage of requests to be sampled. This runtime control is specified in the range 0-100 and defaults to 0. .. _envoy_api_msg_filter.accesslog.AndFilter: filter.accesslog.AndFilter -------------------------- `[filter.accesslog.AndFilter proto] `_ Performs a logical “and” operation on the result of each filter in filters. Filters are evaluated sequentially and if one of them returns false, the filter returns false immediately. .. code-block:: json { "filters": [] } .. _envoy_api_field_filter.accesslog.AndFilter.filters: filters (:ref:`filter.accesslog.AccessLogFilter `, *REQUIRED*) .. _envoy_api_msg_filter.accesslog.OrFilter: filter.accesslog.OrFilter ------------------------- `[filter.accesslog.OrFilter proto] `_ Performs a logical “or” operation on the result of each individual filter. Filters are evaluated sequentially and if one of them returns true, the filter returns true immediately. .. code-block:: json { "filters": [] } .. _envoy_api_field_filter.accesslog.OrFilter.filters: filters (:ref:`filter.accesslog.AccessLogFilter `, *REQUIRED*) .. _envoy_api_msg_filter.accesslog.FileAccessLog: filter.accesslog.FileAccessLog ------------------------------ `[filter.accesslog.FileAccessLog proto] `_ Custom configuration for an AccessLog that writes log entries directly to a file. Configures the built-in *envoy.file_access_log* AccessLog. .. code-block:: json { "path": "...", "format": "..." } .. _envoy_api_field_filter.accesslog.FileAccessLog.path: path (`string `_, *REQUIRED*) A path to a local file to which to write the access log entries. .. _envoy_api_field_filter.accesslog.FileAccessLog.format: format (`string `_) Access log format. Envoy supports :ref:`custom access log formats ` as well as a :ref:`default format `.