Posted at

Elasticsearch 6.2.2 の Cluster Health API についてまとめた

More than 1 year has passed since last update.

クラスタの状態を確認する際に以下のようにチェックを行う。

$ curl -X GET 'localhost:9200/_cluster/health'

その場合、以下のような結果が返ってくる。

{

"cluster_name": "elasticsearch",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 5,
"active_shards": 5,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 5,
"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": 50
}

それぞれの項目は以下のようになっている。


cluster_name

クラスタ名。


status


  • green : 全てのシャードが正常に稼動している

  • yellow : プライマリシャードは存在するがレプリカシャードが割り当てられていない。検索は可能。

  • red : 少なくとも1つのプライマリシャードが正常ではない。検索結果は不正になる。


timed_out

ヘルスチェックがタイムアウトしたかどうか。


number_of_nodes

ノードの数。


number_of_data_nodes

データノードの数。


active_primary_shards

クラスタに含まれるプライマリシャードの数。


active_shards

クラスタに含まれるシャードの数。(レプリカシャードも含む)


relocating_shards

普段は 0 の場合が多い。ノード間でシャードの移動が発生している場合に値が増加する。(クラスタのバランスが悪かったり、ノードの追加や削除が行われた際など)


initializing_shards

普段は 0 の場合が多い。新しく作成されているシャードの数。


unassigned_shards

シャードとしては存在するが、クラスタ内で割り当てられていないシャードの数。レプリカシャードが割り当てられていない場合などに値が増加する。その場合は _cat/shards で確認が必要。


delayed_unassigned_shards

index.unassigned.node_left.delayed_timeout の設定によって即時復旧を待っているシャードの数。ノードに問題があった場合、マスターはレプリカシャードを昇格させて新たにレプリカシャードを作成しようとするが、ノードが短時間で復旧した場合は復旧したノードのシャードをレプリカにする。


number_of_pending_tasks

ノード間でシャードの移動が発生している場合やインデックスの作成時の設定変更などで処理待ちになっているクラスタ設定変更の数。


number_of_in_flight_fetch

クラスタの再起動などによるシャードの割り当てについて、非同期で実行されている、割り当て対象のシャードのコピーがあるか確認する処理の数。


task_max_waiting_in_queue_millis

タスクの最大待ち時間(ミリ秒)


active_shards_percent_as_number

active_shards の値を active_shards と unassigned_shards を足した値で割ったもの。


参考になった記事

Cluster Health

Cluster Health(The Definitive Guide)

Delaying allocation when a node leaves

Pending cluster tasks

Elasticsearch 1.6.0 をリリース