翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パターン分析
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 でパターン分析を開始するには
で CloudWatch コンソールを開きますhttps://console.aws.amazon.com/cloudwatch/
。 ナビゲーションペインで、[ログ]、[Logs Insights] を選択します。
[Logs Insights] (ログのインサイト) ページでは、クエリエディタにデフォルトクエリが表示されます。デフォルトでは、最新の 20 件のログイベントが返されます。
クエリボックスの
| limit 20
行を削除して、クエリを次のようにします。fields @timestamp, @message, @logStream, @log | sort @timestamp desc
[ロググループを選択] ドロップダウンから、クエリを実行するロググループを 1 つ以上選択します。
(オプション) 時間間隔セレクタを使用して、クエリを実行する期間を選択します。
5 分および 30 分間隔、1 時間、3 時間、12 時間間隔、またはカスタム時間枠を選択できます。
-
[クエリの実行] を選択してクエリを開始します。
クエリの実行が完了すると、[ログ] タブにクエリによって返されたログイベントのテーブルが表示されます。表の上にあるのは、クエリに一致するレコードの数に関するメッセージです。これは、一致する 71,101 レコードのうち 10,000 レコードを表示するというメッセージと似ています。
[パターン] タブを選択します。
テーブルにクエリで検出されたパターンが表示されるようになりました。クエリには
pattern
コマンドが含まれていなかったため、このタブには、[ログ] タブのテーブルに表示された 10,000 個のログイベントで検出されたパターンのみが表示されます。パターンごとに、次の情報が表示されます。
[パターン] では、各動的トークンが
<
として表示されます。string
-number
>[イベント数] は、クエリされたログイベントにパターンが表示された回数です。[イベント数] 列の見出しを選択して、パターンを頻度でソートします。
[イベント比率] は、このパターンを含むクエリされたログイベントの割合です。
[重要度タイプ] は、次のいずれかになります。
ERROR パターンに Error という単語が含まれている場合。
WARN パターンにワーンという単語が含まれているが、エラー が含まれていない場合。
INFO パターンに警告またはエラー が含まれていない場合。
[Severity info] 列の見出しを選択して、重要度別にパターンをソートします。
次に、クエリを変更します。クエリの
| sort @timestamp desc
行を| pattern @message
に置き換えて、次のような完全なクエリにします。fields @timestamp, @message, @logStream, @log | pattern @message
[Run query] (クエリの実行) を選択します。
クエリが終了すると、[ログ] タブに結果は表示されません。ただし、[パターン] タブには、クエリされたログイベントの合計数に応じて、リストされたパターンの数が多く表示される可能性があります。
クエリに
pattern
を含めるかどうかにかかわらず、クエリが返すパターンをさらに検査することができます。これを行うには、いずれかのパターンについて [検査] 列のアイコンを選択します。[パターン検査] ペインが表示され、以下が表示されます。
[パターン]。パターン内のトークンを選択して、そのトークンの値を分析します。
クエリされた時間範囲におけるパターンの出現回数を示すヒストグラム。これにより、パターンの発生の急増など、興味深い傾向を特定できます。
[ログサンプル] タブには、選択したパターンに一致するログイベントがいくつか表示されます。
[トークンの値] タブには、選択している場合は、選択した動的トークンの値が表示されます。
注記
トークンごとに最大 10 個のトークン値がキャプチャされます。トークン数は正確ではない可能性があります。 CloudWatch Logs は確率カウンターを使用して、絶対値ではなくトークン数を生成します。
[関連パターン] タブには、検査するパターンとほぼ同じ時間に頻繁に発生した他のパターンが表示されます。例えば、
ERROR
メッセージのパターンに通常、追加の詳細を含むINFO
とマークされた別のログイベントが伴っていた場合、そのパターンがここに表示されます。
パターンコマンドの詳細
このセクションでは、pattern
コマンドとその用途について詳しく説明します。
前のチュートリアルでは、
sort
コマンドの後にpattern
コマンドが含まれている場合、クエリは有効ではないため、pattern
コマンドを追加したときにsort
コマンドを削除しました。sort
の前にpattern
があるのは有効です。pattern
構文の詳細については、「pattern」を参照してください。クエリで
pattern
を使用する場合、@message
はpattern
コマンドで選択されたフィールドの 1 つである必要があります。pattern
コマンドの前にfilter
コマンドを含めると、フィルタリングされたログイベントのセットのみをパターン分析の入力として使用できます。parse
コマンドから派生したフィールドなど、特定のフィールドのパターン結果を表示するには、pattern @fieldname
を使用します。stats
コマンドを使用したクエリなど、ログ以外の出力を持つクエリは、パターン結果を返しません。