Elasticsearch에서 cluster status가 red가 되는 문제 해결

개요



elasticsearch를 운용하고 있으면 자신의 오피미스 등으로 cluster status가 red가 될 수 있다. unsigned인 인덱스가 삭제 가능할 때는, 삭제하는 것으로 cluster의 status를 green로 할 수가 있다.

환경



Elasticsearch 버전 6.5.1

클러스터 상태 보기



Elasticsearch 클러스터의 상태는/_cluster/health API에서 확인할 수 있습니다. 확인해 보면 아래의 예에서는 status가 red가 되어 있습니다.
$ curl localhost:9200/_cluster/health?pretty=true
{
  "cluster_name" : "prd-hogehoge-cluster",
  "status" : "red",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 27,
  "active_shards" : 54,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 10,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 84.375
}

kibana에서도 확인해 보면, 상태가 red가 되어 있습니다.


/_cluster/health API를 보면 unassigned_shards가 있음을 알 수 있습니다.
어떤 shard가 unsignned인지 확인해 봅시다.
$ curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason
.monitoring-es-6-2019.01.03     0 r STARTED
.monitoring-es-6-2019.01.03     0 p STARTED
.monitoring-kibana-6-2019.01.08 0 p STARTED
.monitoring-kibana-6-2019.01.08 0 r STARTED
.monitoring-es-6-2019.01.04     0 r STARTED
.monitoring-es-6-2019.01.04     0 p STARTED
.monitoring-es-6-2019.01.08     0 r STARTED
.monitoring-es-6-2019.01.08     0 p STARTED
.monitoring-kibana-6-2019.01.01 0 p UNASSIGNED CLUSTER_RECOVERED
.monitoring-kibana-6-2019.01.01 0 r UNASSIGNED CLUSTER_RECOVERED
.monitoring-kibana-6-2019.01.06 0 p UNASSIGNED CLUSTER_RECOVERED
.monitoring-kibana-6-2019.01.06 0 r UNASSIGNED CLUSTER_RECOVERED
.monitoring-es-6-2019.01.07     0 p UNASSIGNED CLUSTER_RECOVERED
.monitoring-es-6-2019.01.07     0 r UNASSIGNED CLUSTER_RECOVERED
hogehoge_v1                     1 p STARTED
hogehoge_v1                     1 r STARTED
hogehoge_v1                     2 p STARTED
hogehoge_v1                     2 r STARTED
hogehoge_v1                     3 r STARTED
hogehoge_v1                     3 p STARTED
hogehoge_v1                     4 p STARTED
hogehoge_v1                     4 r STARTED
hogehoge_v1                     0 r STARTED
hogehoge_v1                     0 p STARTED

확인해 보면, kibana에서 그래프 표시에 사용하는 데이터를 저장하고 있는 인덱스가, unsigned가 되어 있는 것을 알았습니다.

현장에 의한다고 생각합니다만, kibana의 모니터링은 자신 밖에 보고 있지 않으므로, 삭제해 문제 없기 때문에 삭제합니다.
$ curl -XDELETE localhost:9200/.monitoring-kibana-6-2019.01.01
{"acknowledged":true}
略

결과



안전 Status는 Green이 되었습니다.

이 방법은 지우고 괜찮은 index를 지운 것이므로, 잘못해도 서비스에서 사용하고 있는 index를 지우는 일은 하지 말아 주세요. 왕도의 방법은 또 다른 클러스터를 만들고 서비스를 그쪽으로 향하고 나서 재인덱스를 하는 방법이라고 생각합니다.
$ curl localhost:9200/_cluster/health?pretty=true
{
  "cluster_name" : "prd-hogehoge-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 27,
  "active_shards" : 54,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

좋은 웹페이지 즐겨찾기