logstash输入文件配置-从不同的docker

时间:2019-03-23 08:19:02

标签: docker logstash

我正在使用docker。我的日志文件在一个docker中,logstash在另一个docker中运行。

input {
  file {
    path => "/folder/file.log"
    start_position => "end"
    id => "file"
  }
}

我怎么知道从docker1提取输入文件

1 个答案:

答案 0 :(得分:1)

有不同的方法可以实现这一目标。首先,只需使用volumes在多个容器之间共享数据。一个容器将数据写入卷,另一个容器-读取。

示例:

docker volume create foo
docker run -d --name writer -v foo:/var/log <image-name>
docker run -d --name logstash -v foo:/folder:ro <logstash-blah-blag>

请注意,我已将logtash设置为只读ro模式的卷,因为它只需要读访问权限。在此配置中,容器1写入/var/log文件夹中的所有数据在logstash中将显示为/folder

第二种方法更好,恕我直言-使用tcp/ip代替卷。您需要在容器1中设置FileBeat(Elastic的另一个工具)并将其配置为将数据发送到logstash。然后,只需在logstash中使用beats输入即可,而不是file。示例:

input {
    beats {
        port => 5400
    }
}