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.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: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) |