スキップしてコンテンツを表示

Amazon VPC 内の NAT ゲートウェイを経由するトラフィックを最も増加させている要因を調べるにはどうすればよいですか?

所要時間3分
1

Amazon Virtual Private Cloud (Amazon VPC) 内 の NAT ゲートウェイを経由するトラフィックを最も増加させている要因が何なのかを調べたいと考えています。

簡単な説明

Amazon VPC 内の NAT ゲートウェイの上位トラフィックの要因を見つけるには、Amazon CloudWatch メトリクスを使用してトラフィックが急増した時間を特定します。

次に、次のいずれかの方法を使用して、トラフィックの急増の原因となっている Amazon VPC インスタンスを特定します。

  • Amazon VPC フローログがデータを CloudWatch に公開する場合は、CloudWatch Logs を使用してください。
  • Amazon VPC フローログがデータを Amazon Simple Storage Service (Amazon S3) に公開する場合は、Amazon Athena を使用してください。

解決策

前提条件: Amazon VPC または NAT ゲートウェイのエラスティックネットワークインターフェイスで Amazon VPC フローログが有効になっていることを確認します。Amazon VPC フローログを有効にしていない場合は、Amazon CloudWatch Logs または Amazon S3 に公開するフローログを作成してください。

Amazon CloudWatch を使用して NAT ゲートウェイのメトリクスを表示する

次の Amazon CloudWatch メトリクスを NAT ゲートウェイメトリクスに使用して、トラフィックの急増に対応する時間帯を特定してください。

  • BytesInFromSource を使用すると、NAT ゲートウェイのインスタンスにアップロードされるトラフィックが示されます。
  • **ByteSinFromDestination ** を使用すると、NAT ゲートウェイのインスタンスからダウンロードされるトラフィックが示されます。

次に、Amazon VPC フローログにクエリを実行して、特定した時間帯にトラフィックが多いインスタンスを確認します。Amazon CloudWatch Logs Insights または Amazon Athena を使用して Amazon VPC フローログにクエリを実行できます。詳細については、「Amazon VPC フローログをクエリする」を参照してください。

CloudWatch Logs Insights を使用して、トラフィックの急増の原因となっているインスタンスを特定します。

Amazon VPC フローログがデータを CloudWatch に公開する場合は、Cloud Watch Logs Insights を使用して Amazon VPC フローログにクエリを実行します[ロググループの選択] ドロップダウンで、NAT ゲートウェイのロググループを選択します。次に、[カスタム] を選択して、特定したトラフィックの急増に対応する時間範囲を設定します。

以下のクエリのいずれかを使用して、ユースケースに基づいてトラフィックの急増の原因となっているインスタンスを表示します。CloudFormation テンプレートを使用して、次のクエリを組み込んだ CloudWatch ダッシュボードを作成することもできます。CloudFormation テンプレートのサンプルについては、Github ウェブサイトの「aws-cloudformation-template」を参照してください。

注: 次のクエリでは、example-NAT-private-IP を NAT ゲートウェイのプライベート IP アドレス (複数可) に置き換えてください。単一の IP クエリの場合は、NAT ゲートウェイのプライマリプライベート IP アドレスを使用します。example-VPC-CIDR を Amazon VPC の CIDR 範囲に置き換えてください。

NAT ゲートウェイ経由で最も多くのトラフィックを送信するインスタンスを特定するには、次のクエリを実行します。

filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
| sort bytesTransferred desc

インスタンスとの間で行き来するトラフィックを特定するには、次のクエリを実行します。

filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
OR (srcAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(dstAddr, "example-VPC-CIDR"))  
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
| sort bytesTransferred desc

インスタンスが最も頻繁にアクセスするインターネット送信先を特定するには、次のクエリを実行します。

  • NAT ゲートウェイ経由のアップロードの場合:

    filter (srcAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND not isIpv4InSubnet(dstAddr, "example-VPC-CIDR"))  
    | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
    | sort bytesTransferred desc  
    | limit 10
  • NAT ゲートウェイ経由のダウンロードの場合:

    filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND not isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
    | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
    | sort bytesTransferred desc  
    | limit 10

NAT ゲートウェイ経由でインターネット送信先に最も多くのトラフィックを送信しているインスタンスを特定するには、次のクエリを実行します。

  • NAT ゲートウェイ経由のアップロードの場合:

    parse @message "* * * * * * * * * * * * * * * " as version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, log_status, pkt_srcaddr, pkt_dstaddr| filter (dstaddr like 'example-NAT-private-IP' and isIpv4InSubnet(pkt_srcaddr, 'example-VPC-CIDR'))   
    | stats sum(bytes) as bytesTransferred by pkt_srcaddr, pkt_dstaddr  
    | sort bytesTransferred desc  
    | limit 10
  • NAT ゲートウェイ経由のダウンロードの場合:

    parse @message " * * * * * * * * * * * * * * *" as version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, log_status, pkt_srcaddr, pkt_dstaddr| filter (srcaddr like 'example-NAT-private-IP' and !isIpv4InSubnet(pkt_srcaddr, 'example-VPC-CIDR'))   
    | stats sum(bytes) as bytesTransferred by pkt_srcaddr, pkt_dstaddr  
    | sort bytesTransferred desc  
    | limit 10

インターネット送信先と通信するインスタンスを特定するには、カスタム VPC フローログを使用します。VPC フローログに pkt-srcaddr フィールドと pkt-dstaddr フィールドが含まれていることを確認してください。詳細については、「NAT ゲートウェイ経由のトラフィック」を参照してください。

Amazon Athena を使用して、トラフィックの急増の原因となっているインスタンスを特定する

Amazon VPC フローログが Amazon S3 にデータを公開する場合は、Amazon Athena を使用してフローログ用のテーブルを作成します。次のフィルターをテーブルに追加して、特定したトラフィックの急増に対応する時間範囲を設定します。

start>= (example-timestamp-start)  
end>= (example-timestamp-end)

注: example-timestamp-start を、トラフィックの急増に対応する時間帯の開始点に置き換えてください。example-timestamp-end を、トラフィックの急増に対応する時間帯の終了点に置き換えてください。

次に、トラフィックの急増の原因となっているインスタンスのテーブルにクエリを実行します。

注: 次のクエリでは、example-NAT-private-IP を NAT ゲートウェイのプライベート IP アドレスに置き換えてください。example-VPC-CIDR を Amazon VPC の CIDR 範囲に置き換えてください。example-database-name.example-table-name を、データベースとテーブルの名前に置き換えてください。example-octets を Amazon VPC の CIDR 範囲の最初の 2 オクテットに置き換えてください。例えば、CIDR 範囲が 10.24.34.0/23 の場合は、example-octets10.24 に置き換えます。

NAT ゲートウェイ経由で最も多くのトラフィックを送信するインスタンスを特定するには、次のクエリを実行します。

SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE srcaddr like example-octets AND dstaddr like example-NAT-private-IP group by 1,2 order by 3 desclimit 10;

インスタンスとの間で行き来するトラフィックを特定するには、次のクエリを実行します。

SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-octets AND dstaddr like example-NAT-private-IP) or (srcaddr like example-NAT-private-IP AND dstaddr like example-octets) group by 1,2 order by 3 desclimit 10;

インスタンスが最も頻繁にアクセスするインターネット送信先を特定するには、次のクエリを実行します。

  • NAT ゲートウェイ経由のアップロードの場合:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-NAT-private-IP AND dstaddr not like example-octets) group by 1,2 order by 3 desclimit 10;0
  • NAT ゲートウェイ経由のダウンロードの場合:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr not like example-octets AND dstaddr like example-NAT-private-IP) group by 1,2 order by 3 desclimit 10;

関連情報

Sample queries (サンプルクエリ)

Boolean, comparison, numeric, datetime, and other functions (ブール値、比較、数値、日時、その他の関数)

Athena を使用して VPC フローログを分析する方法を教えてください

Using AWS Cost Explorer to analyze data transfer costs (AWS Cost Explorer を使用してデータ転送コストを分析する)

コメントはありません

関連するコンテンツ