VPC フローログで CloudWatch Logs Insights のクエリを使用する方法を教えてください。

所要時間2分
0

Amazon CloudWatch Logs Insights のクエリを使用して、ロググループ内の Amazon Virtual Private Cloud (Amazon VPC) フローログを処理したいです。

簡単な説明

CloudWatch Logs を対象とする VPC フローログを有効にすると、Elastic Network インターフェイスごとに 1 つのログストリームが発生します。問題が発生した場合は、CloudWatch Logs Insights を使用して潜在的な原因を特定し、デプロイされた修正を検証します。

CloudWatch Logs Insights がサポートするログの種類に関する詳細については、「サポートされているログと検出されたフィールド」を参照してください。

解決策

クエリを実行する

CloudWatch コンソールを使用してサンプルクエリを実行するか、カスタムクエリを実行します。以前に実行したクエリを実行するには、[履歴] を選択します。結果をエクスポートするには、[結果をエクスポート] を選択し、形式を選択します。

クエリの例

シナリオ 1

ウェブサーバー、アプリケーションサーバー、データベースサーバーを使用しています。タイムアウトまたは HTTP 503 エラーが発生したため、そのエラーの原因を特定しようとしています。

次の変数例を使用してクエリを実行します。

  • 拒否された接続のみを取得するために、[アクション]REJECT に設定されています。
  • クエリには内部ネットワークのみが含まれています。
  • サーバーの IP アドレスのリストには、インバウンド接続およびアウトバウンド接続 (srcAddrdstAddr) が表示されます。
  • [制限]5 に設定されているため、最初の 5 件のエントリのみが表示されます。
  • ウェブサーバーの IP アドレスは 10.0.0.4 です。
  • アプリサーバーの IP アドレスは 10.0.0.5 です。
  • データベースサーバーの IP アドレスは 10.0.0.6 です。

クエリの例:

filter(
   action="REJECT" and
   dstAddr like /^(10\.|192\.168\.)/ and  
   srcAddr like /^(10\.|192\.168\.)/ and
   (srcAddr = "10.0.0.4" or dstAddr = "10.0.0.4" or srcAddr = "10.0.0.5" or dstAddr = "10.0.0.5" or srcAddr = "10.0.0.6" or dstAddr = "10.0.0.6")
)
| stats count(*) as records by srcAddr,dstAddr,dstPort,protocol
| sort records desc
| limit 5

シナリオ 2

ネットワークインターフェイスで断続的にタイムアウトが発生しています。一定期間におけるネットワークインターフェースでの拒否を確認するには、次のクエリを実行します。

fields @timestamp, interfaceId, srcAddr, dstAddr, action
| filter (interfaceId = 'eni-05012345abcd' and action = 'REJECT')
| sort @timestamp desc
| limit 5

シナリオ 3

VPC フローログを分析し、特定のネットワークインターフェイスに関するレポートを作成するには、次のクエリを実行します。

fields @timestamp, @message
 | stats count(*) as records by dstPort, srcAddr, dstAddr as Destination
 | filter interfaceId="eni-05012345abcd"
 | filter dstPort="80" or dstPort="443" or dstPort="22" or dstPort="25"
 | sort HitCount desc
 | limit 10

上記のクエリは、複数のポートに送信されたトラフィックの量をチェックします。

シナリオ 4

VPC フローログを絞り込み、VPC 内の特定の IP アドレスまたは CIDR への接続を試みている IP アドレスを一覧表示するには、次のクエリのいずれかを実行します。

特定の IP アドレス:

fields @timestamp, srcAddr, dstAddr
 | sort @timestamp desc
 | limit 5
 | filter srcAddr like "172.31."

特定の CIDR:

fields @timestamp, srcAddr, dstAddr
 | sort @timestamp desc
 | limit 5
 | filter isIpv4InSubnet(srcAddr,"172.31.0.0/16")

その他のクエリ例については、「サンプルクエリ」を参照してください

AWS公式
AWS公式更新しました 5ヶ月前