cat health API

cat APIは、コマンドラインまたはKibanaコンソールを使用して人間が消費することを目的としています。アプリケーションによる使用は意図されていません。アプリケーションでの使用には、cluster health APIを使用してください。

クラスターの健康状態を返します。これは、cluster health APIに似ています。

Request

GET /_cat/health

Prerequisites

  • Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するにはmonitorまたはmanage cluster privilegeが必要です。

Description

cat health APIを使用して、クラスターの健康状態を取得できます。

このAPIは、故障しているクラスターを確認するためによく使用されます。クラスターの健康状態をログファイルやアラートシステムとともに追跡するのを助けるために、APIは2つの形式でタイムスタンプを返します:

  • HH:MM:SS、これは人間が読みやすいですが、日付情報は含まれていません。
  • Unix epoch time、これは機械でソート可能で、日付情報を含みます。これは、数日かかるクラスターの回復に役立ちます。

cat health APIを使用して、複数のノードにわたるクラスターの健康状態を確認できます。Example across nodesを参照してください。

また、APIを使用して、大規模なクラスターの回復を長期間にわたって追跡することもできます。Example with a large clusterを参照してください。

Query parameters

  • format
  • (オプション、文字列) HTTP accept headerの短縮版。 有効な値にはJSON、YAMLなどが含まれます。
  • h
  • (オプション、文字列) 表示する列名のカンマ区切りリスト。
  • help
  • (オプション、Boolean) trueの場合、応答にヘルプ情報が含まれます。 デフォルトはfalseです。
  • s
  • (オプション、文字列) 応答をソートするために使用される列名または列エイリアスのカンマ区切りリスト。
  • time
  • (オプション、time units) 時間値を表示するために使用される単位。
  • ts (timestamps)
  • (オプション、Boolean) trueの場合、HH:MM:SSおよびUnix epochタイムスタンプを返します。 デフォルトはtrueです。
  • v
  • (オプション、Boolean) trueの場合、応答に列見出しが含まれます。 デフォルトはfalseです。

Examples

Example with a timestamp

デフォルトでは、cat health APIはHH:MM:SSおよびUnix epochタイムスタンプを返します。例えば:

Python

  1. resp = client.cat.health(
  2. v=True,
  3. )
  4. print(resp)

Ruby

  1. response = client.cat.health(
  2. v: true
  3. )
  4. puts response

Js

  1. const response = await client.cat.health({
  2. v: "true",
  3. });
  4. console.log(response);

Console

  1. GET /_cat/health?v=true

APIは次の応答を返します:

Txt

  1. epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
  2. 1475871424 16:17:04 elasticsearch green 1 1 1 1 0 0 0 0 - 100.0%

Example without a timestamp

ts (timestamps)パラメータを使用して、タイムスタンプを無効にできます。例えば:

Python

  1. resp = client.cat.health(
  2. v=True,
  3. ts=False,
  4. )
  5. print(resp)

Ruby

  1. response = client.cat.health(
  2. v: true,
  3. ts: false
  4. )
  5. puts response

Js

  1. const response = await client.cat.health({
  2. v: "true",
  3. ts: "false",
  4. });
  5. console.log(response);

Console

  1. GET /_cat/health?v=true&ts=false

APIは次の応答を返します:

Txt

  1. cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
  2. elasticsearch green 1 1 1 1 0 0 0 0 - 100.0%

Example across nodes

cat health APIを使用して、ノード間のクラスターの健康状態を確認できます。例えば:

  1. % pssh -i -h list.of.cluster.hosts curl -s localhost:9200/_cat/health
  2. [1] 20:20:52 [SUCCESS] es3.vm
  3. 1384309218 18:20:18 foo green 3 3 3 3 0 0 0 0
  4. [2] 20:20:52 [SUCCESS] es1.vm
  5. 1384309218 18:20:18 foo green 3 3 3 3 0 0 0 0
  6. [3] 20:20:52 [SUCCESS] es2.vm
  7. 1384309218 18:20:18 foo green 3 3 3 3 0 0 0 0

Example with a large cluster

cat health APIを使用して、大規模なクラスターの回復を長期間にわたって追跡できます。これは、cat health APIリクエストを遅延ループに含めることで実現できます。例えば:

  1. % while true; do curl localhost:9200/_cat/health; sleep 120; done
  2. 1384309446 18:24:06 foo red 3 3 20 20 0 0 1812 0
  3. 1384309566 18:26:06 foo yellow 3 3 950 916 0 12 870 0
  4. 1384309686 18:28:06 foo yellow 3 3 1328 916 0 12 492 0
  5. 1384309806 18:30:06 foo green 3 3 1832 916 4 0 0
  6. ^C

この例では、回復には約6分かかり、18:24:06から18:30:06までの時間がかかりました。この回復に数時間かかった場合、UNASSIGNEDシャードの数を監視し続けることができます。これは減少するはずです。UNASSIGNEDシャードの数が静的なままであれば、クラスターの回復に問題があることを示します。