我正在使用docker。我的日志文件在一个docker中,logstash在另一个docker中运行。
input {
file {
path => "/folder/file.log"
start_position => "end"
id => "file"
}
}
我怎么知道从docker1提取输入文件
答案 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
}
}