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 アドレスのリストには、インバウンド接続およびアウトバウンド接続 (srcAddr と dstAddr) が表示されます。
- [制限] は 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")
その他のクエリ例については、「サンプルクエリ」を参照してください。