サイトアイコン 協栄情報ブログ

AWS CloudWatch の Logs Insights のクエリ言語を使いこなす

ログのインサイト

最近、現場では性能テストが行われていました。APサーバがあるVPCからほかのVPCまたはオンプレミス環境への通信時間や通信データ量などLogs Insightsで集計しました。
最初の方はLogs Insights(ログのインサート)って何?から始まり、最終的には自分なりにVPC フローログに対してのLogs Insightsを使いこなしていたと思います。
本記事では、Logs Insightsの基本的な使い方から、実用的なクエリ例までを解説します。

AWS CloudWatch Logs Insightsとは

まず、AWS CloudWatch Logs Insightsとは、ログデータを効率的に検索、分析するための強力なツールです。
大量のログデータから必要な情報を素早く抽出するには、CloudWatch Logs Insights のクエリ言語を理解して活用することが重要です。

1. CloudWatch Logs Insights の基本

アクセス

そもそも、Logs Insightsにどうやってアクセスするでしょうか。

AWSコンソール画面 →「CloudWatch」→「ログ」→「ログのインサイト」をクリックすると、本ブログのタイトル上の画像のような画面が表示されます。

クエリの構成

Logs Insights のクエリ言語は、以下のようなシンプルな構成を持っています。

これらを組み合わせて柔軟なクエリを作成できます。

フィールド

VPC フローログをクエリする際に、よく使用するフィールドは以下のとおりです。

@timestamp, @logStream, @message, accountId, endTime, interfaceId, logStatus, startTime, version, action, bytes, dstAddr, dstPort, packets, protocol, srcAddr, srcPort

2. クエリの例

以下に、基本的なクエリの例を示します。

例1: 取得ログ件数制限の検索

fields @timestamp, @logStream, @message, accountId, endTime, interfaceId, logStatus, startTime, 
version, action, bytes, dstAddr, dstPort, packets, protocol, srcAddr, srcPort
| sort @timestamp desc
| limit 10

3. 実用的な応用例

例2: 特定の文字列を一致するログを検索

fields @timestamp, interfaceId, action, dstAddr, dstPort, srcAddr, srcPort, protocol
# | filter action in ['ACCEPT']
| filter action in ['REJECT']
| sort @timestamp desc

例3: 送信先アドレス別のリクエスト数を集計

fields @timestamp, interfaceId, action, dstAddr, dstPort, srcAddr, srcPort, protocol
| filter action in ['ACCEPT']
| stats count(*) by dstAddr
| sort dstAddr desc

例4: 送信先アドレスごとに転送される平均バイト数を計算

fields @timestamp, interfaceId, action, bytes, dstAddr, dstPort, srcAddr, srcPort, protocol
| filter action in ['ACCEPT']
| stats avg(bytes) as avg_bytes by dstAddr
| sort avg_bytes desc

4. クエリを効率化するポイント

  1. フィールドを明示的に指定: 必要なフィールドだけを fields で指定することで、クエリの実行速度が向上します。
  2. フィルタ条件を最初に記述: filter を最初に記述することで、不要なデータを早い段階で除外できます。
  3. クエリ結果の確認と修正: 結果を逐次確認し、必要に応じてクエリを調整する習慣を持ちましょう。

5. まとめ

AWS CloudWatch Logs Insights のクエリ言語を使うことで、膨大なログデータから有益な情報を効率的に抽出できます。基本的なコマンドを組み合わせて、柔軟なクエリを作成しましょう。まずはシンプルなクエリから始め、徐々に複雑な条件や集計を活用していくことをおすすめします。

Logs Insights を活用して、より迅速な問題解決と効率的な運用を実現しましょう!

モバイルバージョンを終了