我正在使用docker。我的日志文件在一个docker中,在另一个docker中运行的logstash。
input {
file {
path => "/folder/file.log"
start_position => "end"
id => "file"
}
}
我如何从Docker1
有不同的方法可以实现这一目标。首先只使用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>
注意,我的logStash中的 ro
mode已安装卷,因为它只需要读取访问。在此配置中,所有数据中的所有数据都将其写入/var/log
文件夹中的所有数据将在Logstash中可见为/folder
。
第二种方法更好 - 使用tcp/ip
代替卷。您需要在容器1中设置FileBeat(弹性的另一个工具),并将其配置为将数据发送到LogStash中。然后只需在LogStash中使用beats
而不是file
输入即可。示例:
input {
beats {
port => 5400
}
}