ログ異常検出 - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ログ異常検出

ロググループごとにログ異常ディテクターを作成できます。異常ディテクターは、ロググループに取り込まれたログイベントをスキャンし、ログデータ内の異常を検出します。異常検出では、機械学習とパターン認識を使用して、一般的なログコンテンツのベースラインを確立します。

ロググループの異常ディテクターを作成すると、そのグループの過去 2 週間分のログイベントを使用してトレーニングが行われます。トレーニングの所要時間は最大 15 分間です。トレーニングが完了すると、受信ログの分析が開始されて異常が識別されます。CloudWatch Logs コンソールに異常が表示されたら、調査を行います。

CloudWatch Logs パターン認識では、ログ内の静的コンテンツと動的コンテンツを識別することによって、ログパターンを抽出します。多数のログイベントをいくつかのパターンに圧縮することができるため、パターンは大きなログセットを分析する際に役立ちます。

例えば、次の 3 つのログイベントの例を参照してください。

2023-01-01 19:00:01 [INFO] Calling DynamoDB to store for ResourceID: 12342342k124-12345 2023-01-01 19:00:02 [INFO] Calling DynamoDB to store for ResourceID: 324892398123-1234R 2023-01-01 19:00:03 [INFO] Calling DynamoDB to store for ResourceID: 3ff231242342-12345

前のサンプルでは、3 つのログイベントはすべて 1 つのパターンに従っています。

<Date-1> <Time-2> [INFO] Calling DynamoDB to store for resource id <ResourceID-3>

パターン内のフィールドはトークンと呼ばれます。リクエスト ID やタイムスタンプなど、パターン内の異なるフィールドは動的トークンと呼ばれます。動的トークンのそれぞれ異なる値は、トークン値と呼ばれます。

CloudWatch Logs が動的トークンの表すデータのタイプを推測できる場合、トークンは <string-number> として表示されます。文字列は、トークンが表すデータのタイプの説明です。数値は、他の動的トークンと比較して、このトークンがパターン内のどこに表示されるかを示します。

CloudWatch Logs は、名前を含むログイベントのコンテンツの分析に基づいて、その名前の文字列部分を割り当てます。

CloudWatch Logs が動的トークンの表すデータのタイプを推測できない場合は、トークンは <トークン - 数値> として表示され、数値は他の動的トークンと比較して、このトークンがパターン内のどこに表示されるかを示します。

動的トークンの一般的な例には、エラーコード、IP アドレス、タイムスタンプ、リクエスト ID があります。

異常検出ログは、これらのパターンを使用して異常を検出します。異常ディテクターのモデルトレーニング期間が終了したら、ログは既知の傾向に照らして評価されます。異常ディテクターは、大幅な変動を異常とみなし、フラグを立てます。

この章では、異常検出の有効化の方法、異常の表示方法、ログ異常ディテクターのアラームおよび異常ディテクターが発行するメトリクスの作成方法について説明します。また、異常ディテクターとその結果を暗号化する方法についても説明します AWS Key Management Service。

ログ異常ディテクターを作成しても料金は発生しません。

異常とパターンの重要度と優先度

ログ異常ディテクターによって検出される各異常には、優先度が割り当てられます。検出された各パターンには重要度が割り当てられます。

  • 優先度は自動的に計算され、パターンの重要度レベルと想定値からの偏差量の両方に基づきます。例えば、特定のトークン値が突然 500% 増加すると、その重要度が NONE であっても、その異常が HIGH 優先度として指定される可能性があります。

  • 重要度は、FATALERRORWARN などのパターンで見つかったキーワードのみに基づいています。これらのキーワードが見つからない場合、パターンの重要度は NONE としてマークされます。

異常可視性期間

異常ディテクターを作成するときは、その異常の最大可視性期間を指定します。これは、異常がコンソールに表示され、ListAnomalies API オペレーションによって返される日数です。この期間が経過した後も異常が発生し続けると、自動的に通常の動作として受け入れられ、異常検出モデルは異常としてフラグ付けするのを停止します。

異常ディテクターの作成時に可視性期間を調整しない場合、デフォルトで 21 日が使用されます。

異常の抑制

異常が検出されたら、一時的または永続的に抑制することを選択できます。異常を抑制すると、指定した期間中、異常ディテクターはこの発生を異常としてフラグ付けしなくなります。異常を抑制する場合、その特定の異常のみを抑制するか、異常が検出されたパターンに関連するすべての異常を抑制するかを選択できます。

抑制された異常はコンソールで表示できます。また、抑制を停止することもできます。

よくある質問

は、自分のデータ AWS を使用して機械学習アルゴリズムをトレーニングし、 AWS 使用したり、他の顧客向けに使用したりしますか?

いいえ。トレーニングによって作成された異常検出モデルは、ロググループのログイベントに基づくものであるため、そのロググループとその AWS アカウント内でのみ使用されます。

異常検出にはどのようなタイプのログイベントが適していますか?

ログ異常検出は、アプリケーションログや、ほとんどのログエントリが一般的なパターンに適合するその他のタイプのログに適しています。INFOERRORDEBUG などのログレベルまたは重要度キーワードを含むイベントを持つロググループは、ログ異常検出に特に適しています。

ログ異常検出は、CloudTrail Logs などの非常に長い JSON 構造を持つログイベントには適していません。パターン分析では、ログラインの最初の 1500 文字までしか分析されないため、その制限を超える文字はスキップされます。

VPC フローログなどの監査ログやアクセスログも、異常検出で成功しません。異常検出はアプリケーションの問題を検出することを目的としているため、ネットワークやアクセスの異常には適さない可能性もあります。

異常ディテクターが特定のロググループに適しているかどうかを判断するには、CloudWatch Logs パターン分析を使用してグループのログイベントの中からパターン数を見つけます。パターン数が約 300 以下の場合は、異常検出が適切に機能する可能性があります。パターン分析の詳細については、「パターン分析」を参照してください。

何が異常としてフラグ付けされるのですか?

次の状況が発生すると、ログイベントに異常としてフラグが立てられる可能性があります。

  • ロググループで以前には見られなかったパターンを持つログイベント。

  • 既知のパターンに対する大きな変化。

  • 通常の値の個別のセットを持つ動的トークンの新しい値。

  • 動的トークンの値の発生回数の大きな変化。

上記の項目はすべて異常としてフラグ付けされる可能性がありますが、すべてがアプリケーションのパフォーマンスが低いことを意味するわけではありません。例えば、通常よりも多くの 200 成功値が異常としてフラグ付けされる場合もあります。このような場合は、問題を示していないとして、これらの異常を抑制することを検討してください。

マスキングされている機密データはどうなりますか?

機密データとしてマスクされたログイベントの部分は、異常検出のためにスキャンされることはありません。機密データのマスキングの詳細については、「Help protect sensitive log data with masking」を参照してください。