流利的日志记录驱动程序
预计阅读时间:5分钟
该fluentd
日志记录驱动程序发送容器日志到
Fluentd集电极结构化日志数据。然后,用户可以使用Fluentd的各种输出插件中的任何一个将这些日志写入各个目的地。
除了日志消息本身之外,fluentd
日志驱动程序还在结构化日志消息中发送以下元数据:
场地 | 描述 |
---|---|
container_id |
完整的64个字符的容器ID。 |
container_name |
启动时的容器名称。如果docker rename 用于重命名容器,则新名称不会反映在日记帐分录中。 |
source |
stdout 或者 stderr |
log |
容器日志 |
该docker logs
命令不适用于此日志记录驱动程序。
用法
通过指定--log-opt
所需的次数来支持某些选项:
fluentd-address
:指定套接字地址以连接到Fluentd守护程序,例如exfluentdhost:24224
或unix:///path/to/fluentd.sock
tag
:指定fluentd消息的标签,其解释一些标记,离{{.ID}}
,{{.FullID}}
或{{.Name}}
docker.{{.ID}}
要将fluentd
驱动程序用作默认的日志记录驱动程序,请在Linux主机或Windows Server上
的文件中将log-driver
和log-opt
键设置为适当的值。有关+配置Docker使用的更多信息,请参见+ daemon.json。daemon.json
/etc/docker/
C:\ProgramData\docker\config\daemon.json
daemon.json
下面的示例将日志驱动程序fluentd
设置为并设置
fluentd-address
选项。
{
"log-driver": "fluentd",
"log-opts": {
"fluentd-address": "fluentdhost:24224"
}
}
重新启动Docker以使更改生效。
笔记
log-opts
配置daemon.json
文件中的配置选项必须以字符串形式提供。因此,布尔值和数字值(例如fluentd-async
或的值fluentd-max-retries
)必须用引号("
)括起来。
要为特定容器设置日志记录驱动程序,请将--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
选项,否则容器将立即停止。
选项
用户可以使用该--log-opt NAME=VALUE
标志来指定其他Fluentd日志记录驱动程序选项。
流利的地址
默认情况下,日志记录驱动程序连接到localhost:24224
。提供fluentd-address
连接到其他地址的
选项。tcp
(默认)和unix
套接字受支持。
docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
docker run --log-driver=fluentd --log-opt fluentd-address=tcp://fluentdhost:24224
docker run --log-driver=fluentd --log-opt fluentd-address=unix:///path/to/fluentd.sock
上面的两个指定了相同的地址,因为这tcp
是默认设置。
标签
默认情况下,Docker使用容器ID的前12个字符标记日志消息。请参阅日志标签选项文档以自定义日志标签格式。
标签,labels-regex,env和env-regex
在labels
和env
选项各取一个逗号分隔的密钥列表。如果label
和env
键之间有冲突,则以值env
优先。这两个选项都将其他字段添加到日志消息的其他属性中。
在env-regex
和labels-regex
选项类似于并兼容分别env
和labels
。它们的值是正则表达式,以匹配与日志记录相关的环境变量和标签。它用于高级
日志标记选项。
流利的异步
Docker在后台连接到Fluentd。消息被缓冲,直到建立连接。默认为false
。
流利缓冲区限制
设置在内存中缓冲的事件数。记录将被存储在内存中,直到该数字为止。如果缓冲区已满,则记录日志的调用将失败。默认值为8192.(https://github.com/fluent/fluent-logger-golang/tree/master#bufferlimit)
流利的重试等待
重试之间要等待多长时间。默认为1秒。
流利的最大重试次数
最大重试次数。默认为4294967295
(2 ** 32-1)。
流利的亚秒精度
生成纳秒级分辨率的事件日志。默认为false
。
使用Docker进行Fluentd守护程序管理
要使用此日志记录驱动程序,请fluentd
在主机上启动守护程序。我们建议您使用Fluentd docker映像。如果要在每个主机上聚合多个容器日志,然后再将日志传输到另一个Fluentd节点以创建聚合存储,则此映像特别有用。
测试容器记录器
-
编写配置文件(
test.conf
)以转储输入日志:<source> @type forward </source> <match *> @type stdout </match>
-
使用以下配置文件启动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
-
使用
fluentd
日志记录驱动程序启动一个或多个容器:$ docker run --log-driver=fluentd your/application