Fluentd 日志记录驱动程序

日志记录驱动程序fluentd将容器日志 作为结构化日志数据发送到Fluentd收集器。然后,用户可以使用 Fluentd 的各种输出插件中的任何一个将这些日志写入到各个目的地。

除了日志消息本身之外,fluentd日志驱动程序还会在结构化日志消息中发送以下元数据:

场地描述
container_id完整的 64 字符容器 ID。
container_name启动时的容器名称。如果您使用docker rename重命名容器,新名称不会反映在日记帐分录中。
sourcestdout或者stderr
log容器日志

用法

--log-opt通过根据需要指定任意次数来支持某些选项:

  • fluentd-address:指定连接到 Fluentd 守护进程的套接字地址,例如fluentdhost:24224unix:///path/to/fluentd.sock.
  • tag:为 Fluentd 消息指定标签。支持一些 Go 模板标记,例如{{.ID}}或.{{.FullID}}{{.Name}} docker.{{.ID}}

要将fluentd驱动程序用作默认日志记录驱动程序,请将log-driverlog-opt键设置为文件中的适当值daemon.json,该文件位于/etc/docker/Linux 主机或 C:\ProgramData\docker\config\daemon.jsonWindows Server 上。有关使用配置 Docker 的更多信息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 个字符来标记日志消息。有关自定义日志标签格式的信息,请参阅 日志标签选项文档。

标签、标签正则表达式、env 和 env-regex

labels和选项env各自采用逗号分隔的键列表。如果label和键之间发生冲突env,则 的值env优先。这两个选项都将附加字段添加到日志消息的额外属性中。

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

fludd 异步

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

fluidd 异步重新连接间隔

fluentd-async启用后,该选项定义重新建立fluentd-async-reconnect-interval连接的时间间隔(以毫秒为单位) 。fluentd-address如果地址解析为一个或多个 IP 地址(例如 Consul 服务地址),则此选项很有用。

fluidd 缓冲区限制

设置内存上缓冲的事件数。内存中将存储最多此数量的记录。如果缓冲区已满,记录日志的调用将会失败。默认值为 1048576。( https://github.com/ Fluent/ Fluent-logger-golang/ tree/master# bufferlimit )

fluidd-重试-等待

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

flud-最大重试次数

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

flud 亚秒级精度

生成纳秒分辨率的事件日志。默认为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