为什么我的 Amazon Elasticsearch Service 域中 Kibana 呈红色状态?

上次更新时间:2020 年 5 月 7 日

Kibana 在我的 Amazon Elasticsearch Service (Amazon ES) 域中一直呈红色状态。为什么会发生这种情况?如何排查此问题?

简短描述

当 Elasticsearch 集群的每个节点都通过所有运行状况检查时,Kibana 显示绿色状态。如果运行状况检查未通过,Kibana 进入红色状态。当 Amazon ES 处于红色集群状态时,Kibana 也会显示红色状态。Kibana 的状态可能会因以下原因变为红色:

  • 因 Amazon Elastic Compute Cloud (Amazon EC2) 实例或 Amazon Elastic Block Store (Amazon EBS) 卷的问题导致的节点故障。有关节点崩溃的更多信息,请参阅为什么我的 Amazon Elasticsearch Service 节点会崩溃?
  • 您的节点内存不足。
  • 将 Elasticsearch 升级到更新的版本。
  • Kibana 与 Amazon ES 版本之间不兼容。
  • 单一节点集群在重负载下运行,没有专用的主节点。专用主节点也可能无法到达。有关 Amazon ES 如何提高集群稳定性的更多信息,请参阅专用主节点

解决方法

使用以下一个或多个方法来解决 Amazon ES 域上的 Kibana 红色状态。

注意:如果 Elasticsearch 集群显示断路器异常,则首先增加短路器限值。如果您没有断路器异常,则在增加断路器限值之前尝试其他方法。

调整查询

如果您正在运行复杂查询,如重度聚合,则要调整查询以获得最佳性能。堆内存消耗的突然激增可能是由用于聚合查询的字段数据或数据结构引起的。

查看以下 API 调用,以确定激增的原因,从而将 es-endpoint 替换为 Amazon ES 域终端节点:

$curl es-endpoint/_nodes/stats/breaker?pretty
$curl "es-endpoint/_nodes/stats/indices/fielddata?level=indices&fields=*"

有关管理内存使用的更多信息,请参阅 Elasticsearch 文档上的调整以优化搜索速度限制内存使用量

使用专用主节点

最佳实践是为每个 Amazon ES 域分配三个专用主节点。有关提高集群稳定性的更多信息,请参阅开始使用 Amazon Elasticsearch Service:使用专用主实例提高集群稳定性

纵向扩展

要纵向扩展您的 Amazon ES 域,请增加节点数量或选择拥有更多内存的 Amazon EC2 实例类型。有关扩展的更多信息,请参阅 如何纵向扩展我的 Amazon Elasticsearch Service 域?

检查您的分区分布

检查您的分区正提取到的索引,以确认它们均匀分布在所有的数据节点中。如果您的分区分布不均匀,一个或多个数据节点可能会耗尽存储空间。

使用以下公式来确认分区是否均匀分布: 

Total number of shards = shards per node * number of data nodes

例如,如果索引中有 24 个分区且有八个数据节点,每个节点应有三个分区。有关所需分区数量的更多信息,请参阅开始使用 Amazon Elasticsearch Service:我需要多少个分区?

检查您的版本

重要提示:您的 Kibana 和 Amazon ES 版本必须兼容。

运行以下 API 调用,以确认您的版本兼容,从而将 es-endpoint 替换为您的 Amazon ES 域终端节点: 

$curl es-endpoint/.kibana/config/_search?pretty

注意:如果命令不成功,可能表示 Kibana 与支持的 Elasticsearch 版本之间存在兼容问题。有关兼容的 Kibana 和 Elasticsearch 版本的更多信息,请参阅 Elasticsearch 网站上的设置 Kibana

监控资源

设置 Amazon CloudWatch 警报,以在资源使用超过特定阈值时通知您。例如,如果您为 JVM 内存压力设置警报,则可以在压力达到 100% 之前采取措施。有关 CloudWatch 警报的更多信息,请参阅推荐的 CloudWatch 警报使用 Amazon CloudWatch 通过自动警报提高 Amazon Elasticsearch Service 域的运营效率

增加断路器限值

要防止集群耗尽内存,请尝试增加父级或现场数据断路器限值。有关现场数据断路器限值的更多信息,请参阅 Elasticsearch 网站上的断路器