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

所要時間3分
1

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

簡単な説明

Amazon VPC で NAT ゲートウェイを経由するトラフィックを増加させている主要な要因を特定するには、次のタスクを実行します。

  • Amazon CloudWatch メトリクスを使用し、トラフィックが急増した時間を特定します。
  • CloudWatch Logs を使用して、トラフィック急増の原因となっているインスタンスを特定します。
  • Amazon Simple Storage Service (Amazon S3) または Amazon Athena を使用して、トラフィック急増の原因となっているインスタンスを特定します。

解決策

注: 次の手順では、次の値を実際の情報に置き換えてください。

  • example-NAT-private-IP は、お使いの NAT ゲートウェイのプライベート IP アドレスに置き換えます。
  • example-VPC-CIDR は、Amazon VPC の CIDR に置き換えます。
  • example-database-name.example-table-name は、データベースとテーブルの名前に置き換えます。
  • example-y.y は、Amazon VPC の CIDR の最初の 2 つのオクテットに置き換えます。

CloudWatch メトリクスを使用して、トラフィックが急増した時間を特定する

NAT ゲートウェイと急増した時間を特定して監視するには、次の CloudWatch メトリクスを使用します。

  • BytesInFromSource - アップロード
  • BytesInFromDestination - ダウンロード

Amazon VPC または NAT ゲートウェイのエラスティックネットワークインターフェイスで Amazon VPC フローログが有効になっているかどうかを確認します。Amazon VPC フローログを有効にしていない場合は、フローログを作成し、このオプションを有効にします。Amazon VPC フローログを有効にすると、フローログデータを CloudWatch Logs または Amazon S3 に発行することができます。

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

注: 必要に応じて、CloudFormation テンプレートを使用して、次のクエリを組み込んだ CloudWatch ダッシュボードを作成します。

次の手順を実行します。

  1. CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Logs Insights] を選択します。

  3. ドロップダウンリストから、NAT ゲートウェイのロググループを選択します。

  4. 定義済みの時間範囲を選択するか、[カスタマイズ] を選択して独自の時間範囲を設定します。

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

    filter (dstAddr like example-NAT-private-IP and isIpv4InSubnet(srcAddr, example-VPC-CIDR)) | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10
  6. インスタンスとの間で行き来するトラフィックを特定するには、次のコマンドを実行します。

    filter (dstAddr like example-NAT-private-IP and isIpv4InSubnet(srcAddr, example-VPC-CIDR)) or (srcAddr like example-NAT-private-IP and isIpv4InSubnet(dstAddr, example-VPC-CIDR))| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10
  7. Amazon VPC 内のインスタンスが最も頻繁に通信するインターネット宛先を特定するには、次のコマンドを実行します。
    アップロードの場合:

    filter (srcAddr like example-NAT-private-IP and not isIpv4InSubnet(dstAddr, example-VPC-CIDR)) | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10

    ダウンロードの場合:

    filter (dstAddr like example-NAT-private-IP and not isIpv4InSubnet(srcAddr, example-VPC-CIDR)) | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr| sort bytesTransferred desc
    | limit 10

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

次の手順を実行します。

  1. Amazon S3 コンソールまたは Athena コンソールを開きます。

  2. テーブルを作成します。データベースとテーブルの名前に注釈を付け、次のフィルターを追加して、特定の時間範囲でトラフィック増加の主要な要因となっているインスタンスを確認します。
    start>= (example-timestamp-start)
    end>= (example-timestamp-end)

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

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE srcaddr like example-y.y AND dstaddr like example-NAT-private-IP group by 1,2 order by 3 desclimit 10;
  4. インスタンスとの間で行き来するトラフィックを特定するには、次のコマンドを実行します。

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-y.y AND dstaddr like example-NAT-private-IP) or (srcaddr like example-NAT-private-IP AND dstaddr like example-y.y) group by 1,2 order by 3 desclimit 10;
  5. Amazon VPC 内のインスタンスが最も頻繁に通信するインターネット宛先を特定するには、次のコマンドを実行します。
    アップロードの場合:

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

    ダウンロードの場合:

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

CloudWatch Logs Insights を使用してインターネット接続先と通信しているインスタンスを特定する

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

VPC フローログの例:

${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status} ${pkt-srcaddr} ${pkt-dstaddr}

次の手順を実行します。

  1. CloudWatch コンソールを開きます。
  2. ナビゲーションペインで、[Logs Insights] を選択します。
  3. ドロップダウンリストから、VPC フローログのロググループを選択します。
  4. 定義済みの時間範囲を選択するか、[カスタマイズ] を選択して独自の時間範囲を設定します。
  5. 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
    ダウンロードトラフィックの場合:
    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

関連情報

サンプルクエリ

Amazon VPC フローログのクエリ

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

AWS Cost Explorer を使用してデータ転送コストを分析する

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません