Setting up a logging plugin
Knative allows cluster operators to use different backends for their logging needs. This document describes how to change these settings. Knative currently requires changes in Fluentd configuration files, however we plan on abstracting logging configuration in the future (#906). Once #906 is complete, the methodology described in this document will no longer be valid and migration to a new process will be required. In order to minimize the effort for a future migration, we recommend only changing the output configuration of Fluentd and leaving the rest intact.
NOTE: All the files mentioned below are in
knative/serving repository. You run the
commands mentioned below from the root directory of
Configure the DaemonSet for stdout/stderr logs
Operators can do the following steps to configure the Fluentd DaemonSet for
stdout/stderr logs from the containers:
900.output.confpart in 100-fluentd-configmap.yaml with the desired output configuration. Knative provides a sample for sending logs to Elasticsearch or Stackdriver. Developers can simply use
100-fluentd-configmap.yamlor override any with other configuration.
- Replace the
fluentd-dsDaemonSet in 200-fluentd.yaml with the Fluentd image including the desired Fluentd output plugin. See here for the requirements of Flunetd image on Knative.
Configure the DaemonSet for log files under /var/log
The Fluentd DaemonSet can also capture
/var/log logs from the containers. To
Operators need to deploy Knative components after the configuring:
# Deploy the configuration for enabling /var/log collection kubectl apply --filename config/config-observability.yaml # Deploy the DaemonSet to make configuration for DaemonSet take effect kubectl apply --recursive --filename config/monitoring/100-namespace.yaml \ --filename <path-of-fluentd-daemonset-config>
In the commands above, replace
<path-of-fluentd-daemonset-config> with the
Fluentd DaemonSet configuration file, e.g.
NOTE: The deployment above will not affect the existing pods. Developers
need to redeploy their app to get the newest configuration for
NOTE: Operators sometimes need to deploy extra services as the logging backends. For example, if they desire Elasticsearch&Kibana, they have to deploy the Elasticsearch and Kibana services. Knative provides this sample:
kubectl apply --recursive --filename third_party/config/monitoring/logging/elasticsearch
See here for deploying the whole Knative monitoring components.
To uninstall a logging plugin, run:
kubectl delete --recursive --filename <path-of-fluentd-daemonset-config>
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.