Knative Serving uses a Fluentd docker image to collect logs. Operators can customize their own Fluentd docker image and configuration to define logging output.
Knative requires the customized Fluentd docker image with the following plugins installed:
- fluentd >= v0.14.0
- fluent-plugin-kubernetes_metadata_filter >= 1.0.0 AND < 2.1.0: To enrich log entries with Kubernetes metadata.
- fluent-plugin-detect-exceptions >= 0.0.9: To combine multi-line exception stack traces logs into one log entry.
- fluent-plugin-multi-format-parser >= 1.0.0: To detect log format as Json or plain text.
Operators can use any Docker image which meets the requirements above and includes the desired output plugin. Two examples below:
Operators can use k8s.gcr.io/fluentd-elasticsearch:v2.0.4 which includes fluent-plugin-elasticsearch that allows sending logs to a Elasticsearch service.
This sample Dockerfile is based on k8s.gcr.io/fluentd-elasticsearch:v2.0.4. It additionally adds one more plugin - fluent-plugin-google-cloud which allows sending logs to Stackdriver.
Operators can build this image and push it to a container registry which their Kubernetes cluster has access to. See Setting Up A Logging Plugin for details. NOTE: Operators need to add credentials file the stackdriver agent needs to the docker image if their Knative Serving is not built on a GCP based cluster or they want to send logs to another GCP project. See here for more information.