NATS logging driver

Docker logging driver for sending container the logs as events published to NATS in JSON format.

Usage

You can configure the default logging driver by passing the --log-driver option to the Docker daemon:

$ dockerd --log-driver=nats

You can set the logging driver for a specific container by using the --log-driver option to docker run:

$ docker run --log-driver=nats ...

This log driver does not implement a reader so it is incompatible with docker logs.

nats options

You can use the --log-opt NAME=VALUE flag to customize the logging driver for NATS:

Option Required Description
labels optional Comma-separated list of keys of labels, which should be included in message, if these labels are specified for container.
env optional Comma-separated list of keys of environment variables, which should be included in message, if these variables are specified for container.
tag optional Specify tag for message. Refer to the log tag option documentation for customizing the log tag format.
nats-servers optional NATS cluster nodes separated by commas. e.g. nats://127.0.0.1:4222,nats://127.0.0.1:4223. Defaults to localhost:4222
nats-max-reconnect optional Maximum attempts that the driver will try to connect before giving up. Defaults to infinite (-1)
nats-subject optional Specific subject to which logs will be published. Defaults to using tag if not specified
nats-user optional Specify user in case of authentication required
nats-pass optional Specify password in case of authentication required
nats-token optional Specify token in case of authentication required
nats-tls-ca-cert optional Specified the absolute path to the trust certificates signed by the CA
nats-tls-cert optional Specifies the absolute path to the TLS certificate file
nats-tls-key optional Specifies the absolute path to the TLS key file
nats-tls-skip-verify optional Specifies whether to skip verification by setting it to true

Below is an example usage of the driver for sending logs to a node in a NATS cluster to the docker.logs subject:

$ docker run --log-driver=nats \
             --log-opt nats-subject=docker.logs \
             --log-opt nats-servers=nats://nats-node-1:4222,nats://nats-node-2:4222,nats://nats-node-3:4222 \
             your/application

By default, the tag is used as the subject for NATS, so it has to be a valid subject in case subject it is left unspecified:

$ docker run --log-driver nats \
             --log-opt tag="docker.{{.ID}}.{{.ImageName}}"
             your/application

Secure connection to NATS using TLS can be customized by setting tls:// scheme in the URI and absolute paths to the certs and key files:

docker run --log-driver nats \
           --log-opt nats-tls-key=/srv/configs/certs/client-key.pem \
           --log-opt nats-tls-cert=/srv/configs/certs/client-cert.pem \
           --log-opt nats-tls-ca-cert=/srv/configs/certs/ca.pem \
           --log-opt nats-servers="tls://127.0.0.1:4223,tls://127.0.0.1:4222" \
           your/application

Skip verify is enabled by default, in order to deactivate we can specify nats-tls-skip-verify:

  docker run --log-driver nats \
             --log-opt nats-tls-skip-verify \
             --log-opt nats-servers="tls://127.0.0.1:4223,tls://127.0.0.1:4222" \
             your/application

© 2017 Docker, Inc.
Licensed under the Apache License, Version 2.0.
Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.
Docker, Inc. and other parties may also have trademark rights in other terms used herein.
https://docs.docker.com/v1.13/engine/admin/logging/nats/