我有一个问题,日志文件位于容器内部的情况下,有什么方法可以运送每个容器的日志。实际上,当前流程将有助于运送位于默认路径(var / lib / docker / containers / / .log)中的日志文件。我想自定义filebeat.yaml以将日志从每个容器发送到logstash,而不是默认路径。
答案 0 :(得分:2)
如果您可以将容器设置为登录到stdout而不是文件,则filebeat似乎具有autodiscover mode,它将捕获每个容器的docker logs
。
ELK世界中的另一种常见设置是在主机上配置logstash,并设置Docker的日志记录选项以将容器stdout上的所有输出发送到logstash。这使docker logs
无法正常工作,但是您的所有日志输出都可以通过Kibana获得。
如果容器进程始终写入日志文件,则可以使用docker run -v
选项或Docker Compose volumes:
选项将主机目录安装到单个容器的/var/log
目录上。然后,日志文件将在主机上可见,并且您可以使用任何基于文件的收集器来捕获它们。这是例行更改的领域,要求您先停止并删除现有容器,然后再使用其他选项启动它们。