ちょっと話題の記事

Amazon CloudWatch Logs Insightsでログの高速な分析が可能になりました #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大栗です。

現在re:Inventに来ています。新サービスラッシュに大忙しなのですがCloudWatch Logsの分析機能が登場したのでレポートします。

Amazon CloudWatch Logs Insights

Amazon CloudWatch LogsにはAWSのサービスのログが大量に出力できます。VPC Flow Logs、Route 53 log、CloudTrail、ECSログなど様々なログがあります。これらのログを分析するためにはデータをエクスポートして分析を行う必要がありました。今回のアップデートによりログの分析をCloudWatch Logs上で行えるようになりました。

CloudWatch Logs Insightsでは数秒で大量のログデータを読み込み、クエリを発行でき可視化も行えます。CloudWatch Dashboardにクエリを追加することも可能です。

クエリの詳細はドキュメントを確認すると詳細が記載されていますが、以下のようなコマンドがあります。

  • fields:指定したフィールドを取り出す
  • filter:条件に基づいてクエリ結果をフィルタリングする
  • stats: ログのフィールドで集合関数を実行する
  • sort:特定のフィールドでソートする
  • limit:クエリで返るイベント数を制限する
  • parse:あるフィールドからデータを抽出して、さらにクエリで処理できる一時的なフィールドを作成する

filterコマンドでは正規表現も使用可能です。

利用可能なリージョンは以下の通りです。シンガポールではまだ使用できない模様です。

  • 米国東部 (バージニア北部)
  • 米国東部 (オハイオ)
  • 米国西部 (北カリフォルニア)
  • 米国西部 (オレゴン)
  • アジアパシフィック (ムンバイ)
  • アジアパシフィック (ソウル)
  • アジアパシフィック (シンガポール)
  • アジアパシフィック (シドニー)
  • アジアパシフィック (東京)
  • カナダ (中部)
  • EU (フランクフルト)
  • EU (アイルランド)
  • EU (ロンドン)
  • EU (パリ)
  • 南米 (サンパウロ)

やってみた

今回はVPC Flow Logsのデータを対象に実行してみます。VPC Flow Logsの設定は以下のエントリを参考にしてください。

【新機能】VPC Flow LogsでVPC内のIPトラフィックを監視することができるようになりました!

CloudWatchの画面で対象のVPC Low Logsを選択してExploreをクリックします。

するとCloudWatch Logs Insightsの画面が表示されます。右下にはVPC Low Logsのフィールドが認識されています。

VPC Flow Logのサンプルクエリを実行します。Sample queriesからVPC flow log queriesの中のAverage, min, and max byte transfers by source and destination IP addressesを選択してみます。

すると以下の様なクエリがエディタ上に表示されます。ここでRun queryをクリックします。通信元IPと通信先IPで集計して通信のサイズの平均、最小、最大を表示するクエリです。

stats avg(bytes), min(bytes), max(bytes) by srcAddr, dstAddr

この様に時系列のグラフが表示されて、クエリの結果が表示されます。

ここではVPC Flow Logsに対するクエリだけを実行しましたが、汎用のログに対してもクエリを実行できます。

さいごに

今まではメトリクスフィルタによるリアルタイムのフィルタリングが行えましたが、全体の分析を行うことができませんでした。今回のアップデートによりCloudWatch Logsに一旦データを配置して、CloudWatch Logs Insightsで分析するといった使い方が可能になります。

S3+Athenaと同じ様な使い方ができそうなので、用途によって使い分けをしていきましょう。