Watcherの統計API

現在のWatcherメトリクスを取得します。

リクエスト

GET _watcher/stats

GET _watcher/stats/<metric>

前提条件

  • このAPIを使用するには、manage_watcherまたはmonitor_watcherクラスター権限が必要です。詳細については、セキュリティ権限を参照してください。

パスパラメータ

  • emit_stacktraces
  • (オプション、ブール値)実行中の各ウォッチに対してスタックトレースが生成されるかどうかを定義します。デフォルト値はfalseです。
  • <metric>
  • (オプション、列挙型)レスポンスに含まれる追加メトリクスを定義します。
    • current_watches
    • レスポンスに現在実行中のウォッチを含めます。
    • queued_watches
    • レスポンスに実行待ちのウォッチを含めます。
    • _all
    • レスポンスにすべてのメトリクスを含めます。

レスポンスボディ

このAPIは常に基本的なメトリクスを返します。metricパラメータを使用することで、より多くのメトリクスを取得できます。

  • current_watches
  • (リスト)現在実行中のウォッチメトリクスは、Watcherによって現在実行されているウォッチに関する洞察を提供します。現在実行中の各ウォッチに関する追加情報が共有されます。この情報には、watch_id、実行が開始された時間、および現在の実行フェーズが含まれます。
    1. To include this metric, the `metric` option should be set to `current_watches`
    2. or `_all`. In addition you can also specify the `emit_stacktraces=true`
    3. parameter, which adds stack traces for each watch that is being executed. These
    4. stack traces can give you more insight into an execution of a watch.
  • queued_watches
  • (リスト)Watcherは、ウォッチの実行がノードとそのリソースに過度の負担をかけないように実行を調整します。あまりにも多くのウォッチが同時にトリガーされ、すべてを実行するための十分なキャパシティがない場合、一部のウォッチはキューに入れられ、現在実行中のウォッチが実行を完了するのを待ちます。キューに入れられたウォッチメトリクスは、これらのキューに入れられたウォッチに関する洞察を提供します。
    1. To include this metric, the `metric` option should include `queued_watches` or

以下の例は、stats APIを呼び出して基本的なメトリクスを取得します:

Python

  1. resp = client.watcher.stats()
  2. print(resp)

Ruby

  1. response = client.watcher.stats
  2. puts response

Js

  1. const response = await client.watcher.stats();
  2. console.log(response);

コンソール

  1. GET _watcher/stats

成功した呼び出しは、以下の例に似たJSON構造を返します:

Js

  1. {
  2. "watcher_state": "started",
  3. "watch_count": 1,
  4. "execution_thread_pool": {
  5. "size": 1000,
  6. "max_size": 1
  7. }
  8. }
ウォッチャーの現在の状態。startedstarting、またはstoppedのいずれかです。
現在登録されているウォッチの数。
トリガーされ、現在実行待ちのウォッチの数。
実行スレッドプールの最大サイズ。これは、同時に実行されるウォッチの最大数を示します。

以下の例は、metricオプションをクエリ文字列引数として指定し、基本的なメトリクスと現在実行中のウォッチに関するメトリクスを含めます:

Python

  1. resp = client.watcher.stats(
  2. metric="current_watches",
  3. )
  4. print(resp)

Ruby

  1. response = client.watcher.stats(
  2. metric: 'current_watches'
  3. )
  4. puts response

Js

  1. const response = await client.watcher.stats({
  2. metric: "current_watches",
  3. });
  4. console.log(response);

コンソール

  1. GET _watcher/stats?metric=current_watches

以下の例は、metricオプションをURLパスの一部として指定します:

Python

  1. resp = client.watcher.stats(
  2. metric="current_watches",
  3. )
  4. print(resp)

Ruby

  1. response = client.watcher.stats(
  2. metric: 'current_watches'
  3. )
  4. puts response

Js

  1. const response = await client.watcher.stats({
  2. metric: "current_watches",
  3. });
  4. console.log(response);

コンソール

  1. GET _watcher/stats/current_watches

以下のスニペットは、実行中のウォッチをキャプチャする成功したJSONレスポンスの例を示します:

Js

  1. {
  2. "watcher_state": "started",
  3. "watch_count": 2,
  4. "execution_thread_pool": {
  5. "queue_size": 1000,
  6. "max_size": 20
  7. },
  8. "current_watches": [
  9. {
  10. "watch_id": "slow_condition",
  11. "watch_record_id": "slow_condition_3-2015-05-13T07:42:32.179Z",
  12. "triggered_time": "2015-05-12T11:53:51.800Z",
  13. "execution_time": "2015-05-13T07:42:32.179Z",
  14. "execution_phase": "condition"
  15. }
  16. ]
  17. }
現在実行中のウォッチのリスト。ウォッチが実行中でない場合、空の配列が返されます。キャプチャされたウォッチは、実行時間の降順でソートされます。したがって、最も長く実行されているウォッチが常に最上位にあります。
実行中のウォッチのID。
ウォッチレコードのID。
トリガーエンジンによってウォッチがトリガーされた時間。
ウォッチが実行された時間。これは、入力が実行される直前です。
現在のウォッチ実行フェーズ。inputconditionactionsawaits_executionstartedwatch_transformabortedfinishedのいずれかです。

以下の例は、queued_watchesメトリクスオプションを指定し、基本的なメトリクスとキューに入れられたウォッチの両方を含めます:

Python

  1. resp = client.watcher.stats(
  2. metric="queued_watches",
  3. )
  4. print(resp)

Ruby

  1. response = client.watcher.stats(
  2. metric: 'queued_watches'
  3. )
  4. puts response

Js

  1. const response = await client.watcher.stats({
  2. metric: "queued_watches",
  3. });
  4. console.log(response);

コンソール

  1. GET _watcher/stats/queued_watches

実行中のウォッチをキャプチャする成功したJSONレスポンスの例:

Js

  1. {
  2. "watcher_state": "started",
  3. "watch_count": 10,
  4. "execution_thread_pool": {
  5. "queue_size": 1000,
  6. "max_size": 20
  7. },
  8. "queued_watches": [
  9. {
  10. "watch_id": "slow_condition4",
  11. "watch_record_id": "slow_condition4_223-2015-05-21T11:59:59.811Z",
  12. "triggered_time": "2015-05-21T11:59:59.811Z",
  13. "execution_time": "2015-05-21T11:59:59.811Z"
  14. },
  15. ...
  16. ]
  17. }
現在実行待ちのすべてのウォッチのリスト。ウォッチがキューに入っていない場合、空の配列が返されます。
実行待ちのウォッチのID。
ウォッチレコードのID。
トリガーエンジンによってウォッチがトリガーされた時間。
ウォッチがキュー状態に入った時間。