Help us understand the problem. What is going on with this article?

Elasticsearchでcluster statusがredになっているのを解決する

More than 1 year has passed since last update.

概要

elasticsearchを運用していると自分のオペミスなどで、cluster statusがredになることがある。unsignedなインデックスが削除可能であるときは、削除することでclusterのstatusをgreenにすることが出来る。

環境

Elasticsearch version 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になっています。
Elasticsearch.png

/_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を消すようなことはしないようにしてください。王道の方法はもう1クラスタを作成し、サービスをそちらに向けてから再インデックスをする方法だと思います。

$ 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
}
shin1988
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away