典型的ElasticSearch / Logstash / Kibana部署模型是什么样的

时间:2018-02-12 16:33:59

标签: docker elasticsearch kibana filebeat

作为docker / elastic搜索世界的新手,我正在尝试在我的一个项目中构建一个使用弹性搜索的部署模型。 我有几个应用程序服务器,每个服务器都有一些日志。我想将所有这些日志放在一个地方。以下是我的想法。

所有应用程序服务器都安装filebeat以将数据推送到Logstash服务器(在docker镜像中)。此LogStash服务器将这些日志转发到也具有kibana的elasticsearch docker映像。

这有意义吗?可以在一个映像中使用logstash而在另一个映像中使用ElasticSearch / Kibana吗?这种方法有利有弊吗?有什么可以替代方法来构建这个?

1 个答案:

答案 0 :(得分:2)

Docker的政策是1个容器做1件事,1件好事。所以我会为ElasticSearch寻找一个docker镜像,为Kibana寻找1,为LogStash寻找一个。将它们与docker compose一起添加。

https://docs.docker.com/v17.09/engine/userguide/eng-image/dockerfile_best-practices/#use-multi-stage-builds

  

每个容器应该只有一个问题

     

将应用程序拆分为多个容器使得水平扩展和重用容器变得更加容易。例如,Web应用程序堆栈可能包含三个独立的容器,每个容器都有自己独特的映像,以分离的方式管理Web应用程序,数据库和内存缓存。

     

您可能听说应该有“每个容器一个进程”。虽然这个口头禅具有良好的意图,但每个容器应该只有一个操作系统进程并不一定正确。除了现在可以使用init进程生成容器这一事实之外,某些程序可能会自行生成其他进程。例如,Celery可以生成多个工作进程,或者Apache可以为每个请求创建一个进程。虽然“每个容器一个进程”通常是一个很好的经验法则,但它并不是一个硬性规则。使用您的最佳判断,尽可能保持容器清洁和模块化。

     

如果容器彼此依赖,您可以使用Docker容器网络来确保这些容器可以通信。