【发布时间】:2019-01-03 12:29:46
【问题描述】:
我有一个 docker swarm 集群,并且能够将所有 docker“容器”日志获取到 ELK 堆栈。
但我无法获取 docker 守护进程日志。有人可以指导我实现这一目标。
仅供参考:我的堆栈在 Linux 中。
【问题讨论】:
-
您找到解决方案了吗?即使我发布了答案,我也对更好的解决方案感兴趣。
标签: docker docker-swarm elastic-stack
我有一个 docker swarm 集群,并且能够将所有 docker“容器”日志获取到 ELK 堆栈。
但我无法获取 docker 守护进程日志。有人可以指导我实现这一目标。
仅供参考:我的堆栈在 Linux 中。
【问题讨论】:
标签: docker docker-swarm elastic-stack
您可以使用 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
我希望它会有所帮助。
【讨论】:
第一个:您需要找出您的 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。 不在容器中。
【讨论】: