©
本文档使用 PHP中文网手册 发布
fluentd
日志记录驱动程序发送容器日志到 Fluentd 集电极结构化日志数据。然后,用户可以使用 Fluentd 的各种输出插件将这些日志写入各个目标。
除了日志消息本身之外,fluentd
日志驱动程序还会在结构化日志消息中发送以下元数据:
领域(范畴) | 描述 |
---|---|
container_id | 完整的64个字符的容器 ID。 |
container_name | 容器名称在启动时。如果使用 docker rename 重命名容器,则新名称不会反映在日记帐分录中。 |
source | stdout 或 stderr |
docker logs
命令不适用于此日志记录驱动程序。
通过根据需要指定--log-opt
多次来支持一些选项:
fluentd-address
:指定一个套接字地址来连接到 Fluentd 守护进程,ex fluentdhost:24224
或unix:///path/to/fluentd.sock
tag
:指定 fluentd 消息的标签,其解释一些标记,ex{{.ID}}
,{{.FullID}}
或{{.Name}}
docker.{{.ID}}
要将fluentd
驱动程序用作默认日志记录驱动程序,请将该键log-driver
和log-opt
键设置daemon.json
为位于/etc/docker/
Linux 主机或C:\ProgramData\docker\config\daemon.json
Windows Server 上的文件中的适当值。有关+使用 Docker 配置的更多信息daemon.json
,请参阅+ daemon.json。
以下示例将日志驱动程序设置为fluentd
并设置fluentd-address
选项。
{ "log-driver": "fluentd", "log-opts": { "fluentd-address": "fluentdhost:24224" } }
重新启动 Docker 以使更改生效。
要为特定容器设置日志记录驱动程序,请将--log-driver
选项传递给docker run
:
docker run --log-driver=fluentd ...
在使用此日志记录驱动程序之前,请启动 Fluentd 守护进程。日志记录驱动程序localhost:24224
默认连接到此守护程序。使用该fluentd-address
选项连接到不同的地址。
docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
如果容器无法连接到 Fluentd 守护进程,则容器将立即停止,除非使用该fluentd-async-connect
选项。
用户可以使用该--log-opt NAME=VALUE
标志来指定其他 Fluentd 日志记录驱动程序选项。
默认情况下,日志记录驱动程序连接到localhost:24224
。提供fluentd-address
连接到不同地址的选项。支持tcp
(默认)和unix
套接字。
docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224docker run --log-driver=fluentd --log-opt fluentd-address=tcp://fluentdhost:24224docker run --log-driver=fluentd --log-opt fluentd-address=unix:///path/to/fluentd.sock
以上两项指定了相同的地址,因为它tcp
是默认的。
默认情况下,Docker 使用容器 ID 的前12个字符来标记日志消息。请参阅日志标记选项文档以定制日志标记格式。
在labels
和env
选项各取一个逗号分隔的密钥列表。如果label
和env
键之间存在冲突,env
则优先。这两个选项都将附加字段添加到日志消息的额外属性中。
env-regex
选项类似于并兼容env
。它的值是一个正则表达式来匹配与日志相关的环境变量。它用于高级日志标记选项。
Docker 在后台连接到 Fluentd。消息被缓存直到连接建立。
刷新到磁盘之前要缓冲的数据量。默认为容器可用的 RAM 数量。
重试之间需要等待多长时间。默认为1秒。
最大重试次数。默认为10。
关于Fluentd
本身,看到 项目的网页 和 其文件。
要使用此日志记录驱动程序,请在主机上启动fluentd
守护程序。我们建议您使用Fluentd泊坞窗图像。如果要在每台主机上聚合多个容器日志,则此图像特别有用,然后将日志传输到另一个 Fluentd 节点以创建聚合存储。
1. 写一个配置文件(test.conf
)来转储输入日志:<type> @type forward </ source> <match \ *> @type stdout </ match>
2. 使用此配置文件启动 Fluentd 容器:
$ docker run -it -p 24224:24224 -v /path/to/conf/test.conf:/fluentd/etc/test.conf -e FLUENTD_CONF = test.conf fluent / fluentd:latest
3. 使用fluentd
日志记录驱动程序启动一个或多个容器:
$ docker run --log-driver=fluentd your/application