Log Service
By default, Emissary puts the access logs on stdout; such
that the can be read using kubectl logs. The format of those logs,
and the local destination of them, can be configured using the
envoy_log_ settings in the ambassador Module. However, the
options there only allow for logging local to Emissary’s Pod. By
configuring a LogService, you can configure Emissary to
report its access logs to a remote service, in addition to the usual
ambassador Module configured logging.
The remote access log service (or ALS) must implement the
AccessLogService gRPC interface, defined in Envoy’s als.proto.
---
apiVersion: getambassador.io/v2
kind: LogService
metadata:
name: example-log-service
spec:
# Common to all Emissary resources
ambassador_id: # optional; default is ["default"]
- "string"
ambassador_id: "string" # no need for a list if there's only one value
# LogService specific
service: "string" # required
driver: "enum-string:[tcp, http]" # required
driver_config: # required
additional_log_headers: # optional; default is [] (only for `driver: http`)
- header_name: string # required
during_request: boolean # optional; default is true
during_response: boolean # optional; default is true
during_trailer: boolean # optional; default is true
flush_interval_time: int-seconds # optional; default is 1
flush_interval_byte_size: integer # optional; default is 16384
grpc: boolean # optional; default is false
-
serviceis where to route the access log gRPC requests to -
driveridentifies which type of accesses to log; HTTP requests ("http") or TLS connections ("tcp"). -
driver_configstores the configuration that is specific to thedriver:-
driver: tcphas no additional configuration; the config must be set asdriver_config: {}. -
driver: httpadditional_log_headersidentifies HTTP headers to include in the access log, and when in the logged-request’s lifecycle to include them.
-
-
flush_interval_timeis the maximum number of seconds to buffer accesses for before sending them to the ALS. The logs will be flushed to the ALS every time this duration is reached, or when the buffered data reachesflush_interval_byte_size, whichever comes first. See the Envoy documentation onbuffer_flush_intervalfor more information. -
flush_interval_byte_sizeis a soft size limit for the access log buffer. The logs will be flushed to the ALS every time the buffered data reaches this size, or wheneverflush_interval_timeelapses, whichever comes first. See the Envoy documentation onbuffer_size_bytesfor more information. -
grpcmust betrue.
Example
---
apiVersion: getambassador.io/v2
kind: LogService
metadata:
name: als
spec:
service: "als.default:3000"
driver: http
driver_config: {} # NB: driver_config must be set, even if it's empty
grpc: true # NB: grpc must be true