为Docker Logstash映像设置日志位置

我正在尝试创build一个Logstash与自定义http进行交互的Docker镜像。 想知道如何设置Logstash将要读取的日志位置的物stream。 Logstash进程在EC2上运行,并将使用基于文件的input从Apache,HAProxy,Jboss应用程序读取。 如果有人能够更多地指出这一点,将非常感激。

由Apache,HAProxy,Jboss以及其他任何你想用Logstash Docker容器生成的日志文件都应该保留在它们通常所在的位置,并且在docker run命令中特别引用。 你获得:

  1. 无需更改您当前的服务configuration。
  2. 不必记住/定位主机上的日志文件,以防出现问题,而且您需要直接访问文件本身。 他们将在你习惯的地方。

您需要做的是将日志文件从原来的位置映射到正在运行的Docker容器。 你可以这样做到容器内的同一目录,或者分开目录,这取决于你。 如果您没有任何文件名冲突,我会将所有文件映射到容器内的相同目录。 一个例子是这样的:

 docker run -v /var/log/haproxy/error.log:/host/logs/haproxy_error.log \ -v /var/log/httpd/access_log:/host/logs/apache_access.log \ -v /var/log/some_other_log.log:/host/logs/some_other_log.log \ my-logstash-docker-image:latest 

您将必须确保Docker容器内的Logstashconfiguration在以下位置查找文件:

  • /host/logs/haproxy_error.log
  • /host/logs/apache_access.log
  • /host/logs/some_other_log.log

你可以看看我为Logz.io日志托运者 Docker镜像做了些什么类似的映射。