【问题标题】:Redirect docker daemon logs to elasticsearch将 docker 守护进程日志重定向到 elasticsearch
【发布时间】:2019-01-03 12:29:46
【问题描述】:

我有一个 docker swarm 集群,并且能够将所有 docker“容器”日志获取到 ELK 堆栈。

但我无法获取 docker 守护进程日志。有人可以指导我实现这一目标。

仅供参考:我的堆栈在 Linux 中。

【问题讨论】:

  • 您找到解决方案了吗?即使我发布了答案,我也对更好的解决方案感兴趣。

标签: docker docker-swarm elastic-stack


【解决方案1】:

您可以使用 Filebeat 插件将日志从守护程序日志文件发送到您的 ELK (plugin presentation page.

关于这一点有一篇文章on the elasic.co blog。您的配置会有所不同,因为您不需要容器日志,而是在路径 /var/log/docker.log/var/log/daemon.log 找到 Docker 守护程序日志。

编辑 1:

由于在您的环境中,日志可以通过journalctl 读取,我在网上挖掘并找到了一个允许您从journald 发送日志的ELK 插件:https://github.com/logstash-plugins/logstash-input-journald

我希望它会有所帮助。

【讨论】:

  • 你可以参考Sabinpost about Docker daemon logs file也许
  • 我在 journalctl 下获取 docker 日志,但无法将它们重定向到 ELK。
  • 我更新了我的答案,因为我发现你的情况可能很有趣。
【解决方案2】:

第一个:您需要找出您的 docker 守护程序将日志保存在哪里,这取决于 linux 发行版。请参阅此回复以及可能的地点列表:

https://stackoverflow.com/a/30970134/3165889

2nd:你可以参考 Paul Rey 的建议,使用 Filebeat。作为替代方案,我还建议使用 Fluentd,通常您可以使用它来代替 Logstash,然后使用 EFK 代替 ELK,或者只是作为 ELK 环境的额外工具。

它也可以使用tail input plugin从文件中读取

它还可以使用elasticsearch out plugin向Elasticsearch插入数据

本教程教授如何记录容器,但您需要将输入插件更改为该文件的尾部:Docker logging via EFK

我还想补充一点,如果您对记录守护进程感兴趣,即使 docker 无法启动,您也可能想要记录。所以我会直接在主机上安装 Fluentd。 在容器中。

【讨论】:

  • 我可以从 journalctl 获取日志,但是如何从那里持续将日志推送到 ELK?
  • 这意味着您可能已经 systemd 记录了您的进程。 journalctl 由 systemd 使用,但将日志保存到二进制文件。这就是为什么您必须使用它来读取日志的原因。不过,如果幸运并且拥有更新版本的 systemd,您可以设置 systemd 以将日志保存到特定文件,请参阅:stackoverflow.com/a/48052152/3165889。将其写入文件后,您可以简单地使用 fluentd 的尾部输入插件
  • 另一个选项,我没有测试过,但看起来有人已经写了一个插件来集成 systemd journal 和 fluend:github.com/reevoo/fluent-plugin-systemd
猜你喜欢
  • 1970-01-01
  • 2015-09-07
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
相关资源
最近更新 更多