症状
サービスアクセスに関する問題:サービスの応答時間が著しく長くなる、リクエストがタイムアウトする、またはサービスにアクセスできなくなるといった問題が発生します。
高い監視メトリック:ECS コンソールまたは CloudMonitor で、インスタンスのアウトバウンドインターネット帯域幅の使用率が常に 80% を超え、帯域幅制限に近づくか、または達しています。また、ネットワーク接続数が急増することもあります。
監視アラート:ネットワーク帯域幅の使用量が事前に設定したアラートしきい値を超えたことを知らせるショートメッセージまたはメールアラートを受信します。
原因
異常なプロセスまたは悪意のあるプログラム:インスタンスがマイニングプログラムやトロイの木馬ウイルスに感染している、または DDoS ボットネットの一部として利用されている。これらの悪意のあるプログラムは、大量の異常なネットワークトラフィックを生成します。
ネットワーク攻撃:DDoS 攻撃やブルートフォース攻撃などの悪意のある攻撃がインスタンスの公開ポートを標的にし、無効なリクエストでインバウンド帯域幅を飽和させます。
インスタンスのネットワーク仕様の不足:ビジネスの成長に伴い、インスタンスの帯域幅仕様が通常のサービストラフィックを処理できなくなり、パフォーマンスのボトルネックが生じます。
ソリューション
まず、sar ツールを使用して異常なトラフィックを持つネットワークインターフェースカード (NIC) を特定します。次に、iftop ツールを使用して帯域幅を消費しているピア IP アドレスを特定するか、nethogs ツールを使用してトラフィックの多いプロセスを特定します。最後に、特定されたプロセスと IP アドレスに基づいて適切な措置を講じます。
ステップ 1:トラフィックの多い NIC の特定
sar ツールを使用してトラフィックの多い NIC を特定し、調査範囲を絞り込みます。
VNC 接続を使用して Elastic Compute Service (ECS) インスタンスにログインします。
ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。 [接続] をクリックし、[VNC] を選択します。ユーザー名とパスワードを入力して ECS インスタンスにログインします。
ネットワークインターフェースの統計情報を収集します。
# -n DEV: ネットワークデバイスの統計情報を報告します。 # 1 5: 1 秒ごとにサンプリングし、合計 5 回行います。 sudo sar -n DEV 1 5トラフィックの多い NIC を特定します。
AverageセクションのtxkB/s(平均アウトバウンド帯域幅) の値に注目します。値を比較して、最も高い値を持つIFACE(NIC 名) を見つけます。rxkB/sは平均インバウンド帯域幅を表します。
この例では、
eth0NIC のtxkB/sの値が最も高いため、eth0がトラフィックの多い NIC として特定されます。
ステップ 2:トラフィックの多い問題の分析と解決
NIC トラフィックを分析します。
iftop:接続の観点から NIC トラフィックを監視します。このツールは、インスタンスとの間で最もトラフィックの多い IP アドレスとポートを見つけるのに役立ちます。Web サービスの場合、
iftopを使用してトラフィックの多い IP アドレスを特定し、logwatchなどのツールを使用して Web ログを分析し、トラフィックが正規のものであるか判断できます。nethogs:プロセスの観点から NIC トラフィックを監視します。このツールは、最も多くのネットワーク帯域幅を消費しているプロセスを見つけるのに役立ちます。
iftop ツール
iftopツールをインストールします。Alibaba Cloud Linux および CentOS の場合
sudo yum install -y iftopUbuntu および Debian の場合
sudo apt update sudo apt install -y iftop
トラフィックの多い NIC を監視します。
<IFACE>を ステップ 1 で特定したトラフィックの多い NIC の名前に置き換えます。# -i <IFACE>: 監視する NIC を <IFACE> として指定します。 # -P: ポート番号 (Port) を表示します。 sudo iftop -i <IFACE> -Pたとえば、トラフィックの多い NIC が
eth0の場合、sudo iftop -i eth0 -Pを実行します。NIC トラフィックを分析して、最も帯域幅を消費しているピア IP アドレスを見つけます。

リアルタイムのトラフィック情報が降順でソートされます。
=>記号は、ご利用のインスタンスからピア IP アドレスへのアウトバウンドデータレートを示します。この例では、ご利用のインスタンスから IP アドレス140.205.11.xへの過去 2 秒間の平均アウトバウンドトラフィックは4.32 Mb/sです。qを入力してiftopツールのインターフェースを終了します。ポートに対応するプロセスを表示します。
<PEER_IP_ADDRESS_CONSUMING_BANDWIDTH>を前のステップで取得したピア IP アドレスに置き換えます。sudo netstat -antp | grep <PEER_IP_ADDRESS_CONSUMING_BANDWIDTH>出力例:

この例では、ローカル IP アドレスは
172.16.0.xで、ピア IP アドレスは140.205.11.xです。対応するプロセスはnginx: workerで、プロセス ID (PID) は2282です。
nethogs ツール
例
nethogs ツールをインストールします。
Alibaba Cloud Linux および CentOS の場合
sudo yum install -y nethogsUbuntu および Debian の場合
sudo apt update sudo apt install -y nethogs
トラフィックの多い NIC を監視します。
<IFACE>を ステップ 1 で特定したトラフィックの多い NIC の名前に置き換えます。# デフォルトの監視間隔は 1 秒です。-d パラメーターを使用して監視間隔を指定できます。 sudo nethogs <IFACE>たとえば、トラフィックの多い NIC が
eth0の場合、sudo nethogs eth0を実行します。NIC トラフィックを分析します。

SENT列には、インスタンスがデータを送信しているレートが表示されます。この例では、最もトラフィックを消費しているプロセスはnginx: workerで、アウトバウンドトラフィックレートは約 696 KB/s、プロセス ID (PID) は2282です。qを入力してツールを終了します。
プロセスまたはピア IP アドレスに基づいてソリューションを選択します。
特定されたプロセス (wget や curl などのダウンロードツール、または不明なプログラムなど) が不審な動作を示す場合、または悪意のある IP アドレスと通信している場合:
異常なプロセスを終了する:
sudo kill -15 <PID>を使用して異常なプロセスを終了します。<PID>を特定したトラフィックの多いプロセスの PID に置き換えます。重要プロセスを終了する前に、サービスの中断を避けるため、それが重要なビジネスプロセスでないことを確認してください。
悪意のある IP アドレスをブロックする:セキュリティグループルールを管理して、悪意のある IP アドレスからのアクセスをブロックします。
悪意のあるプログラムのスキャンと削除:Security Center のウイルス検出と駆除機能 (有料機能) を使用してインスタンスを完全にスキャンし、検出されたウイルスを駆除します。
トラフィックの多い原因が正規のビジネスプロセスである場合、これは帯域幅のニーズが増加したことを示しています:
帯域幅のスペックアップ:インスタンスの現在の帯域幅がボトルネックになっている場合は、インスタンスの帯域幅をスペックアップします。
アプリケーションの最適化:アプリケーションコードをチェックして、不要なデータ転送の削減、キャッシュの追加、データの圧縮など、最適化の可能性を探します。
トラフィックのレート制限:ビジネスで許容される場合は、
iptablesなどのツールを使用して、特定の IP アドレスまたはポートのトラフィックを制限します。これにより、単一のユーザーまたはサービスが利用可能なすべての帯域幅を消費するのを防ぐことができます。
異常な帯域幅消費を伴うプロセスが見つからないが、全体的な帯域幅使用率が高いままである場合、これは総トラフィック量がインスタンスのネットワーク容量を超えていることを示しています。インスタンスの帯域幅をスペックアップする必要があります。
推奨事項
継続的な分析のために、定期的にシステムメトリックを収集します。詳細については、「atop ツールを使用した Linux システムメトリックの監視」をご参照ください。
セキュリティを強化するために、Anti-DDoS Origin または Anti-DDoS Pro および Anti-DDoS Premium を購入し、適切な保護対象オブジェクトと緩和ポリシーを設定します。
将来のリスクや異常に関する通知を受け取るために、インスタンスの監視とアラートを設定します。