Fluentd 日志记录驱动程序
这fluentd
logging 驱动程序将容器日志作为结构化日志数据发送到 Fluentd 收集器。然后,用户
可以使用各种输出插件中的任何一个
fluentd 将这些日志写入各种
目的地。
除了日志消息本身之外,fluentd
日志
Driver 在结构化日志消息中发送以下元数据:
田 | 描述 |
---|---|
container_id | 完整的 64 个字符的容器 ID。 |
container_name | 启动容器时的名称。如果您使用docker rename 要重命名容器,新名称不会反映在 Journal entries (日记帐条目) 中。 |
source | stdout 或stderr |
log | 容器日志 |
用法
通过指定--log-opt
根据需要多次:
fluentd-address
:指定一个 socket 地址来连接 Fluentd 守护进程,例如fluentdhost:24224
或unix:///path/to/fluentd.sock
.tag
:指定 Fluentd 消息的标签。支持一些 Go 模板标记,例如{{.ID}}
,{{.FullID}}
或{{.Name}}
docker.{{.ID}}
.
要使用fluentd
driver 作为默认的日志记录驱动程序,将log-driver
和log-opt
keys 添加到daemon.json
文件,即
位于/etc/docker/
在 Linux 主机上或C:\ProgramData\docker\config\daemon.json
在 Windows Server 上。有关
使用 配置 Dockerdaemon.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 日志记录驱动程序选项。
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
是 default。
标记
默认情况下,Docker 使用容器 ID 的前 12 个字符来标记日志消息。 请参阅 log tag option 文档进行自定义 日志标记格式。
labels、labels-regex、env 和 env-regex
这labels
和env
options 每个选项都采用以逗号分隔的键列表。如果
之间存在冲突label
和env
keys 的env
需要
优先。这两个选项都会向
logging 消息。
这env-regex
和labels-regex
选项类似于并兼容
分别env
和labels
.它们的值是要匹配的正则表达式
与日志记录相关的环境变量和标签。它用于高级日志标记选项。
Fluentd-异步
Docker 在后台连接到 Fluentd。消息将被缓冲,直到
已建立连接。默认为false
.
fluentd-async-reconnect-interval
什么时候fluentd-async
处于启用状态,则fluentd-async-reconnect-interval
选择
定义连接到fluentd-address
重新建立。如果地址
解析为一个或多个 IP 地址,例如 Consul 服务地址。
fluentd-buffer-limit 缓冲区限制
设置在内存中缓冲的事件数。记录将存储在内存中 直到这个数字。如果缓冲区已满,则 record 日志的调用将失败。 默认值为 1048576。 ( https://github.com/fluent/fluent-logger-golang/tree/master#bufferlimit)
fluentd-retry-wait
重试之间等待的时间。默认为 1 秒。
fluentd-max-retries
最大重试次数。默认为4294967295
(2**32 - 1).
流利的亚秒级精度
以纳秒级精度生成事件日志。默认为false
.
使用 Docker 管理 Fluentd 守护程序
大约Fluentd
本身,请参阅 Project 网页及其文档。
要使用此日志记录驱动程序,请启动fluentd
守护进程。我们建议
您使用 Fluentd 泊坞窗
镜像。这张图片是
如果您想在每个容器上聚合多个容器日志,则特别有用
host 然后,稍后将日志传输到另一个 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