Syslog日志记录驱动程序
预计阅读时间:5分钟
syslog
日志记录驱动程序将日志路由到syslog
服务器。该syslog
协议使用原始字符串作为日志消息,并支持一组有限的元数据。syslog消息必须以特定方式格式化才能生效。接收者可以从有效消息中提取以下信息:
- 优先级:日志记录级别,如
debug
,warning
,error
,info
。 - 时间戳:事件发生的时间。
- 主机名:事件发生的位置。
- 设施:哪个子系统记录了消息,例如
mail
或kernel
。 - 进程名称和进程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-driver
和log-opt
键设置为适当的值。有关使用来配置Docker的更多信息,请参见
daemon.json。daemon.json
/etc/docker/
C:\ProgramData\docker\config\daemon.json
daemon.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 create
docker run
docker run \
--log-driver syslog --log-opt syslog-address=udp://1.2.3.4:1111 \
alpine echo hello world
选项
支持以下日志记录选项作为syslog
日志记录驱动程序的选项。daemon.json
通过将它们作为键值对添加到log-opts
JSON数组中,可以将它们设置为默认值。也可以通过--log-opt <key>=<value>
在启动容器时为每个选项添加一个标志来在给定的容器上设置它们。
选项 | 描述 | 示例值 |
---|---|---|
syslog-address |
外部syslog 服务器的地址。该URI指定符可以是[tcp|udp|tcp+tls]://host:port ,unix://path ,或unixgram://path 。如果传输是tcp ,udp 或tcp+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) |