Health相关的API

GET _cluster/health
GET _cluster/health?level=indices 所有索引的健康状态(查看有问题的索引)
GET _cluster/health/myindex 单个索引的健康状态
GET _cluster/health?level=shards 分片级的索引
GET _cluster/allocation/explain 返回第一个未分配shard的原因

分片没有被分配的可能原因

indexer_create:创建索引导致,在索引的全部分片分配完成之前,会有短暂的Red,一般不一定代表有问题
cluster_recover:集群重启阶段,会有这个问题
index_reopen:打开一个之前close的索引
dangling_index_imported:一个节点离开集群期间,有索引被删除,节点重新返回时,会导致Dangling问题
https://www.elastic.co/guide/en/elasticsearch/reference/7.1/cat-shards.html

常见问题与解决方法

  • 集群变红,需要先检查是否有节点离线,如果有,可以尝试重启离线的节点
  • 由于配置导致,需要修复相关的配置(例如错误的box_type,错误的副本数)
  • 磁盘空间限制,分片规则Shard Filtering引发,需要调整规则或者增加节点
  • 对于节点返回集群,导致的dangling变红,可直接删除dangling索引

Red&Yellow是集群运维常见问题,除了集群故障,一些创建增加副本等操作,都会导致集群短暂的Red和Yellow,所以监控和报警需要设置一定的延时
通过相关API检查节点,分片分配找到真正的原因
可以指定Move或者Reallocate分片