Categorygithub.com/allgdante/docker-multilogger-plugin

# README

Multilogger Docker Logging Driver

Overview

This Docker plugins sends container logs to multiple destinations at once. These instructions are for Linux host systems. For other platforms, see the Docker Engine managed plugin system documentation.

If you have any questions or issues using the Docker plugin feel free to open an issue in this repository.

Plugin Installation

Install from the Docker store

Pull the plugin from the Docker Store

$ docker plugin install --alias multilogger:latest allgdante/docker-multilogger-plugin:0.0.2

Enable the plugin

$ docker plugin enable multilogger

Install from source

Clone the repository

$ cd docker-multilogger-plugin

Build the plugin

$ make all

Enable the plugin

$ docker plugin multilogger enable

Plugin Configuration

Configure the logging driver for a container

If multilogger is in use but no logging driver is selected, the json-file logging driver will be automatically enabled:

docker run \
    --log-driver=multilogger \
    nginx/stable-alpine

The following command configure the container to start with the multilogger driver which will send logs to gelf and syslog servers.

docker run \
    --log-driver=multilogger \
    --log-opt gelf-enabled=true \
    --log-opt gelf-address=udp://127.0.0.1:12201 \
    --log-opt syslog-enabled=true \
    --log-opt syslog-address=tcp://127.0.0.1:514 \
    nginx/stable-alpine

In the previous example, if we want to have the json-file logging driver enabled, it must be explicitly enabled like this:

docker run \
    --log-driver=multilogger \
    --log-opt json-file-enabled=true \
    --log-opt gelf-enabled=true \
    --log-opt gelf-address=udp://127.0.0.1:12201 \
    --log-opt syslog-enabled=true \
    --log-opt syslog-address=tcp://127.0.0.1:514 \
    nginx/stable-alpine

Configure the default logging driver

To configure the Docker daemon to default to multilogger logging driver, you must configure the file /etc/docker/daemon.json like this:

{
    "log-driver": "multilogger"
}

If we want to include options, it must be configured like this:

{
    "log-driver": "multilogger",
    "log-opts": {
        "multilogger-max-size": "2m",
        "json-file-enabled": "true",
        "gelf-enabled": "true",
        "gelf-address": "udp://127.0.0.1:12201",
        "syslog-enabled": "true",
        "syslog-address": "tcp:/127.0.0.1:514"
    }
}

This way, we will have a multilogger driver configured who writes to json, gelf, and syslog with a maximum log line of 2 MB.

Available options and logging drivers

Multilogger logging driver

OptionDescription
multilogger-max-sizeThe maximum size of a log message before it is send to the configured drivers. A positive integer plus a modifier representing the unit of measure (k, m, or g). Defaults to 2 >> 20.

JSON File logging driver

Refer to the official documentation for more details. Note that this logging driver is always enabled if multilogger driver is selected and no logging driver is enabled

OptionDescription
json-file-enabledTo enable this driver, use true here.
max-sizeSame as Docker.
max-fileSame as Docker.
labelsSame as Docker.
labels-regexSame as Docker.
envSame as Docker.
env-regexSame as Docker.
compressSame as Docker.
tagSame as Docker.
json-file-log-dir/var/log/docker

Amazon CloudWatch Logs logging driver

Refer to the official documentation for more details.

OptionDescription
awslogs-enabledTo enable this driver, use true here.
awslogs-regionSame as Docker.
awslogs-endpointSame as Docker.
awslogs-groupSame as Docker.
awslogs-create-groupSame as Docker.
awslogs-datetime-formatSame as Docker.
awslogs-multiline-patternSame as Docker.
awslogs-credentials-endpointSame as Docker.
awslogs-force-flush-interval-secondsSame as Docker.
awslogs-max-buffered-eventsSame as Docker.
awslogs-tagSame as tag parameter in Docker docs.

Fluentd logging driver

Refer to the official documentation for more details.

OptionDescription
fluentd-enabledTo enable this driver, use true here.
fluentd-addressSame as Docker.
fluentd-asyncSame as Docker.
fluentd-async-connectSame as Docker.
fluentd-buffer-limitSame as Docker.
fluentd-max-retriesSame as Docker.
fluentd-request-ackSame as Docker.
fluentd-retry-waitSame as Docker.
fluentd-sub-second-precisionSame as Docker.
fluentd-labelsSame as labels parameter in Docker docs.
fluentd-labels-regexSame as labels-regex parameter in Docker docs.
fluentd-envSame as env parameter in Docker docs.
fluentd-env-regexSame as env-regex parameter in Docker docs.
fluentd-tagSame as tag parameter in Docker docs.

Google Cloud Logging driver

Refer to the official documentation for more details.

OptionDescription
gcp-enabledTo enable this driver, use true here.
gcp-projectSame as Docker.
gcp-log-cmdSame as Docker.
gcp-meta-zoneSame as Docker.
gcp-meta-nameSame as Docker.
gcp-meta-idSame as Docker.
gcp-labelsSame as labels parameter in Docker docs.
gcp-labels-regexSame as labels-regex parameter in Docker docs.
gcp-envSame as env parameter in Docker docs.
gcp-env-regexSame as env-regex parameter in Docker docs.

Graylog Extended Format logging driver

Refer to the official documentation for more details.

OptionDescription
gelf-enabledTo enable this driver, use true here.
gelf-addressSame as Docker.
gelf-compression-levelSame as Docker.
gelf-compresion-typeSame as Docker.
gelf-tcp-max-reconnectSame as Docker.
gelf-labelsSame as labels parameter in Docker docs.
gelf-labels-regexSame as labels-regex parameter in Docker docs.
gelf-envSame as env parameter in Docker docs.
gelf-env-regexSame as env-regex parameter in Docker docs.
gelf-tagSame as tag parameter in Docker docs.

Journald logging driver

Refer to the official documentation for more details.

OptionDescription
journald-enabledTo enable this driver, use true here.

Logentries logging driver

Refer to the official documentation for more details.

OptionDescription
logentries-enabledTo enable this driver, use true here.
logentries-tokenSame as Docker.
line-onlySame as Docker.
logentries-labelsSame as labels parameter in Docker docs.
logentries-labels-regexSame as labels-regex parameter in Docker docs.
logentries-envSame as env parameter in Docker docs.
logentries-env-regexSame as env-regex parameter in Docker docs.
logentries-tagSame as tag parameter in Docker docs.

Splunk logging driver

Refer to the official documentation for more details.

OptionDescription
splunk-enabledTo enable this driver, use true here.
splunk-urlSame as Docker.
splunk-tokenSame as Docker.
splunk-sourceSame as Docker.
splunk-sourcetypeSame as Docker.
splunk-indexSame as Docker.
splunk-capathSame as Docker.
splunk-canameSame as Docker.
splunk-insecureskipverifySame as Docker.
splunk-formatSame as Docker.
splunk-verify-connectionSame as Docker.
splunk-gzipSame as Docker.
splunk-gzip-levelSame as Docker.
splunk-index-acknowledgmentSame as Docker.
splunk-labelsSame as labels parameter in Docker docs.
splunk-labels-regexSame as labels-regex parameter in Docker docs.
splunk-envSame as env parameter in Docker docs.
splunk-env-regexSame as env-regex parameter in Docker docs.
splunk-tagSame as tag parameter in Docker docs.

Syslog logging driver

Refer to the official documentation for more details.

OptionDescription
syslog-enabledTo enable this driver, use true here.
syslog-addressSame as Docker.
syslog-facilitySame as Docker.
syslog-tls-ca-certSame as Docker.
syslog-tls-certSame as Docker.
syslog-tls-keySame as Docker.
syslog-tls-skip-verifySame as Docker.
syslog-formatSame as Docker.
syslog-labelsSame as labels parameter in Docker docs.
syslog-labels-regexSame as labels-regex parameter in Docker docs.
syslog-envSame as env parameter in Docker docs.
syslog-env-regexSame as env-regex parameter in Docker docs.
syslog-tagSame as tag parameter in Docker docs.

Syslog5424 logging driver

It's a modified syslog driver that puts labels and environment variables as structured data.

OptionDescription
syslog5424-enabledTo enable this driver, use true here.
syslog5424-addressThe address of an external syslog server. The URI specifier may be [tcp
syslog5424-facilityThe syslog facility to use. Can be the number or name for any valid syslog facility. See the syslog documentation.
syslog5424-time-formatUse rfc3339 for RFC-5424 compatible format, or rfc3339micro for RFC-5424 compatible format with microsecond timestamp resolution.
syslog5424-tls-ca-certThe absolute path to the trust certificates signed by the CA. Ignored if the address protocol is not tcp+tls.
syslog5424-tls-certThe absolute path to the TLS certificate file. Ignored if the address protocol is not tcp+tls.
syslog5424-tls-keyThe absolute path to the TLS key file. Ignored if the address protocol is not tcp+tls.
syslog5424-tls-skip-verifyIf set to true, TLS verification is skipped when connecting to the syslog daemon. Defaults to false. Ignored if the address protocol is not tcp+tls.
syslog5424-hostnameDefaults to os.Hostname(), but we could use a literal value or a template using the info struct as reference.
syslog5424-msgidDefaults to the syslog5424-tag value, but we could use a literal value or a template using the info struct as reference.
syslog5424-disable-framerIf true, we won't sent the RFC5425 message length framer. Disabled by default.
syslog5424-labelsList of comma-separated labels that will be used as structured data in every message.
syslog5424-labels-regexRegular expression to match labels that will be used as structured data in every message.
syslog5424-envList of comma-separated environment variables that will be used as structured data in every message.
syslog5424-env-regexRegular expression to match environment variables that will be used as structured data in every message.
syslog5424-tagDefaults to {{.ID}} template, but we could use a literal value or a template using the info struct as reference.

Uninstall the plugin

To cleanly disable and remove the plugin, run:

docker plugin disable multilogger
docker plugin rm multilogger

# Packages

No description provided by the author