インスタンスのネットワークパフォーマンスのモニタリング - Amazon Elastic Compute Cloud

インスタンスのネットワークパフォーマンスのモニタリング

Elastic Network Adapter (ENA) ドライバーは、有効になっているインスタンスからネットワークパフォーマンスメトリクスを公開します。このようなメトリクスを使用して、インスタンスのパフォーマンスの問題のトラブルシューティング、ワークロードに適したインスタンスサイズの選択、スケーリングアクティビティの事前計画、およびアプリケーションのベンチマークにより、メトリクスがインスタンスで利用できるパフォーマンスを最大化するかどうかを判断できます。

Amazon EC2 では、インスタンスレベルでネットワーク最大値を定義し、インスタンスサイズ全体で一貫したネットワークパフォーマンスを含め、質の高いネットワークエクスペリエンスを実現します。AWS は、各インスタンスのために次の最大値を提供します。

  • 帯域幅機能 – 各 EC2 インスタンスには、インスタンスタイプとサイズに基づいて、インバウンドトラフィックとアウトバウンドトラフィックの総帯域幅の最大帯域幅があります。一部のインスタンスでは、ネットワーク I/O クレジットメカニズムを使用して、平均帯域幅使用率に基づいてネットワーク帯域幅を割り当てます。Amazon EC2 には、AWS Direct Connect およびインターネットへのトラフィックの最大帯域幅もあります。

  • Packet-per-second (PPS) パフォーマンス – 各 EC2 インスタンスには、インスタンスタイプとサイズに基づいて、最大 PPS パフォーマンスがあります。

  • 追跡された接続 – セキュリティグループは、確立された各接続を追跡し、リターンパケットが期待どおりに配信されるようにします。インスタンスごとに追跡できる接続の最大数があります。

  • リンクローカルサービスアクセス – Amazon EC2 は、DNS サービス、インスタンスメタデータサービス、Amazon Time Sync Service などのサービスへのトラフィックに対して、ネットワークインターフェイスごとに最大 PPS を提供します。

インスタンスのネットワークトラフィックが最大値を超えると、AWS はキューイングしてからネットワークパケットを低下させることによって、最大値を超えるトラフィックを形成します。ネットワークパフォーマンスメトリクスを使用して、トラフィックが最大値を超えるタイミングをモニタリングできます。これらのメトリクスは、ネットワークトラフィックへの影響、およびネットワークパフォーマンスの問題の可能性をリアルタイムで通知します。

要件

Linux インスタンスには、次の要件が適用されます。

  • ENA ドライババージョン 2.2.10 以降をインストールします。インストールしたバージョンを検証するには、ethtool コマンドを使用します。次の例では、バージョンは最小要件を満たしています。

    [ec2-user ~]$ ethtool -i eth0 | grep version version: 2.2.10

    ENA ドライバーをアップグレードするには、「拡張ネットワーキング」を参照してください。

  • これらのメトリクスを Amazon CloudWatch にインポートするには、CloudWatch エージェントをインストールします。詳細については、Amazon CloudWatch ユーザーガイド の「ネットワークパフォーマンスメトリクスの収集」を参照してください。

ENA ドライバーのメトリクス

ENA ドライバーは、次のメトリクスをリアルタイムでインスタンスに配信します。前回のドライバーのリセット以降に、各ネットワークインターフェイスでキューまたはドロップされたパケットの累積数を示します。

Linux インスタンス、FreeBSD インスタンス、および DPDK 環境では、次のメトリクスを使用できます。

メトリクス 説明
bw_in_allowance_exceeded

インバウンド集計帯域幅がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。

bw_out_allowance_exceeded

アウトバウンド集計帯域幅がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。

conntrack_allowance_exceeded

接続トラッキングがインスタンスの最大数を超え、新しい接続を確立できなかったためにドロップされたパケットの数。これにより、インスタンスとの間で送受信されるトラフィックのパケット損失が発生する可能性があります。

linklocal_allowance_exceeded

ローカルプロキシサービスへのトラフィックの PPS がネットワークインターフェイスの最大値を超えたためにドロップされたパケットの数。これは、DNS サービス、インスタンスメタデータサービス、および Amazon Time Sync Service へのトラフィックに影響します。

pps_allowance_exceeded

双方向 PPS がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。

Linux インスタンスのネットワークパフォーマンスメトリクスの表示

メトリクスをお気に入りのツールに公開して、メトリクスデータを視覚化できます。例えば、CloudWatch エージェントを使用してメトリックスを Amazon CloudWatch に公開できます。エージェントにより、個々のメトリクスを選択し、公開を制御できます。

ethtool を使用して、次のように eth0 などの各ネットワークインターフェイスのメトリクスを取得することもできます。

[ec2-user ~]$ ethtool -S eth0 bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0

ENA 用の DPDK ドライバーを備えたネットワークパフォーマンスメトリクス

ENA ドライババージョン 2.2.0 以降では、ネットワークメトリクスのレポートがサポートされています。DPDK 20.11 には ENA ドライバー 2.2.0 が含まれており、この機能をサポートする最初の DPDK バージョンです。

サンプルアプリケーションを使用して、DPDK 統計を表示できます。サンプルアプリケーションの対話型バージョンを開始するには、次のコマンドを実行します。

./app/dpdk-testpmd -- -i

この対話型セッションでは、コマンドを入力してポートの拡張統計情報を取得できます。次のコマンド例では、ポート 0 の統計情報を取得します。

show port xstats 0

次に、DPDK サンプルアプリケーションとの対話型セッションの例を示します。

[root@ip-192.0.2.0 build]# ./app/dpdk-testpmd -- -i EAL: Detected 4 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: Probing VFIO support... EAL: Invalid NUMA socket, default to 0 EAL: Invalid NUMA socket, default to 0 EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket 0) EAL: No legacy callbacks, legacy socket not created Interactive-mode selected Port 0: link state change event testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc Warning! port-topology=paired and odd forward ports number, the last port will pair with itself. Configuring Port 0 (socket 0) Port 0: 02:C7:17:A2:60:B1 Checking link statuses... Done Error during enabling promiscuous mode for port 0: Operation not supported - ignore testpmd> show port xstats 0 ###### NIC extended statistics for port 0 rx_good_packets: 0 tx_good_packets: 0 rx_good_bytes: 0 tx_good_bytes: 0 rx_missed_errors: 0 rx_errors: 0 tx_errors: 0 rx_mbuf_allocation_errors: 0 rx_q0_packets: 0 rx_q0_bytes: 0 rx_q0_errors: 0 tx_q0_packets: 0 tx_q0_bytes: 0 wd_expired: 0 dev_start: 1 dev_stop: 0 tx_drops: 0 bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0 rx_q0_cnt: 0 rx_q0_bytes: 0 rx_q0_refill_partial: 0 rx_q0_bad_csum: 0 rx_q0_mbuf_alloc_fail: 0 rx_q0_bad_desc_num: 0 rx_q0_bad_req_id: 0 tx_q0_cnt: 0 tx_q0_bytes: 0 tx_q0_prepare_ctx_err: 0 tx_q0_linearize: 0 tx_q0_linearize_failed: 0 tx_q0_tx_poll: 0 tx_q0_doorbells: 0 tx_q0_bad_req_id: 0 tx_q0_available_desc: 1023 testpmd>

サンプルアプリケーションとその使用による拡張統計情報の取得の詳細については、DPDK ドキュメントの「Testpmd アプリケーションユーザーガイド」を参照してください。

FreeBSD を実行しているインスタンスのメトリクス

ENA FreeBSD ドライバーのバージョン 2.3.0 以降では、FreeBSD を実行しているインスタンスでのネットワークパフォーマンスメトリクスの収集をサポートしています。FreeBSD メトリクスの収集を有効にするには、次のコマンドを入力し、間隔を 1~3600 の値に設定します。FreeBSD メトリクスを収集する頻度を秒単位で特定します。

sysctl dev.ena.network_interface.eni_metrics.sample_interval=interval

例えば、次のコマンドは、ネットワークインターフェイス 1 の FreeBSD メトリクスを 10 秒ごとに収集するようにドライバーを設定します。

sysctl dev.ena.1.eni_metrics.sample_interval=10

FreeBSD メトリクスの収集をオフにするには、上記のコマンドを実行し、間隔を 0 に指定します。

FreeBSD メトリクスを収集したら、次のコマンドを実行して、収集されたメトリクスの最新セットを取得できます。

sysctl dev.ena.network_interface.en1_metrics