AWS LambdaのログをCloudWatch Logs Insightsでエラータイプ別に分析する方法
AWS Lambda関数のログデータを効率的に分析し、エラーをタイプ別にカウントした事があったので備忘に残します。
このような場合に役立つツールがCloudWatch Logs Insightsです。
Lambda関数が出力するログデータをCloudWatch Logs Insightsを使って分析し、エラーをタイプ別に集計する方法について記載します。
CloudWatch Logs Insightsとは?
CloudWatch Logs Insightsは、Amazon CloudWatchのログデータに対してクエリを実行し、迅速に必要な情報を抽出・分析するための強力なツールです。
SQLに似た構文を使い、ログメッセージをフィルタリングしたり、メトリクスを集計したりすることができます。これにより、AWS Lambdaをはじめとするさまざまなサービスのログを効果的に活用できるようになります。
Lambdaから出るエラーをカウントする豊富
-
エラーをタイプ別にカウントしたい
Lambda関数が出力するエラーメッセージを特定のパターンごとに分類し、その頻度を確認する必要した。 -
CloudWatch Logs Insightsのクエリを使ってデータを集計したい
CloudWatch Logs Insightsのクエリを使って、Lambda関数のログから効率的にデータを抽出し、エラーメッセージをタイプ別に集計します。
CloudWatch Logs Insightsクエリの例
まずは、基本的なクエリについて。
クエリは、Lambda関数のログデータから「error」を含むメッセージをフィルタリングし、メッセージごとのエラーの発生回数をカウントします。
fields @timestamp, @message
| filter @message like /error/ # "error" を含むログメッセージをフィルタリング
| stats count() by @message # メッセージごとにカウント
| sort count() desc # カウントを降順でソート
このクエリについて
-
filter @message like /error/
ログメッセージから「error」を含むものだけを抽出します。 -
stats count() by @message
メッセージごとに出現回数をカウントし、エラータイプ別の発生頻度を確認します。 -
sort count() desc
カウント結果を降順に並べ替え、どのエラーが最も頻繁に発生しているか一目で確認できるようにします。
クエリのカスタマイズ:エラーコード別に集計
次に、エラーメッセージが特定のパターンに従っている場合、例えば「Error Code:」というフォーマットでエラーコードを集計したい場合。
この場合、parse
関数を使ってエラーコードを抽出し、それに基づいてエラーを集計するクエリに変更することができます。
fields @timestamp, @message
| filter @message like /error/
| parse @message "[Error Code: *]" as errorCode # エラーメッセージからエラーコードを抽出
| stats count() by errorCode # エラーコードごとにカウント
| sort count() desc # カウントを降順で並べ替え
クエリについて
-
filter @message like /error/
先ほどと同じく、「error」を含むログメッセージを抽出。 -
parse @message "[Error Code: *]" as errorCode
メッセージから「Error Code:」に続くエラーコードを抽出し、それをerrorCode
という変数に格納します。 -
stats count() by errorCode
エラーコードごとにカウントし、エラーのタイプ別に発生頻度を確認します。 -
sort count() desc
カウントを降順で並べ替え、どのエラーコードが最も多く発生しているかが把握できます
CloudWatch Logs Insightsの活用メリット
-
リアルタイムでログ分析が可能
Lambda関数のエラーを素早く検出し、原因特定までの時間を大幅に短縮できます。 -
高度なクエリで柔軟な分析
SQL風のクエリを使うことで、カスタマイズしたログ分析が簡単に行えます。
パターンマッチングや集計、並べ替えも自由自在です。 -
コスト効率の良いログ管理
必要なログデータだけを効率的に抽出することで、膨大なログデータを扱う際のコストを抑えることができます。
まとめ
AWS CloudWatch Logs Insightsを活用することで、AWS Lambda関数のログデータからエラーをタイプ別に集計し、効率的に分析することができます。特に、stats
コマンドやcount
関数を活用することで、エラーの発生頻度を可視化できるのはとても良い利点です。
参考文献