AWS Cloud Watch logs Insightでよく使う構文

Pocket

こんにちは、クララTAMの石川です!

今回は「AWS Cloud Watch logs Insightでよく使う構文」をご紹介します。

CloudWatch Logs Insightsはログを検索し、抽出することが出来る便利なサービスです。

今回は、弊社のお客様よりCloudWatch Logs Insightsを利用した「特定のログの時間ごとの発生回数をテーブル表示する」方法をご質問頂きましたので、簡単に纏めてみました。

CloudWatch Logs Insightsとは

CloudWatch Logs Insightsはログを検索し、抽出することが出来る便利なサービスです。

以下は、AWS公式サイトが説明する、CloudWatch Logs Insightsです。

CloudWatch Logs Insights では、クエリ言語を使用してロググループに対するクエリの実行します。クエリ構文は、一般的な関数、算術演算と比較演算、正規表現など、さまざまな関数とオペレーションをサポートしています。複数のコマンドを含むクエリを作成します。コマンドはパイプ文字 (|) で区切ります。コメントを含むクエリを作成します。ハッシュ文字 (#) を使用してコメントを開始します。

出展:https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

 

CloudWatch Logs Insightsのデフォルトの設定

デフォルト設定は、直近20 件のログイベントを降順で表示してくれます。

@timestamp と @message の値がクエリ結果に表示されます。

ですが、このままではあまり活用することができません。

fields @timestamp, @message
| sort @timestamp desc
| limit 20

 

文字列で絞る

文字列を使って検索を行う場合は、「/【検索する文字列】/」(両サイドをスラッシュで挟む)をします。

また、フィールドを指定して該当する文字列検索が可能となります。

fields @timestamp, @message
| sort @timestamp desc
| filter @message like /takashi.ishikawa/

時間で絞る

これは、アナログな手法になりますが、ロググループの右側の設定で指定できます。

時間ごとの発生回数をテーブル表示する

定例資料等に記載する際に重宝します。

今回ご相談いただいたお客様も、レポート提出に利用されるとのことでした。

アクセスログに対して特定の文字列で絞った後であれば、ユーザ固有のIDや、IP等で絞ることにより利用時間帯や、利用回数等確認ができます。

 

fields @timestamp, @message
| sort @timestamp desc
| filter @message like /takashi.ishikawa/
| stats count(*) as exceptionCount by bin(5m)
| sort exceptionCount desc

 

今回使ったクエリコマンド

fields を使用して、クエリ結果の特定のフィールドを表示します。

sort を使用して、ログイベントを昇順 (asc) または降順 (desc) で表示します。

filter を使用して、1 つ以上の条件に一致するログイベントを取得します。

stats を使用して、ログフィールド値で集約統計を計算します。

 

 

以上、今回はCloudWatch Logs Insightsを利用した「特定のログの時間ごとの発生回数をテーブル表示する」方法をご案内しました!

おすすめ