AWS Cloud Watch logs Insightでよく使う構文
こんにちは、クララ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を利用した「特定のログの時間ごとの発生回数をテーブル表示する」方法をご案内しました!