当前位置: 首页 > 面试题库 >

在三台服务器上设置ELK堆栈的最佳方法

诸葛阳成
2023-03-14
问题内容

我正在寻找建立一个ELK堆栈,并拥有三台服务器。虽然我找到了大量有关如何实际安装和配置elasticsearch,logstash和kibana的文档和教程,但我发现有关如何在服务器上设置软件以最大限度地提高性能的信息较少。例如,最好在所有三个实例上设置elasticsearch,logstash和kibana,或者在两个实例上安装elasticsearch并在第三个实例上安装logstash和kibana?

与此问题相关,如果我的集群中有多台Elasticsearch服务器,我是否需要一个负载均衡器来将请求分发给它们,还是可以将数据发送到一台服务器,并将其相应地分发?


问题答案:

您的计算机的大小也很重要。三台具有8GB RAM的计算机与三台具有64GB或更多RAM的计算机…

Kibana占用的资源很少。Logstash占用较多CPU。Elasticsearch的RAM较多。

对于Elasticsearch集群,通常需要每个分片的副本以实现冗余。通常是使用两个服务器来完成的。如果您拥有第三台Elasticsearch服务器,那么您将获得IO提升(将数据的两个副本写入三个服务器可降低负载)。另外,偶数个服务器可能会混淆哪个是主服务器,因此三个服务器将有助于防止“脑裂”问题。

这两个或三个节点将是“数据”节点,因此,如果向它们抛出查询或索引请求,它们可能需要将请求移至另一台服务器(带有数据的服务器等)。请求还具有“减少”阶段,其中来自每个节点的数据在返回之前被合并。拥有一个较小的“客户端”节点(查询和索引请求可以到达的节点)可以帮助实现这一点。当然,您需要两个,以使其冗余。

Logstash最好是在多线程上运行,因此拥有多个可专用的CPU很好。拥有冗余/负载平衡的logstash机器也很好。Kibana也可以在这些机器上运行。

因此,我们最多可以拥有7台计算机。不是您想听的,对吗?

如果您严格限于三台计算机,则如上所述,您希望对所有三台计算机运行elasticsearch。您需要在其他地方穿鞋拔子。

Logstash在两个上,kibana在一个上?这样,kibana就会出现单点故障。

三者的logstash和三者的kibana怎么样?负载将分布在周围,因此希望每个服务器的负载增量很小。而且,如果机器足够坚固,应该没问题。

我在一个群集中运行logstash的计算机,

一般建议是为Elasticsearch分配1/2的系统RAM(最大31GB),其余部分留给操作系统。如果要在同一台计算机上运行logstash和kibana,则希望将其降低(可能降至40%?),为logstash分配一些(15%?),然后将其余部分留给操作系统。

显然,机器的大小在这里很重要。



 类似资料:
  • 我对麋鹿栈没有太多的经验,我基本上只知道基础。 某些东西,即filebeat获取数据并将其发送到logstash Logstash 处理它并发送它 弹性搜索 Kibana 使用弹性搜索来可视化数据 (我希望这是正确的) 我需要创建一个elk系统,其中来自三个不同项目的数据被传递、存储和可视化。 项目号1。使用MongoDB,我需要将1个表中的所有信息放入kibana 项目2.也使用MongoDB,

  • 问题: 如何设置日志塔什ELK堆栈的多个http输入 我已经拥有的: <李>工作麋鹿码头工人形象基于:https://github.com/deviantony/docker-elk < li >工作日志存储-输入-http-插件基于:https://www . elastic . co/blog/introducing-log stash-input-http-plugin < li >我的lo

  • 我正在使用logstash进行集中式日志记录。我在托运人节点上使用logstash转发器,在收集器节点上使用ELK堆栈。我想知道日志存储在elasticsearch中的位置,我没有看到日志所在位置创建的任何数据文件stored.Do有人知道吗?

  • 问题内容: 我目前有一个使用filebeat作为日志发送程序的体系结构,该结构将日志发送到日志存储索引器实例,然后发送到AWS中的托管elasticsearch。由于存在持续的TCP连接,因此我无法使用AWS ELB多个日志存储索引器实例进行负载平衡,因为文件信号始终会选择这些实例并将其发送到那里。所以我决定使用redis。现在,看到扩展redis并使之在ELK堆栈中具有高可用性组件是多么困难,我

  • 现在启动此服务的代码如下所示 不幸的是,日志语句没有包含在我的两个用户使用的版本中,但间接证据非常令人信服,即满足了进行startForegroundService()调用的适当条件。对于大多数用户来说,这很好,但对于这两个用户,请求的服务从未启动。没有引发异常,系统日志报告 W ActivityManager:不允许后台启动:service Intent{act=net.anei.cadpage

  • 我对Java没什么概念。 我浏览了一些链接,发现博客上写着“存储在堆栈上的Java原语”,我觉得这取决于实例变量或局部变量。 经过几个环节,我的结论是, 类变量(原语)作为对象的一部分存储在堆中。 类变量——对象(用户定义)——作为对象的一部分存储在堆中。这对于参考对象和实际对象都是正确的。 方法变量——基元——作为堆栈框架的一部分存储在堆栈上。 方法变量-对象(用户定义)-存储在堆上,但是对堆上