运用 filebeat 在每个容器中都是反对的 Docker 的哲学。这将浪费资源,并有更多的管理开销。
filebeat
Docker
您可以使用本地日志文件 logstash 。
logstash
示例配置:
input { file { path => "/var/log/apache.log" type => "apache-access" # a type to identify those logs (will need this later) start_position => "beginning" } }
现在我们必须使日志文件本地化 logstash 容器:
如果你正在使用 bind mounts 您可以在logstash容器中安装相同的目录。
bind mounts
sudo docker run -d -v /path/to/logs/:/path/to/logs/in/container logstash
如果你正在使用 volumes 您也可以将包含日志的相同卷挂载到logstash。
volumes
sudo docker run -d -v logvol:/path/to/logs/in/container logstash
SEBP / ELK是解决这个问题的错误工具。相反,我应该使用一个项目来为ELK堆栈的每个元素旋转一个容器:Elasticsearch,Logstash和Kibana。我在GitHub上找到了这样一个存储库。
该 deviantony /搬运工-麋鹿 project将三个ELK元素组合成一组工作容器。关于这一点的好处在于,与SEBP / ELK项目不同,deviantony / docker-elk并没有对应该提供哪些功能以及应该关闭哪些功能采取自以为是的看法。在SEBP / ELK项目中,删除了写入端口5000的功能,当您尝试通过自定义logstash.conf文件将其添加回来时,UDP侦听器最终会失败。相反,deviantony / docker-elk项目才有效。
奖励积分:此项目还有一个包含X-Pack的分支,它可以立即添加最小的安全层。