Elasticsearch,8个应用需要多少个集群,多少个索引

Elasticsearch, how many clusters, indexes do I need for 8 applications

我设置了一个 ELK Stack 并从我的两个应用程序中接受日志数据,一切正常。它已经 运行 25 天了,我在 25GB 服务器上有将近 4GB 的 Data/Documents。

我的问题

我总共有 8 个应用程序想要连接到我的 ELK Stack。

一个集群是否可以,还是我需要添加更多集群?为每个应用程序数据说一个集群?如果是这样,我该怎么做而不必重新索引我的数据?

为什么群集运行状况显示“黄色(488 中的 244)”?

我是否应该为每个应用程序编制索引以在其自己的索引而不是默认的“logstash-{todays-date}”上编制索引。比如 my-app-1-{todays-date}my-app-2-{todays-date} 等.?

非常感谢您的帮助

G

您的集群是黄色的,因为您的 logstash-* 索引配置了 1 个副本,并且您可能只有一个节点。 244 of 488 表示您的所有索引中有 488 个分片,但只有 244 个分配给您的单个节点,还有 244 个分配给新节点。这本身不是问题,但如果您当前的节点由于某种原因发生故障,您可能会丢失一些数据,而如果您有 2 个以上的节点,数据将被复制到其他节点上,您的集群将是绿色的(您会看到 488 of 488)并且丢失数据的风险会降低。

关于您的第二个问题,没有什么能阻止您将八个应用程序的所有日志存储在相同的每日 logstash 索引中。您只需要确保您的 logstash 配置考虑到每个不同的应用程序,并将一个带有应用程序名称的字段(例如 app: app1app: app2 等)添加到索引日志事件中,以便您可以区分在 Kibana 中,每个日志事件都是从哪个应用发出的。

我只用过Elasticsearch,没有用过完整的ELK栈,不过可以给点思路,猜猜是怎么回事。 488 = 2 x 244 ,所以我猜单机集群中有未分配的副本分片。您可以临时 update 此设置并将其设置为零:

curl -XPUT 'localhost:9200/my_index/_settings' -d ' {"index" : {"number_of_replicas" : 0}}'

当您 运行 只是一台机器时,您应该更新 logstash 索引模板以不使用副本。此外,您的分片大小似乎只有 20 MB 左右,因此我建议每个索引只使用一个分片而不是五个,每个分片都会消耗额外的资源。拥有多个分片会提高索引速度但会减慢查询速度,您应该检查一个是否足够。

如果仪表板主要是特定于应用程序的,则索引/应用程序/天将加快查询速度,并且您可以创建一个特定于日期的别名以供跨应用程序查询使用。