Syslog日志记录驱动程序

预计阅读时间:5分钟

syslog日志记录驱动程序将日志路由到syslog服务器。该syslog协议使用原始字符串作为日志消息,并支持一组有限的元数据。syslog消息必须以特定方式格式化才能生效。接收者可以从有效消息中提取以下信息:

  • 优先级:日志记录级别,如debugwarningerrorinfo
  • 时间戳:事件发生的时间。
  • 主机名:事件发生的位置。
  • 设施:哪个子系统记录了消息,例如mailkernel
  • 进程名称进程ID(PID):生成日志的进程的名称和ID。

该格式在RFC 5424中定义,并且Docker的syslog驱动程序以以下方式实现 ABNF参考

                TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
                    +          +             +           |        +
                    |          |             |           |        |
                    |          |             |           |        |
       +------------+          +----+        |           +----+   +---------+
       v                            v        v                v             v
2017-04-01T17:41:05.616647+08:00 a.vm {taskid:aa,version:} 1787791 {taskid:aa,version:}

用法

要将syslog驱动程序用作默认的日志记录驱动程序,请在Linux主机或Windows Server上 的文件中将log-driverlog-opt键设置为适当的值。有关使用来配置Docker的更多信息,请参见 daemon.jsondaemon.json/etc/docker/C:\ProgramData\docker\config\daemon.jsondaemon.json

下面的示例将日志驱动程序syslog设置为并设置 syslog-address选项。这些syslog-address选项同时支持UDP和TCP。本示例使用UDP。

{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "udp://1.2.3.4:1111"
  }
}

重新启动Docker以使更改生效。

笔记

log-opts配置daemon.json文件中的配置选项必须以字符串形式提供。因此,数值和布尔值(例如的值 syslog-tls-skip-verify)必须用引号(")括起来。

您可以使用或--log-driver标记来设置特定容器的日志记录驱动程序 :docker container createdocker run

docker run \
      --log-driver syslog --log-opt syslog-address=udp://1.2.3.4:1111 \
      alpine echo hello world

选项

支持以下日志记录选项作为syslog日志记录驱动程序的选项。daemon.json通过将它们作为键值对添加到log-optsJSON数组中,可以将它们设置为默认值。也可以通过--log-opt <key>=<value>在启动容器时为每个选项添加一个标志来在给定的容器上设置它们。

选项 描述 示例值
syslog-address 外部syslog服务器的地址。该URI指定符可以是[tcp|udp|tcp+tls]://host:portunix://path,或unixgram://path。如果传输是tcpudptcp+tls,则默认端口是514 --log-opt syslog-address=tcp+tls://192.168.1.3:514--log-opt syslog-address=unix:///tmp/syslog.sock
syslog-facility 使用的syslog设施。可以是任何有效syslog设施的编号或名称。请参阅syslog文档 --log-opt syslog-facility=daemon
syslog-tls-ca-cert CA签署的信任证书的绝对路径。如果不是,则忽略该地址协议tcp+tls --log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem
syslog-tls-cert TLS证书文件的绝对路径。如果不是,则忽略该地址协议tcp+tls --log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem
syslog-tls-key TLS密钥文件的绝对路径。如果不是,则忽略该地址协议tcp+tls --log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem
syslog-tls-skip-verify 如果设置为true,则在连接到syslog守护程序时将跳过TLS验证。默认为false如果不是,则忽略该地址协议tcp+tls --log-opt syslog-tls-skip-verify=true
tag 附加到消息APP-NAME中的的字符串syslog。默认情况下,Docker使用容器ID的前12个字符标记日志消息。请参阅日志标签选项文档以自定义日志标签格式。 --log-opt tag=mailer
syslog-format syslog要使用的消息格式。如果未指定,则使用本地UNIX syslog格式,而没有指定的主机名。指定rfc3164为RFC-3164兼容的格式,rfc5424为RFC-5424兼容的格式,或rfc5424micro用微秒时间戳分辨率RFC-5424兼容的格式。 --log-opt syslog-format=rfc5424micro
labels 在启动Docker守护程序时适用。该守护程序接受的与日志记录相关的标签的逗号分隔列表。用于高级日志标签选项 --log-opt labels=production_status,geo
labels-regex 在启动Docker守护程序时适用。与相似并兼容labels。与记录相关标签匹配的正则表达式。用于高级日志标签选项 --log-opt labels-regex=^(production_status\|geo)
env 在启动Docker守护程序时适用。该守护程序接受的与日志记录相关的环境变量的逗号分隔列表。用于高级日志标签选项 --log-opt env=os,customer
env-regex 在启动Docker守护程序时适用。与相似并兼容env。用于匹配与日志记录相关的环境变量的正则表达式。用于高级日志标签选项 --log-opt env-regex=^(os\|customer)
syslogdocker日志记录驱动