我有一个问题,有没有办法传送日志文件位于容器内的每个容器的日志。实际上,当前流程将有助于发送位于默认路径(var/lib/docker/containers//.log)中的日志文件。我想自定义 filebeat.yaml 将日志从每个容器发送到logstash,而不是默认路径。
最佳答案
如果您可以将容器设置为记录到 stdout 而不是文件,则 filebeat 看起来有一个 autodiscover mode它将捕获每个容器的docker日志
。
ELK 世界中的另一个常见设置是在主机上配置 Logstash,并设置 Docker 的日志记录选项以将容器的 stdout 上的所有输出发送到 Logstash。这使得 docker log 无法工作,但所有日志输出都可以通过 Kibana 获得。
如果您的容器进程始终写入日志文件,您可以使用 docker run -v 选项或 Docker Composevolumes: 选项将主机目录挂载到单个容器的 /var/log
目录。然后日志文件将在主机上可见,您可以使用任何基于文件的收集器来捕获它们。这是例行更改的范围,需要您在使用不同选项启动现有容器之前停止并删除它们。
关于docker - Filebeat监控容器内多个容器的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51195475/