我有将所有日志写入 Journald 的 docker 容器。我已将这两个标志添加到 docker run 命令
--log-driver=journald
--log-opt tag="docker.test"
当我使用journalctl CONTAINER_NAME=test-docker查看日志时,我清楚地看到了我在--log-opt tag="docker.{{.Name}}"中定义的标签
Mar 23 06:33:57 sethnpl025 "docker.test"[1534]: {"thread":"localhost-startStop-1","level":"INFO","loggerName":.......
我的主要目标是从 journald 中获取这些日志,并使用 Fluentd 将它们写入 Google Cloud 日志记录。但问题是,当我尝试使用Fluentd中的 SYSLOG_IDENTIFIER 过滤日志时,我什么也没得到。正如我在 docker 文档中阅读的(如果我阅读正确),设置--log-opt tag="xxxx"将设置CONTAINER_TAG和SYSLOG_IDENTIFIER
我的 Fluentd 配置是
@type systemd
tag test
path /var/log/journal
<storage>
@type local
persistent true
path /var/log/fluent/journal.pos
</storage>
matches [{ "SYSLOG_IDENTIFIER": "docker.test" }]
read_from_head true
</source>
我的主要问题是如何使用SYSLOG_IDENTIFIER过滤来自 fluentd 的日志,或者我在这里做错了什么?