パターン分析 - Amazon CloudWatch ログ

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

パターン分析

CloudWatch Logs Insights は、機械学習アルゴリズムを使用して、ログのクエリ時にパターンを検出します。パターンは、ログフィールド間で繰り返される共有テキスト構造です。クエリの結果を表示するときは、パターンタブを選択して、結果のサンプルに基づいて CloudWatch Logs が検出したパターンを表示できます。または、クエリに pattern コマンドを追加して、一致するログイベントのセット全体のパターンを分析することもできます。

多数のログイベントをいくつかのパターンに圧縮することができるため、パターンは大きなログセットを分析する際に役立ちます。

次の 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>。- string は、トークンが表すデータのタイプの説明です。- number は、他の動的トークンと比較して、このトークンがパターンのどこに表示されるかを示しています。

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

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

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

トークン値は、動的トークンの特定の値を表します。例えば、動的トークンがHTTPエラーコードを表す場合、トークン値は になります501

パターン検出は、 CloudWatch Logs 異常ディテクターおよび比較機能でも使用されます。詳細については、「ログ異常検出」および「(diff) を以前の時間範囲と比較する」を参照してください。

パターン分析の開始方法

パターン検出は CloudWatch 、Logs Insights クエリで自動的に実行されます。pattern コマンドを含まないクエリは、結果にログイベントとパターンの両方を取得します。

pattern コマンドをクエリに含めると、一致するログイベントのセット全体に対してパターン分析が実行されます。これにより、より正確なパターン結果が得られますが、pattern コマンドの使用時に未加工のログイベントは返されません。クエリに pattern が含まれていない場合、パターン結果は、返された最初の 1000 個のログイベント、またはクエリで使用した制限値のいずれかに基づいて返されます。pattern をクエリに含めると、[パターン] タブに表示される結果は、クエリに一致するすべてのログイベントから取得されます。

CloudWatch Logs Insights でパターン分析を開始するには
  1. で CloudWatch コンソールを開きますhttps://console.aws.amazon.com/cloudwatch/

  2. ナビゲーションペインで、[ログ][Logs Insights] を選択します。

    [Logs Insights] (ログのインサイト) ページでは、クエリエディタにデフォルトクエリが表示されます。デフォルトでは、最新の 20 件のログイベントが返されます。

  3. クエリボックスの | limit 20 行を削除して、クエリを次のようにします。

    fields @timestamp, @message, @logStream, @log | sort @timestamp desc
  4. [ロググループを選択] ドロップダウンから、クエリを実行するロググループを 1 つ以上選択します。

  5. (オプション) 時間間隔セレクタを使用して、クエリを実行する期間を選択します。

    5 分および 30 分間隔、1 時間、3 時間、12 時間間隔、またはカスタム時間枠を選択できます。

  6. [クエリの実行] を選択してクエリを開始します。

    クエリの実行が完了すると、[ログ] タブにクエリによって返されたログイベントのテーブルが表示されます。表の上にあるのは、クエリに一致するレコードの数に関するメッセージです。これは、一致する 71,101 レコードのうち 10,000 レコードを表示するというメッセージと似ています。

  7. [パターン] タブを選択します。

  8. テーブルにクエリで検出されたパターンが表示されるようになりました。クエリには pattern コマンドが含まれていなかったため、このタブには、[ログ] タブのテーブルに表示された 10,000 個のログイベントで検出されたパターンのみが表示されます。

    パターンごとに、次の情報が表示されます。

    • [パターン] では、各動的トークンが <string-number> として表示されます。

    • [イベント数] は、クエリされたログイベントにパターンが表示された回数です。[イベント数] 列の見出しを選択して、パターンを頻度でソートします。

    • [イベント比率] は、このパターンを含むクエリされたログイベントの割合です。

    • [重要度タイプ] は、次のいずれかになります。

      • ERROR パターンに Error という単語が含まれている場合。

      • WARN パターンにワーンという単語が含まれているが、エラー が含まれていない場合。

      • INFO パターンに警告またはエラー が含まれていない場合。

      [Severity info] 列の見出しを選択して、重要度別にパターンをソートします。

  9. 次に、クエリを変更します。クエリの | sort @timestamp desc 行を | pattern @message に置き換えて、次のような完全なクエリにします。

    fields @timestamp, @message, @logStream, @log | pattern @message
  10. [Run query] (クエリの実行) を選択します。

    クエリが終了すると、[ログ] タブに結果は表示されません。ただし、[パターン] タブには、クエリされたログイベントの合計数に応じて、リストされたパターンの数が多く表示される可能性があります。

  11. クエリに pattern を含めるかどうかにかかわらず、クエリが返すパターンをさらに検査することができます。これを行うには、いずれかのパターンについて [検査] 列のアイコンを選択します。

    [パターン検査] ペインが表示され、以下が表示されます。

    • [パターン]。パターン内のトークンを選択して、そのトークンの値を分析します。

    • クエリされた時間範囲におけるパターンの出現回数を示すヒストグラム。これにより、パターンの発生の急増など、興味深い傾向を特定できます。

    • [ログサンプル] タブには、選択したパターンに一致するログイベントがいくつか表示されます。

    • [トークンの値] タブには、選択している場合は、選択した動的トークンの値が表示されます。

      注記

      トークンごとに最大 10 個のトークン値がキャプチャされます。トークン数は正確ではない可能性があります。 CloudWatch Logs は確率カウンターを使用して、絶対値ではなくトークン数を生成します。

    • [関連パターン] タブには、検査するパターンとほぼ同じ時間に頻繁に発生した他のパターンが表示されます。例えば、ERROR メッセージのパターンに通常、追加の詳細を含む INFO とマークされた別のログイベントが伴っていた場合、そのパターンがここに表示されます。

パターンコマンドの詳細

このセクションでは、pattern コマンドとその用途について詳しく説明します。

  • 前のチュートリアルでは、sort コマンドの後に pattern コマンドが含まれている場合、クエリは有効ではないため、pattern コマンドを追加したときに sort コマンドを削除しました。sort の前に pattern があるのは有効です。

    pattern 構文の詳細については、「pattern」を参照してください。

  • クエリで pattern を使用する場合、@messagepattern コマンドで選択されたフィールドの 1 つである必要があります。

  • pattern コマンドの前に filter コマンドを含めると、フィルタリングされたログイベントのセットのみをパターン分析の入力として使用できます。

  • parse コマンドから派生したフィールドなど、特定のフィールドのパターン結果を表示するには、pattern @fieldname を使用します。

  • stats コマンドを使用したクエリなど、ログ以外の出力を持つクエリは、パターン結果を返しません。