Get records API

異常検出ジョブの異常記録を取得します。

Request

GET _ml/anomaly_detectors/<job_id>/results/records

Prerequisites

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

Description

記録には詳細な分析結果が含まれています。これらは、検出器の設定に基づいて入力データで特定された異常な活動を説明します。

入力データの特性とサイズに応じて、多くの異常記録が存在する可能性があります。実際には、手動で処理するにはあまりにも多すぎることがよくあります。したがって、機械学習機能は異常記録をバケットに洗練された集約を行います。

記録結果の数は、各バケットで見つかった異常の数に依存し、これはモデル化される時系列の数と検出器の数に関連しています。

Path parameters

  • <job_id>
  • (必須、文字列) 異常検出ジョブの識別子。

Query parameters

  • desc
  • (オプション、Boolean) true の場合、結果は降順にソートされます。
  • end
  • (オプション、文字列) この時刻よりも早いタイムスタンプの記録を返します。デフォルトは -1 で、これは未設定であり、結果は特定のタイムスタンプに制限されません。
  • exclude_interim
  • (オプション、Boolean) true の場合、出力は中間結果を除外します。デフォルトは false で、これは中間結果が含まれることを意味します。
  • from
  • (オプション、整数) 指定された数の記録をスキップします。デフォルトは 0 です。
  • record_score
  • (オプション、double) この値以上の異常スコアを持つ記録を返します。デフォルトは 0.0 です。
  • size
  • (オプション、整数) 取得する記録の最大数を指定します。デフォルトは 100 です。
  • sort
  • (オプション、文字列) 要求された記録のソートフィールドを指定します。デフォルトでは、記録は record_score 値でソートされます。
  • start
  • (オプション、文字列) この時刻以降のタイムスタンプを持つ記録を返します。デフォルトは -1 で、これは未設定であり、結果は特定のタイムスタンプに制限されません。

Request body

リクエストボディ内でクエリパラメータを指定することもできます。例外は fromsize で、代わりに page を使用します:

  • page
  • page のプロパティ
    • from
    • (オプション、整数) 指定された数の記録をスキップします。デフォルトは 0 です。
    • size
    • (オプション、整数) 取得する記録の最大数を指定します。デフォルトは 100 です。

Response body

APIは、次のプロパティを持つ記録オブジェクトの配列を返します:

  • actual
  • (配列) バケットの実際の値。

  • anomaly_score_explanation

  • (オブジェクト) 存在する場合、初期異常スコアに影響を与える要因に関する情報を提供します。
    anomaly_score_explanation のプロパティ
    • anomaly_characteristics_impact
    • (オプション、整数) 歴史的平均に対する検出された異常の持続時間と大きさからの影響。
    • anomaly_length
    • (オプション、整数) 検出された異常のバケット数における長さ。
    • anomaly_type
    • (オプション、文字列) 検出された異常のタイプ: スパイクまたはディップ。
    • high_variance_penalty
    • (オプション、boolean) 大きな信頼区間を持つバケットの異常スコアの減少を示します。バケットに大きな信頼区間がある場合、スコアは減少します。
    • incomplete_bucket_penalty
    • (オプション、boolean) バケットに期待されるよりも少ないサンプルが含まれている場合、スコアは減少します。バケットに期待されるよりも少ないサンプルが含まれている場合、スコアは減少します。
    • lower_confidence_bound
    • (オプション、double) 95%信頼区間の下限。
    • multimodal_distribution
    • (オプション、boolean) バケット値の確率分布に複数のモードがあるかどうかを示します。複数のモードがある場合、典型的な値が最も可能性の高い値でない場合があります。
    • multi_bucket_impact
    • (オプション、整数) 過去12バケットにおける実際の値と典型的な値の間の偏差の影響。
    • single_bucket_impact
    • (オプション、整数) 現在のバケットにおける実際の値と典型的な値の間の偏差の影響。
    • typical_value
    • (オプション、double) このバケットの典型的(期待される)値。
    • upper_confidence_bound
    • (オプション、double) 95%信頼区間の上限。
  • bucket_span
  • (数値) バケットの長さ(秒単位)。この値は、ジョブで指定された bucket_span と一致します。
  • by_field_name
  • (文字列) データを分割するために使用されるフィールド。特に、このプロパティは、自身の履歴に関して分割を分析するために使用されます。これは、分割の文脈で異常な値を見つけるために使用されます。
  • by_field_value
  • (文字列) by_field_name の値。
  • causes
  • (配列) 人口分析のために、検出器でオーバーフィールドを指定する必要があります。このプロパティには、オーバーフィールドに対して特定された異常の原因となる異常記録の配列が含まれています。オーバーフィールドが存在しない場合、このフィールドは存在しません。このサブリソースには、over_field_name のための最も異常な記録が含まれています。スケーラビリティの理由から、異常の最も重要な原因の最大10件が返されます。コア分析モデリングの一部として、これらの低レベルの異常記録は、その親オーバーフィールド記録のために集約されます。原因リソースには、記録リソースと同様の要素が含まれています。すなわち、actualtypicalgeo_results.actual_pointgeo_results.typical_point*_field_name*_field_value。原因には確率とスコアは適用されません。
  • detector_index
  • (数値) 検出器の一意の識別子。
  • field_name
  • (文字列) 特定の関数は、sum() のように操作するためにフィールドを必要とします。これらの関数に対して、この値は分析されるフィールドの名前です。
  • function
  • (文字列) 異常が発生する関数で、検出器の設定で指定されています。例えば、max
  • function_description
  • (文字列) 異常が発生する関数の説明で、検出器の設定で指定されています。
  • geo_results
  • (オプション、オブジェクト) 検出器関数が lat_long の場合、このオブジェクトには、実際の値と典型的な値の緯度と経度のカンマ区切りの文字列が含まれます。
    geo_results のプロパティ
    • actual_point
    • (文字列) geo_point としてフォーマットされたバケットの実際の値。
    • typical_point
    • (文字列) geo_point としてフォーマットされたバケットの典型的な値。
  • influencers
  • (配列) influencers が検出器の設定で指定されている場合、この配列には異常に寄与したまたは責任があるインフルエンサーが含まれます。
  • initial_record_score
  • (数値) この記録の異常性の確率に基づく0-100の正規化スコア。これは、バケットが処理された時点で計算された初期値です。
  • is_interim
  • (Boolean) true の場合、これは中間結果です。言い換えれば、結果は部分的な入力データに基づいて計算されます。
  • job_id
  • (文字列) 異常検出ジョブの識別子。
  • multi_bucket_impact
  • (数値) 異常がマルチバケットまたはシングルバケットである強さの指標。この値は -5.0 から +5.0 のスケールであり、-5.0 は異常が純粋にシングルバケットであることを意味し、+5.0 は異常が純粋にマルチバケットであることを意味します。
  • over_field_name
  • (文字列) データを分割するために使用されるフィールド。特に、このプロパティは、すべての分割の履歴に関して分割を分析するために使用されます。これは、すべての分割の人口における異常な値を見つけるために使用されます。詳細については、人口分析の実施を参照してください。
  • over_field_value
  • (文字列) over_field_name の値。
  • partition_field_name
  • (文字列) 分析をセグメント化するために使用されるフィールド。このプロパティを使用すると、このフィールドの各値に対して完全に独立したベースラインがあります。
  • partition_field_value
  • (文字列) partition_field_name の値。
  • probability
  • (数値) 個々の異常が発生する確率、範囲は0から1。例えば、0.0000772031。この値は300桁以上の高精度で保持できるため、record_score はこれを人間が読みやすく、親しみやすい解釈として提供します。
  • record_score
  • (数値) この記録の異常性の確率に基づく0-100の正規化スコア。initial_record_score とは異なり、この値は新しいデータが分析されるときに再正規化プロセスによって更新されます。
  • result_type
  • (文字列) 内部。これは常に record に設定されます。
  • timestamp
  • (日付) これらの結果が計算されたバケットの開始時間。
  • typical
  • (配列) 分析モデリングに基づくバケットの典型的な値。

追加の記録プロパティは、分析されるフィールドに応じて追加されます。例えば、hostnameby field として分析している場合、結果ドキュメントにフィールド hostname が追加されます。この情報により、異常結果をより簡単にフィルタリングできます。

Examples

Python

  1. resp = client.ml.get_records(
  2. job_id="low_request_rate",
  3. sort="record_score",
  4. desc=True,
  5. start="1454944100000",
  6. )
  7. print(resp)

Ruby

  1. response = client.ml.get_records(
  2. job_id: 'low_request_rate',
  3. body: {
  4. sort: 'record_score',
  5. desc: true,
  6. start: '1454944100000'
  7. }
  8. )
  9. puts response

Js

  1. const response = await client.ml.getRecords({
  2. job_id: "low_request_rate",
  3. sort: "record_score",
  4. desc: true,
  5. start: 1454944100000,
  6. });
  7. console.log(response);

Console

  1. GET _ml/anomaly_detectors/low_request_rate/results/records
  2. {
  3. "sort": "record_score",
  4. "desc": true,
  5. "start": "1454944100000"
  6. }

Js

  1. {
  2. "count" : 4,
  3. "records" : [
  4. {
  5. "job_id" : "low_request_rate",
  6. "result_type" : "record",
  7. "probability" : 1.3882308899968812E-4,
  8. "multi_bucket_impact" : -5.0,
  9. "record_score" : 94.98554565630553,
  10. "initial_record_score" : 94.98554565630553,
  11. "bucket_span" : 3600,
  12. "detector_index" : 0,
  13. "is_interim" : false,
  14. "timestamp" : 1577793600000,
  15. "function" : "low_count",
  16. "function_description" : "count",
  17. "typical" : [
  18. 28.254208230188834
  19. ],
  20. "actual" : [
  21. 0.0
  22. ]
  23. },
  24. ...
  25. ]
  26. }