Fluentd container image requirements
Knative Serving uses a Fluentd docker image to collect logs. Operators can customize their own Fluentd docker image and configuration to define logging output.
Requirements
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.
Sample images
Operators can use any Docker image which meets the requirements above and includes the desired output plugin. Two examples below:
Send logs to Elasticsearch
Operators can use k8s.gcr.io/fluentd-elasticsearch:v2.0.4 which includes fluent-plugin-elasticsearch that allows sending logs to a Elasticsearch service.
Send logs to Stackdriver
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 must add the credentials file the Stackdriver agent needs to the Docker image if their Knative Serving is not built on a Google Cloud Platform-based cluster or if they want to send logs to another Google Cloud Platform project. See here for more information.