Syslog 日志记录驱动程序
日志记录驱动程序将日志路由到服务器。该协议使用
原始字符串作为日志消息,并支持一组有限的元数据。syslog
消息必须以特定方式格式化才能有效。在有效消息中,
接收方可以提取以下信息:syslog
syslog
syslog
- 优先级:日志记录级别,例如 、 、 、 。
debug
warning
error
info
- 时间戳:事件发生的时间。
- 主机名:事件发生的位置。
- Facility:记录消息的子系统,例如 或 。
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:}
用法
要将驱动程序用作默认日志记录驱动程序,请在文件中将 和 键设置为适当的值,即
位于 Linux 主机或 Windows Server 上。有关
使用 配置 Docker,请参阅 daemon.json。syslog
log-driver
log-opt
daemon.json
/etc/docker/
C:\ProgramData\docker\config\daemon.json
daemon.json
以下示例将日志驱动程序设置为 并设置选项。这些选项支持 UDP 和 TCP;
此示例使用 UDP。syslog
syslog-address
syslog-address
{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://1.2.3.4:1111"
}
}
重新启动 Docker 以使更改生效。
注意
log-opts
配置文件中的配置选项必须 以字符串形式提供。因此,数字和布尔值(如 的值 )必须用引号 () 括起来。daemon.json
syslog-tls-skip-verify
"
您可以通过使用标志 to 或 来为特定容器设置日志记录驱动程序:--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
选项
支持将以下日志记录选项作为日志记录的选项
司机。可以在 中将它们设置为默认值,方法是将它们添加为
键值对添加到 JSON 数组中。它们也可以设置在给定的
容器,为每个选项添加一个标志,当
启动容器。syslog
daemon.json
log-opts
--log-opt <key>=<value>
选择 | 描述 | 示例值 |
---|---|---|
syslog-address | 外部服务器的地址。URI 说明符可以是 、 或 。如果传输是 、 或 ,则默认端口是 。syslog [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 | 如果设置为 ,则在连接到守护程序时跳过 TLS 验证。默认为 。如果地址协议不是 ,则忽略。true syslog false tcp+tls | --log-opt syslog-tls-skip-verify=true |
tag | 附加到消息中的 的字符串。默认情况下,Docker 使用容器 ID 的前 12 个字符来标记日志消息。请参阅 log tag option 文档 以自定义日志标签格式。APP-NAME syslog | --log-opt tag=mailer |
syslog-format | 要使用的消息格式。如果未指定,则使用本地 Unix syslog 格式,而不指定主机名。指定 RFC-3164 兼容格式、RFC-5424 兼容格式或具有微秒时间戳分辨率的 RFC-5424 兼容格式。syslog rfc3164 rfc5424 rfc5424micro | --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) |