Fluentd 日志记录驱动程序
日志记录驱动程序fluentd
将容器日志
作为结构化日志数据发送到Fluentd收集器。然后,用户可以使用
Fluentd 的各种输出插件中的任何一个将这些日志写入到各个目的地。
除了日志消息本身之外,fluentd
日志驱动程序还会在结构化日志消息中发送以下元数据:
场地 | 描述 |
---|---|
container_id | 完整的 64 字符容器 ID。 |
container_name | 启动时的容器名称。如果您使用docker rename 重命名容器,新名称不会反映在日记帐分录中。 |
source | stdout 或者stderr |
log | 容器日志 |
用法
--log-opt
通过根据需要指定任意次数来支持某些选项:
fluentd-address
:指定连接到 Fluentd 守护进程的套接字地址,例如fluentdhost:24224
或unix:///path/to/fluentd.sock
.tag
:为 Fluentd 消息指定标签。支持一些 Go 模板标记,例如{{.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-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
相似且兼容。它们的值是正则表达式,用于匹配与日志记录相关的环境变量和标签。它用于高级
日志标记选项。env
labels
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 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