異常検出ジョブ統計APIの取得

異常検出ジョブの使用情報を取得します。

リクエスト

GET _ml/anomaly_detectors/<job_id>/_stats

GET _ml/anomaly_detectors/<job_id>,<job_id>/_stats

GET _ml/anomaly_detectors/_stats

GET _ml/anomaly_detectors/_all/_stats

前提条件

monitor_ml クラスター権限が必要です。この権限は machine_learning_user ビルトインロールに含まれています。

説明

このAPIは最大10,000のジョブを返します。

パスパラメータ

  • <job_id>
  • (オプション、文字列)異常検出ジョブの識別子。ジョブ識別子、グループ名、またはワイルドカード式を指定できます。グループ名、カンマ区切りのジョブリスト、またはワイルドカード式を使用することで、単一のAPIリクエストで複数の異常検出ジョブの統計を取得できます。_allを使用することで、すべての異常検出ジョブの統計を取得できます。*をジョブ識別子として指定するか、識別子を省略することもできます。

クエリパラメータ

  • allow_no_match
  • (オプション、ブール値)リクエスト時の動作を指定します:
    • ワイルドカード式を含み、一致するジョブがない場合。
    • _all 文字列を含むか、識別子がない場合で、一致がない場合。
    • ワイルドカード式を含み、部分一致のみがある場合。
      デフォルト値は true で、一致がない場合は空の jobs 配列を返し、部分一致がある場合は結果のサブセットを返します。このパラメータが false の場合、一致がないか部分一致のみの場合に 404 ステータスコードを返します。

レスポンスボディ

APIはジョブの運用進捗に関する以下の情報を返します:

  • assignment_explanation
  • (文字列)オープン異常検出ジョブのみ、ジョブを実行するノードの選択に関するメッセージを含みます。

  • data_counts

  • (オブジェクト)ジョブへの入力の量と関連するエラー数を説明するオブジェクト。data_count の値はジョブの生涯にわたって累積されます。モデルスナップショットが元に戻されたり、古い結果が削除された場合、ジョブカウントはリセットされません。
    data_counts のプロパティ
    • bucket_count
    • (長整数)ジョブによって生成されたバケット結果の数。
    • earliest_record_timestamp
    • (日付)最も早い時系列入力ドキュメントのタイムスタンプ。
    • empty_bucket_count
    • (長整数)データを含まないバケットの数。データに多くの空のバケットが含まれている場合は、bucket_span を増やすか、meannon_null_sum、または non_zero_count のようなデータのギャップに寛容な関数を使用することを検討してください。
    • input_bytes
    • (長整数)異常検出ジョブに投稿された入力データのバイト数。
    • input_field_count
    • (長整数)異常検出ジョブに投稿された入力ドキュメントのフィールドの総数。このカウントには、分析に使用されないフィールドが含まれます。ただし、データフィードを使用している場合、取得したドキュメントから必要なフィールドのみを抽出してジョブに投稿しますので注意してください。
    • input_record_count
    • (長整数)異常検出ジョブに投稿された入力ドキュメントの数。
    • invalid_date_count
    • (長整数)日付フィールドが欠落しているか、解析できない日付を持つ入力ドキュメントの数。
    • job_id
    • (文字列)異常検出ジョブの識別子。
    • last_data_time
    • (日付)サーバー時間に基づく、データが最後に分析されたタイムスタンプ。
    • latest_empty_bucket_timestamp
    • (日付)データを含まない最後のバケットのタイムスタンプ。
    • latest_record_timestamp
    • (日付)最も最近の時系列入力ドキュメントのタイムスタンプ。
    • latest_sparse_bucket_timestamp
    • (日付)最後にスパースと見なされたバケットのタイムスタンプ。
    • log_time
    • (日付)サーバー時間に基づく data_counts のタイムスタンプ。
    • missing_field_count
    • (長整数)異常検出ジョブが分析するように設定されたフィールドが欠落している入力ドキュメントの数。フィールドが欠落している入力ドキュメントも処理されます。すべてのフィールドが欠落しているわけではない可能性があるためです。
      データフィードを使用している場合や、ジョブにJSON形式でデータを投稿している場合、高い missing_field_count は必ずしもデータの問題を示すものではありません。必ずしも懸念の原因ではありません。
      processed_record_count の値にはこのカウントが含まれます。
    • out_of_order_timestamp_count
    • (長整数)現在の異常検出バケットのオフセットの開始前に時系列的に前のタイムスタンプを持つ入力ドキュメントの数。この情報は、データ投稿APIを使用して異常検出ジョブにデータを提供する場合にのみ適用されます。これらの順序が逆のドキュメントは破棄されます。ジョブは時系列データが昇順であることを要求します。
    • processed_field_count
    • 異常検出ジョブによって処理されたすべてのドキュメントのフィールドの総数。タイムスタンプはこのカウントには含まれません。
    • processed_record_count
    • (長整数)異常検出ジョブによって処理された入力ドキュメントの数。この値には、フィールドが欠落しているドキュメントも含まれます。なぜなら、それらも分析されるからです。データフィードを使用し、検索クエリに集約がある場合、processed_record_count は処理された集約結果の数であり、Elasticsearchドキュメントの数ではありません。
    • sparse_bucket_count
    • (長整数)期待されるデータポイントの数に比べてデータポイントが少ないバケットの数。データに多くのスパースバケットが含まれている場合は、より長い bucket_span を使用することを検討してください。
  • deleting
  • (ブール値)ジョブの削除プロセスが進行中であるが、まだ完了していないことを示します。これは true の場合にのみ報告されます。

  • forecasts_stats

  • (オブジェクト)このジョブに属する予測に関する統計情報を提供するオブジェクト。予測が行われていない場合は、一部の統計が省略されます。
    少なくとも1つの予測がない限り、memory_bytesrecordsprocessing_time_ms、および status プロパティは省略されます。
    forecasts_stats のプロパティ
    • forecasted_jobs
    • (長整数)0 の値は、このジョブに予測が存在しないことを示します。1 の値は、少なくとも1つの予測が存在することを示します。
    • memory_bytes
    • (オブジェクト)このジョブに関連する予測の avgminmax、および total メモリ使用量(バイト単位)。予測がない場合、このプロパティは省略されます。
    • records
    • (オブジェクト)このジョブに関連する予測のために書き込まれた avgminmax、および total ドキュメントの数。予測がない場合、このプロパティは省略されます。
    • processing_time_ms
    • (オブジェクト)このジョブに関連する予測のための avgminmax、および total 実行時間(ミリ秒単位)。予測がない場合、このプロパティは省略されます。
    • status
    • (オブジェクト)予測のステータスによるカウント。例えば:{“finished” : 2, “started” : 1}。予測がない場合、このプロパティは省略されます。
    • total
    • (長整数)現在のジョブに対して利用可能な個々の予測の数。1 以上の値は、予測が存在することを示します。
  • job_id
  • (文字列)異常検出ジョブの識別子。

  • model_size_stats

  • (オブジェクト)モデルのサイズと内容に関する情報を提供するオブジェクト。
    model_size_stats のプロパティ

    • assignment_memory_basis
    • (文字列)ジョブが実行される場所を決定するために使用されるメモリ要件の場所を示します。可能な値は:
      • model_memory_limit: ジョブのメモリ要件は、そのモデルメモリが model_memory_limit に指定された値に成長することを前提に計算されます。
      • current_model_bytes: ジョブのメモリ要件は、その現在のモデルメモリサイズが将来の良い反映であると仮定して計算されます。
      • peak_model_bytes: ジョブのメモリ要件は、そのピークモデルメモリサイズが将来のモデルサイズの良い反映であると仮定して計算されます。
    • bucket_allocation_failures_count
    • (長整数)新しいエンティティが処理されなかったバケットの数。これは、hard_limit: memory_status プロパティ値によっても示されます。
    • categorized_doc_count
    • (長整数)フィールドが分類されたドキュメントの数。
    • categorization_status
    • (文字列)ジョブの分類のステータス。次のいずれかの値を含みます:
      • ok: 分類が適切に行われている(またはまったく使用されていない)。
      • warn: 分類が、入力データが分類に不適切であることを示唆するカテゴリの分布を検出しています。問題は、カテゴリが1つしかない、90%以上のカテゴリが希少である、カテゴリの数が分類されたドキュメントの数の50%以上である、頻繁に一致するカテゴリがない、または50%以上のカテゴリが死んでいることです。
    • dead_category_count
    • (長整数)他のカテゴリの定義によって死んだカテゴリのスーパーセットとなるため、再度割り当てられることがない分類によって作成されたカテゴリの数。(死んだカテゴリは、分類に事前トレーニングがないことの副作用です。)
    • failed_category_count
    • (長整数)分類が新しいカテゴリを作成したいが、ジョブが model_memory_limit に達したためにできなかった回数。このカウントは、特定のカテゴリが作成できなかったことを追跡しません。したがって、この値を使用して見逃されたユニークなカテゴリの数を特定することはできません。
    • frequent_category_count
    • (長整数)分類されたドキュメントの1%以上に一致するカテゴリの数。
    • job_id
    • (文字列)異常検出ジョブの識別子。
    • log_time
    • (日付)サーバー時間に基づく model_size_stats のタイムスタンプ。
    • memory_status
    • (文字列)数学モデルのステータス。次のいずれかの値を持つことができます:
      • ok: モデルは設定された値を下回っています。
      • soft_limit: モデルは設定されたメモリ制限の60%以上を使用しており、古い未使用のモデルはスペースを解放するために削除されます。さらに、分類ジョブでは、これ以上のカテゴリの例は保存されません。
      • hard_limit: モデルは設定されたメモリ制限を超えるスペースを使用しました。その結果、すべての入力データが処理されなかった。
    • model_bytes
    • (長整数)モデルによって使用されるメモリのバイト数。この値は、モデルが永続化されてからの最大値です。ジョブが閉じられている場合、この値は最新のサイズを示します。
    • model_bytes_exceeded
    • (長整数)最後の割り当て失敗時のメモリ使用量の高い制限を超えたバイト数。
    • model_bytes_memory_limit
    • (長整数)メモリ使用量の上限。増加する値で確認されます。
    • peak_model_bytes
    • (長整数)モデルによって使用された最大バイト数。
    • rare_category_count
    • (長整数)ちょうど1つの分類されたドキュメントに一致するカテゴリの数。
    • result_type
    • (文字列)内部使用のため。結果のタイプ。
    • total_by_field_count
    • (長整数)モデルによって分析された by フィールド値の数。この値は、ジョブ内のすべての検出器に対して累積されます。
    • total_category_count
    • (長整数)分類によって作成されたカテゴリの数。
    • total_over_field_count
    • (長整数)モデルによって分析された over フィールド値の数。この値は、ジョブ内のすべての検出器に対して累積されます。
    • total_partition_field_count
    • (長整数)モデルによって分析された partition フィールド値の数。この値は、ジョブ内のすべての検出器に対して累積されます。
    • timestamp
    • (日付)モデル統計が収集された最後のレコードのタイムスタンプ。
  • node

  • (オブジェクト)ジョブを実行するノードのプロパティを含みます。この情報はオープンジョブにのみ利用可能です。
    node のプロパティ
    • attributes
    • (オブジェクト)ml.machine_memoryml.max_open_jobs 設定などのノード属性をリストします。
    • ephemeral_id
    • (文字列)ノードのエフェメラルID。
    • id
    • (文字列)ノードのユニーク識別子。
    • name
    • (文字列)ノード名。
    • transport_address
    • (文字列)トランスポートHTTP接続が受け入れられるホストとポート。
  • open_time
  • (文字列)オープンジョブのみ、ジョブがオープンしている経過時間。
  • state
  • (文字列)異常検出ジョブのステータス。次のいずれかの値を持つことができます:

    • closed: ジョブは正常に完了し、そのモデル状態が永続化されました。ジョブは、さらにデータを受け入れる前にオープンする必要があります。
    • closing: ジョブのクローズアクションが進行中で、まだ完了していません。クローズ中のジョブは、さらにデータを受け入れることができません。
    • failed: ジョブはエラーにより正常に完了しませんでした。この状況は、無効な入力データ、分析中の致命的なエラー、またはLinuxのメモリ不足(OOM)キラーによってプロセスが終了されるなどの外部の相互作用によって発生する可能性があります。ジョブが不可逆的に失敗した場合、強制的に閉じてから削除する必要があります。データフィードを修正できる場合、ジョブを閉じてから再オープンできます。
    • opened: ジョブはデータを受け入れ、処理する準備が整っています。
    • opening: ジョブのオープンアクションが進行中で、まだ完了していません。
  • timing_stats

  • (オブジェクト)このジョブのタイミングに関する統計情報を提供するオブジェクト。
    timing_stats のプロパティ
    • average_bucket_processing_time_ms
    • (倍精度)すべてのバケット処理時間の平均(ミリ秒単位)。
    • bucket_count
    • (長整数)処理されたバケットの数。
    • exponential_average_bucket_processing_time_ms
    • (倍精度)すべてのバケット処理時間の指数移動平均(ミリ秒単位)。
    • exponential_average_bucket_processing_time_per_hour_ms
    • (倍精度)1時間の時間ウィンドウで計算されたバケット処理時間の指数加重移動平均(ミリ秒単位)。
    • job_id
    • (文字列)異常検出ジョブの識別子。
    • maximum_bucket_processing_time_ms
    • (倍精度)すべてのバケット処理時間の中で最大の値(ミリ秒単位)。
    • minimum_bucket_processing_time_ms
    • (倍精度)すべてのバケット処理時間の中で最小の値(ミリ秒単位)。
    • total_bucket_processing_time_ms
    • (倍精度)すべてのバケット処理時間の合計(ミリ秒単位)。

レスポンスコード

  • 404 (リソースが見つかりません)
  • allow_no_matchfalse の場合、このコードはリクエストに一致するリソースがないか、リクエストに対して部分一致のみがあることを示します。

Python

  1. resp = client.ml.get_job_stats(
  2. job_id="low_request_rate",
  3. )
  4. print(resp)

Ruby

  1. response = client.ml.get_job_stats(
  2. job_id: 'low_request_rate'
  3. )
  4. puts response

Js

  1. const response = await client.ml.getJobStats({
  2. job_id: "low_request_rate",
  3. });
  4. console.log(response);

コンソール

  1. GET _ml/anomaly_detectors/low_request_rate/_stats

APIは以下の結果を返します:

Js

  1. {
  2. "count" : 1,
  3. "jobs" : [
  4. {
  5. "job_id" : "low_request_rate",
  6. "data_counts" : {
  7. "job_id" : "low_request_rate",
  8. "processed_record_count" : 1216,
  9. "processed_field_count" : 1216,
  10. "input_bytes" : 51678,
  11. "input_field_count" : 1216,
  12. "invalid_date_count" : 0,
  13. "missing_field_count" : 0,
  14. "out_of_order_timestamp_count" : 0,
  15. "empty_bucket_count" : 242,
  16. "sparse_bucket_count" : 0,
  17. "bucket_count" : 1457,
  18. "earliest_record_timestamp" : 1575172659612,
  19. "latest_record_timestamp" : 1580417369440,
  20. "last_data_time" : 1576017595046,
  21. "latest_empty_bucket_timestamp" : 1580356800000,
  22. "input_record_count" : 1216
  23. },
  24. "model_size_stats" : {
  25. "job_id" : "low_request_rate",
  26. "result_type" : "model_size_stats",
  27. "model_bytes" : 41480,
  28. "model_bytes_exceeded" : 0,
  29. "model_bytes_memory_limit" : 10485760,
  30. "total_by_field_count" : 3,
  31. "total_over_field_count" : 0,
  32. "total_partition_field_count" : 2,
  33. "bucket_allocation_failures_count" : 0,
  34. "memory_status" : "ok",
  35. "categorized_doc_count" : 0,
  36. "total_category_count" : 0,
  37. "frequent_category_count" : 0,
  38. "rare_category_count" : 0,
  39. "dead_category_count" : 0,
  40. "failed_category_count" : 0,
  41. "categorization_status" : "ok",
  42. "log_time" : 1576017596000,
  43. "timestamp" : 1580410800000
  44. },
  45. "forecasts_stats" : {
  46. "total" : 1,
  47. "forecasted_jobs" : 1,
  48. "memory_bytes" : {
  49. "total" : 9179.0,
  50. "min" : 9179.0,
  51. "avg" : 9179.0,
  52. "max" : 9179.0
  53. },
  54. "records" : {
  55. "total" : 168.0,
  56. "min" : 168.0,
  57. "avg" : 168.0,
  58. "max" : 168.0
  59. },
  60. "processing_time_ms" : {
  61. "total" : 40.0,
  62. "min" : 40.0,
  63. "avg" : 40.0,
  64. "max" : 40.0
  65. },
  66. "status" : {
  67. "finished" : 1
  68. }
  69. },
  70. "state" : "opened",
  71. "node" : {
  72. "id" : "7bmMXyWCRs-TuPfGJJ_yMw",
  73. "name" : "node-0",
  74. "ephemeral_id" : "hoXMLZB0RWKfR9UPPUCxXX",
  75. "transport_address" : "127.0.0.1:9300",
  76. "attributes" : {
  77. "ml.machine_memory" : "17179869184",
  78. "xpack.installed" : "true",
  79. "ml.max_open_jobs" : "512"
  80. }
  81. },
  82. "assignment_explanation" : "",
  83. "open_time" : "13s",
  84. "timing_stats" : {
  85. "job_id" : "low_request_rate",
  86. "bucket_count" : 1457,
  87. "total_bucket_processing_time_ms" : 1094.000000000001,
  88. "minimum_bucket_processing_time_ms" : 0.0,
  89. "maximum_bucket_processing_time_ms" : 48.0,
  90. "average_bucket_processing_time_ms" : 0.75085792724777,
  91. "exponential_average_bucket_processing_time_ms" : 0.5571716855800993,
  92. "exponential_average_bucket_processing_time_per_hour_ms" : 15.0
  93. }
  94. }
  95. ]
  96. }