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/