この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

動的閾値モニター

概要

時間とサービスによって大きく変動するメトリクスに対して、動的閾値モニターはシンプルで高性能な異常検知を提供します。 最近のデータに加えて、1、2、または3週間前のデータをコンテキストとして使用し、現在のデータと比較します。

「チェックウィンドウ」からのデータは、アンダーソン-ダーリング検定を使用して、歴史的コンテキストから提供されたデータと比較されます。 これは、データ分布に対してほとんど仮定を課さないという特徴があります。 この検定は、分布の上端と下端の外れ値に特に敏感です。 メトリクスは滑らかであったり、スパイキーであったり、いくつかの「レベル」を持つことがあります - データ値は直接比較され、モデルフィッティングは行われないため、動的閾値モニターは非常に堅牢です。

時間の経過とともに滑らかに変動するメトリクス(例:5分のタイムスケール)に対しては、生データポイントの数よりも有効なデータポイントの数が少なくなります。 DTはこれを補正するため、同じモニターを広範囲のメトリクスに使用でき、パラメータを調整する必要はありません。

モニター機能に設定できるパラメータがいくつかあります:

  • falsePositiveRate: !!float 1e-8 - 異常行動に対するモニタの感度。 値が低いほど、より多くの(偽)陽性を抑制しますが、偽陰性(見逃された異常)を引き起こす可能性もあります。

  • checkWindowMinutes: `10`分 - チェックウィンドウは、迅速なアラート(小さい値)と正しく特定された異常(大きい値)の間でバランスを取る必要がある。 実際には、少数のデータポイントがうまく機能します。

  • historicWindowMinutes: 120(2時間) - 現在時刻を中心に括られ、かつ1週間以上前の同じ時間帯、つまり現在時刻の1時間前から1時間後までのデータを指します。 チェックウィンドウの2時間前も使用されます。 動的なしきい値モニタは、この過去のデータの分布をチェックウィンドウ内のデータポイントと比較します。

  • historySizeWeeks: 2 - 過去の文脈のためにデータが取得される週の数。 1, `2`または`3`である可能性があります。

  • removeTrend: トレンド行動を持つメトリック(例えば、リクエスト数)については、絶対値が週ごとに異なるため、このトレンド(平均値)を考慮することができます。

  • includePreviousDay: 通常 false - 週ごとのパターンがなく、日ごとのパターンのみを持つ指標では、より新しいデータを使用できます。

動的閾値モニターの例

動的閾値機能を使用して実装されたモニターは次のようになります:

  - _type: "Monitor"
    name: "<name of the monitor>"
    identifier: "urn:custom:monitor:<identifier for the monitor>"
    status: "DISABLED"
    description: "<description>"
    function: {{ get "urn:stackpack:aad-v2:shared:monitor-function:dt" }}
    arguments:
      telemetryQuery:
        query: "<metric to bind to component>"
        unit: s
        aliasTemplate: "<name for the metric>"
      topologyQuery: <topology query for the components to bind to>
      falsePositiveRate: <floating point number, e.g. !!float 1e-8>
      checkWindowMinutes: <integer, e.g. 10>
      historicWindowMinutes: <integer, e.g. 120>
      historySizeWeeks: <integer: 1, 2 or 3>
      includePreviousDay: <boolean>
      removeTrend: <boolean>
    intervalSeconds: 60
    remediationHint: "<how to remediate deviating states>"