流利的日志记录驱动程序

预计阅读时间: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:24224unix:///path/to/fluentd.sock
  • tag:指定fluentd消息的标签,其解释一些标记,离{{.ID}}{{.FullID}}{{.Name}} docker.{{.ID}}

要将fluentd驱动程序用作默认的日志记录驱动程序,请在Linux主机或Windows Server上 的文件中将log-driverlog-opt键设置为适当的值。有关+配置Docker使用的更多信息,请参见+ daemon.jsondaemon.json/etc/docker/C:\ProgramData\docker\config\daemon.jsondaemon.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

labelsenv选项各取一个逗号分隔的密钥列表。如果labelenv键之间有冲突,则以值env优先。这两个选项都将其他字段添加到日志消息的其他属性中。

env-regexlabels-regex选项类似于并兼容分别envlabels。它们的值是正则表达式,以匹配与日志记录相关的环境变量和标签。它用于高级 日志标记选项

流利的异步

Docker在后台连接到Fluentd。消息被缓冲,直到建立连接。默认为false

流利缓冲区限制

设置在内存中缓冲的事件数。记录将被存储在内存中,直到该数字为止。如果缓冲区已满,则记录日志的调用将失败。默认值为8192.(https://github.com/fluent/fluent-logger-golang/tree/master#bufferlimit)

流利的重试等待

重试之间要等待多长时间。默认为1秒。

流利的最大重试次数

最大重试次数。默认为4294967295(2 ** 32-1)。

流利的亚秒精度

生成纳秒级分辨率的事件日志。默认为false

使用Docker进行Fluentd守护程序管理

关于Fluentd自己,看到该项目的网页其文件

要使用此日志记录驱动程序,请fluentd在主机上启动守护程序。我们建议您使用Fluentd docker映像。如果要在每个主机上聚合多个容器日志,然后再将日志传输到另一个Fluentd节点以创建聚合存储,则此映像特别有用。

测试容器记录器

  1. 编写配置文件(test.conf)以转储输入日志:

     <source>
       @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
    
流利的泊坞窗日志驱动