docker - logstash 输入文件配置——从不同的 docker 获取输入文件
问题描述
我正在使用 docker 。我的日志文件在一个 docker 中,而 logstash 在另一个 docker 中运行。
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>
注意我已经ro
为logstash以只读模式安装卷,因为它只需要读取访问权限。在此配置中,容器 1 写入/var/log
文件夹的所有数据都将/folder
在 logstash 中可见。
第二种方法是恕我直言更好 - 使用tcp/ip
而不是卷。您需要在容器 1 中设置FileBeat(Elastic 的另一个工具)并将其配置为将数据发送到 logstash。然后只需beats
在 logstash 中使用输入而不是file
. 例子:
input {
beats {
port => 5400
}
}
推荐阅读
- javascript - 如何创建一个在环 x9 上运行的圆圈?Javascript?
- android - Android:获取切换按钮操作而不是选定的导航项
- php - php如何防止多个用户同时登录?
- r - 我怎样才能获得夏皮罗威尔克测试
- javascript - 如何使用谷歌脚本替换字符串中的所有字符?
- python - 带有 for 循环的 Def 函数给出错误为“'int' 类型的对象没有 len()”,'发生在索引 0'
- php - 如何在ajax中解析json字符串
- python - 将张量流变量连接成一个张量
- office-js - Office 插件——如何在某些平台上提供功能,但在其他平台上不提供?
- python - Pandas DataFrame:根据多个条件填充 NaN 值