クラスタヘルスAPI
クラスタの健康状態を返します。
リクエスト
GET /_cluster/health/<target>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには
monitor
またはmanage
クラスタ特権を持っている必要があります。
説明
クラスタヘルスAPIは、クラスタの健康状態に関するシンプルなステータスを返します。また、指定されたデータストリームとインデックスの健康状態のみを取得するためにAPIを使用することもできます。データストリームの場合、APIはストリームのバックインデックスの健康状態を取得します。
クラスタの健康状態は、green
、yellow
、またはred
です。シャードレベルでは、red
ステータスは特定のシャードがクラスタに割り当てられていないことを示し、yellow
はプライマリシャードが割り当てられているがレプリカは割り当てられていないことを意味し、green
はすべてのシャードが割り当てられていることを意味します。インデックスレベルのステータスは、最悪のシャードステータスによって制御されます。クラスタステータスは、最悪のインデックスステータスによって制御されます。
APIの主な利点の1つは、クラスタが特定の高水準の健康レベルに達するまで待機できることです。たとえば、次のコマンドは、クラスタがyellow
レベルに達するまで50秒待機します(50秒が経過する前にgreen
またはyellow
ステータスに達した場合、その時点で返されます):
Php
$response = $client->cluster()->health();
Python
resp = client.cluster.health(
wait_for_status="yellow",
timeout="50s",
)
print(resp)
Ruby
response = client.cluster.health(
wait_for_status: 'yellow',
timeout: '50s'
)
puts response
Go
res, err := es.Cluster.Health(
es.Cluster.Health.WithTimeout(time.Duration(50000000000)),
es.Cluster.Health.WithWaitForStatus("yellow"),
)
fmt.Println(res, err)
Js
const response = await client.cluster.health({
wait_for_status: "yellow",
timeout: "50s",
});
console.log(response);
コンソール
GET /_cluster/health?wait_for_status=yellow&timeout=50s
パスパラメータ
<target>
- (オプション、文字列)リクエストを制限するために使用されるデータストリーム、インデックス、およびインデックスエイリアスのカンマ区切りリスト。ワイルドカード表現(
*
)がサポートされています。
クラスタ内のすべてのデータストリームとインデックスを対象とするには、このパラメータを省略するか、_all
または*
を使用します。
クエリパラメータ
level
- (オプション、文字列)
cluster
、indices
、またはshards
のいずれかであることができます。返される健康情報の詳細レベルを制御します。デフォルトはcluster
です。 local
- (オプション、ブール値)
true
の場合、リクエストはローカルノードからのみ情報を取得します。デフォルトはfalse
で、これはマスターノードから情報を取得することを意味します。 master_timeout
- (オプション、時間単位)マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーを返します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。 timeout
- (オプション、時間単位)クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。 wait_for_active_shards
- (オプション、文字列)待機するアクティブシャードの数を制御する数。
all
はクラスタ内のすべてのシャードがアクティブになるまで待機し、0
は待機しません。デフォルトは0
です。 wait_for_events
- (オプション、文字列)
immediate
、urgent
、high
、normal
、low
、languid
のいずれかであることができます。指定された優先度のすべての現在のキューイベントが処理されるまで待機します。 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
- (オプション、文字列)
green
、yellow
、または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
$response = $client->cluster()->health();
Python
resp = client.cluster.health()
print(resp)
Ruby
response = client.cluster.health
puts response
Go
res, err := es.Cluster.Health()
fmt.Println(res, err)
Js
const response = await client.cluster.health();
console.log(response);
コンソール
GET _cluster/health
APIは、単一のシャードと1つのレプリカを持つ単一インデックスの静かな単一ノードクラスタの場合、次の応答を返します:
コンソール-結果
{
"cluster_name" : "testcluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 1,
"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.0
}
次の例は、shards
レベルでクラスタの健康を取得する方法です:
Python
resp = client.cluster.health(
index="my-index-000001",
level="shards",
)
print(resp)
Ruby
response = client.cluster.health(
index: 'my-index-000001',
level: 'shards'
)
puts response
Js
const response = await client.cluster.health({
index: "my-index-000001",
level: "shards",
});
console.log(response);
コンソール
GET /_cluster/health/my-index-000001?level=shards