LoginSignup
8
6

More than 5 years have passed since last update.

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

Posted at

概要

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
}
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6