クラスタヘルスAPI

クラスタの健康状態を返します。

リクエスト

GET /_cluster/health/<target>

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するにはmonitorまたはmanage クラスタ特権を持っている必要があります。

説明

クラスタヘルスAPIは、クラスタの健康状態に関するシンプルなステータスを返します。また、指定されたデータストリームとインデックスの健康状態のみを取得するためにAPIを使用することもできます。データストリームの場合、APIはストリームのバックインデックスの健康状態を取得します。

クラスタの健康状態は、greenyellow、またはredです。シャードレベルでは、redステータスは特定のシャードがクラスタに割り当てられていないことを示し、yellowはプライマリシャードが割り当てられているがレプリカは割り当てられていないことを意味し、greenはすべてのシャードが割り当てられていることを意味します。インデックスレベルのステータスは、最悪のシャードステータスによって制御されます。クラスタステータスは、最悪のインデックスステータスによって制御されます。

APIの主な利点の1つは、クラスタが特定の高水準の健康レベルに達するまで待機できることです。たとえば、次のコマンドは、クラスタがyellowレベルに達するまで50秒待機します(50秒が経過する前にgreenまたはyellowステータスに達した場合、その時点で返されます):

Php

  1. $response = $client->cluster()->health();

Python

  1. resp = client.cluster.health(
  2. wait_for_status="yellow",
  3. timeout="50s",
  4. )
  5. print(resp)

Ruby

  1. response = client.cluster.health(
  2. wait_for_status: 'yellow',
  3. timeout: '50s'
  4. )
  5. puts response

Go

  1. res, err := es.Cluster.Health(
  2. es.Cluster.Health.WithTimeout(time.Duration(50000000000)),
  3. es.Cluster.Health.WithWaitForStatus("yellow"),
  4. )
  5. fmt.Println(res, err)

Js

  1. const response = await client.cluster.health({
  2. wait_for_status: "yellow",
  3. timeout: "50s",
  4. });
  5. console.log(response);

コンソール

  1. GET /_cluster/health?wait_for_status=yellow&timeout=50s

パスパラメータ

  • <target>
  • (オプション、文字列)リクエストを制限するために使用されるデータストリーム、インデックス、およびインデックスエイリアスのカンマ区切りリスト。ワイルドカード表現(*)がサポートされています。
    クラスタ内のすべてのデータストリームとインデックスを対象とするには、このパラメータを省略するか、_allまたは*を使用します。

クエリパラメータ

  • level
  • (オプション、文字列)clusterindices、またはshardsのいずれかであることができます。返される健康情報の詳細レベルを制御します。デフォルトはclusterです。
  • local
  • (オプション、ブール値)trueの場合、リクエストはローカルノードからのみ情報を取得します。デフォルトはfalseで、これはマスターノードから情報を取得することを意味します。
  • master_timeout
  • (オプション、時間単位)マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーを返します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • timeout
  • (オプション、時間単位)クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • wait_for_active_shards
  • (オプション、文字列)待機するアクティブシャードの数を制御する数。allはクラスタ内のすべてのシャードがアクティブになるまで待機し、0は待機しません。デフォルトは0です。
  • wait_for_events
  • (オプション、文字列)immediateurgenthighnormallowlanguidのいずれかであることができます。指定された優先度のすべての現在のキューイベントが処理されるまで待機します。
  • wait_for_no_initializing_shards
  • (オプション、ブール値)クラスタにシャード初期化がないことを待機するかどうかを制御するブール値。デフォルトはfalseで、初期化中のシャードを待機しないことを意味します。
  • wait_for_no_relocating_shards
  • (オプション、ブール値)クラスタにシャード移動がないことを待機するかどうかを制御するブール値。デフォルトはfalseで、移動中のシャードを待機しないことを意味します。
  • wait_for_nodes
  • (オプション、文字列)リクエストは、指定された数Nのノードが利用可能になるまで待機します。>=N<=N>N、および<Nも受け入れます。代わりに、ge(N)le(N)gt(N)、およびlt(N)の表記を使用することも可能です。
  • wait_for_status
  • (オプション、文字列)greenyellow、またはredのいずれか。クラスタのステータスが提供されたものに変わるまで待機します(タイムアウトが提供されるまで)。つまり、green > yellow > red。デフォルトでは、いかなるステータスも待機しません。

レスポンスボディ

  • cluster_name
  • (文字列)クラスタの名前。
  • status
  • (文字列)プライマリシャードとレプリカシャードの状態に基づくクラスタの健康状態。ステータスは次のとおりです:
    • green:すべてのシャードが割り当てられています。
    • yellow:すべてのプライマリシャードが割り当てられていますが、1つ以上のレプリカシャードが未割り当てです。クラスタ内のノードが故障した場合、そのノードが修復されるまで一部のデータが利用できない可能性があります。
    • red:1つ以上のプライマリシャードが未割り当てであるため、一部のデータが利用できません。これは、プライマリシャードが割り当てられる際にクラスタの起動中に一時的に発生する可能性があります。
  • timed_out
  • (ブール値)falseの場合、応答はtimeoutパラメータによって指定された期間内に返されます(デフォルトは30s)。
  • number_of_nodes
  • (整数)クラスタ内のノードの数。
  • number_of_data_nodes
  • (整数)専用データノードの数。
  • active_primary_shards
  • (整数)アクティブなプライマリシャードの数。
  • active_shards
  • (整数)アクティブなプライマリシャードとレプリカシャードの合計数。
  • relocating_shards
  • (整数)移動中のシャードの数。
  • initializing_shards
  • (整数)初期化中のシャードの数。
  • unassigned_shards
  • (整数)割り当てられていないシャードの数。
  • delayed_unassigned_shards
  • (整数)タイムアウト設定によって割り当てが遅延されているシャードの数。
  • number_of_pending_tasks
  • (整数)まだ実行されていないクラスタレベルの変更の数。
  • number_of_in_flight_fetch
  • (整数)未完了のフェッチの数。
  • task_max_waiting_in_queue_millis
  • (整数)最も早く開始されたタスクが待機している時間をミリ秒単位で表したもの。
  • active_shards_percent_as_number
  • (浮動小数点数)クラスタ内のアクティブシャードの割合をパーセンテージで表したもの。

Php

  1. $response = $client->cluster()->health();

Python

  1. resp = client.cluster.health()
  2. print(resp)

Ruby

  1. response = client.cluster.health
  2. puts response

Go

  1. res, err := es.Cluster.Health()
  2. fmt.Println(res, err)

Js

  1. const response = await client.cluster.health();
  2. console.log(response);

コンソール

  1. GET _cluster/health

APIは、単一のシャードと1つのレプリカを持つ単一インデックスの静かな単一ノードクラスタの場合、次の応答を返します:

コンソール-結果

  1. {
  2. "cluster_name" : "testcluster",
  3. "status" : "yellow",
  4. "timed_out" : false,
  5. "number_of_nodes" : 1,
  6. "number_of_data_nodes" : 1,
  7. "active_primary_shards" : 1,
  8. "active_shards" : 1,
  9. "relocating_shards" : 0,
  10. "initializing_shards" : 0,
  11. "unassigned_shards" : 1,
  12. "delayed_unassigned_shards": 0,
  13. "number_of_pending_tasks" : 0,
  14. "number_of_in_flight_fetch": 0,
  15. "task_max_waiting_in_queue_millis": 0,
  16. "active_shards_percent_as_number": 50.0
  17. }

次の例は、shardsレベルでクラスタの健康を取得する方法です:

Python

  1. resp = client.cluster.health(
  2. index="my-index-000001",
  3. level="shards",
  4. )
  5. print(resp)

Ruby

  1. response = client.cluster.health(
  2. index: 'my-index-000001',
  3. level: 'shards'
  4. )
  5. puts response

Js

  1. const response = await client.cluster.health({
  2. index: "my-index-000001",
  3. level: "shards",
  4. });
  5. console.log(response);

コンソール

  1. GET /_cluster/health/my-index-000001?level=shards