Linuxでのネットワーク使用状況の監視
1. 概要
この記事では、Linuxでネットワークの使用状況を監視するためのさまざまなツールについて説明します。 特に、次のネットワーク監視ツールについて説明します。
- nload
- スピードメーター
- iftop
- ネットホッグ
2. ネットワーク監視ツール
Linuxでネットワークの使用状況を監視するために使用できるツールはたくさんあります。 これらのツールは、システム内のネットワーク使用状況をどの程度詳細に表示するかによって大まかに分類できます。
一方では、インターフェースごとのネットワーク使用量を1つの図として報告するツールがあります。 これらは、ネットワークインターフェイスのすべてのネットワークトラフィックを単純に合計します。
一方、ネットワークの使用状況をソケットごとまたはプロセスごとにグループ化するツールがあります。 さまざまなネットワークトラフィックをそれぞれのソケットまたはプロセスIDにグループ化します。 したがって、これにより、ネットワーク帯域幅の消費に関する詳細が提供されます。
Linuxでこれらのツールを見て、それらをどのように使用できるかを見てみましょう。
3. nload
nload は、システムのネットワーク使用状況を表示するコマンドラインツールです。 これは、ネットワークインターフェイス上のすべてのネットワークトラフィックを単純に合計するLinuxのネットワーク監視ツールのカテゴリに属しています。
3.1. インストール
DebianベースのLinuxの場合、apt-getを使用してインストールできます。
$ apt-get install -y nload
一方、RHELベースのLinuxではyumを使用します。
$ yum install -y epel-release
$ yum install -y nload
3.2. 基本的な使用法
最も単純な形式では、nloadは引数なしで呼び出すことができます。
$ nload
このコマンドは、インタラクティブな画面を起動します。
Device eth0 [172.17.0.2] (1/4):
============================================================Incoming:
Curr: 1.09 kBit/s
Avg: 760.00 Bit/s
Min: 0.00 Bit/s
Max: 1.09 kBit/s
Ttl: 16.98 MByte
Outgoing:
Curr: 1.09 kBit/s
Avg: 760.00 Bit/s
Min: 0.00 Bit/s
Max: 1.09 kBit/s
Ttl: 361.65 kByte
ディスプレイの上部には、現在監視しているデバイスがあります。 左右の矢印キーを使用して、システムで使用可能なさまざまなネットワークインターフェイス間を循環できます。
画面の残りの部分には、着信および発信ネットワークトラフィックのネットワーク使用状況が表示されます。 さらに、平均、最小、最大の数値などの基本的な統計数値を提供します。
3.2. 更新間隔の変更
デフォルトでは、ネットワーク使用量は500ミリ秒ごとに更新されます。 更新間隔を変更するには、フラグ-tの後にミリ秒単位の整数値を渡すことができます。
たとえば、2000ミリ秒ごとに1回更新するには、次のようにします。
$ nload -t 2000
結果の画面は2秒ごとに更新されます。
3.3. ユニットの設定
ネットワークトラフィックレートの単位を変更するには、フラグ-uを使用できます。
$ nload -u m
上記のコマンドは、 nload プログラムを実行し、ネットワークトラフィックレートをメガビット/秒で表示します。
フラグ-uは、次の値を受け入れます。
- b (ビットの場合)または B (バイトの場合)
- k (キロビットの場合)または K (キロバイトの場合)
- m (メガビットの場合)または M (メガバイトの場合)
- g (ギガビットの場合)または G (ギガバイトの場合)
さらに、フラグ-U を使用して、転送されるデータの合計量の単位を変更できます。 このフラグは、フラグ-uと同様の値も受け入れます。
3.4. すべてのデバイスの表示
フラグ-mを使用して、nloadにすべてのネットワークインターフェイスを1つの画面に表示させることができます。
$ nload -m
このモードでは、すべてのインターフェイスのネットワーク使用状況を1つの画面で確認できます。 ただし、ネットワークトラフィックのグラフは表示されません。
4. スピードメーター
速度計はネットワーク監視ツールです。 nload と同様に、ネットワークインターフェイス上のネットワークトラフィックをソケットまたはプロセスによって区別しません。
ただし、ネットロードとの違いの1つは、スピードメーターの表示がはるかにカスタマイズ可能であることです。
4.1. インストール
DebianベースのLinuxでは、apt-getを使用してspeedometerをインストールします。
$ apt-get install -y speedometer
残念ながら、スピードメーターはyumパッケージマネージャーでは使用できません。
4.2. 基本的な使用法
ネットワークインターフェイスeth0の発信ネットワークトラフィックレートを監視しましょう。
$ speedometer -t eth0
コマンドを実行すると、コンソール出力にグラフが表示されます。 さらに、このグラフは、インターフェースeth0を監視しているスピードメーターインスタンスによって絶えず更新されています。
次に、グラフの下部に追加情報が表示されます。
左から順に、 TX:eth0 というラベルは、これがネットワークインターフェイスeth0の伝送速度のグラフであることを示しています。 次に、ラベルの右側に3つの数字があります。
最初の数値は、最後にサンプリングされたレートを表します。 次に、2番目の数値は、最後の6つのサンプルの加重平均を表します。 重みは、最新の数値が古いレートよりも重みが大きくなるようなものです。
最後に、3番目の数値は、過去のすべてのデータポイントの単純な平均です。
4.3. 複数のグラフを表示する
フラグ-cを使用して、複数のグラフを並べて表示できます。 たとえば、インターフェイスeth0とloの受信レートを並べて表示できます。
$ speedometer -r eth0 -c -r lo
フラグ-cは、異なるグラフ定義を分割する区切り文字として機能します。 コマンドからわかるように、フラグ -c の後には、引数 -rloが続きます。 このフラグの組み合わせにより、インターフェイスloの受信トラフィックレートが定義されます。
実行すると、2つのグラフが並んで表示され、着信トラフィックがインターフェイスeth0とloに報告されます。
5. iftop
iftop は、インターフェイスをリッスンしてネットワークの使用状況を表示するコマンドラインツールです。 nloadおよびspeedometerとは対照的に、各ソケットのネットワーク使用状況を監視します。
5.1. インストール
DebianベースのLinuxにiftopをインストールするには、apt-getを使用します。
$ apt-get install -y iftop
RHELベースのLinuxの場合:
$ yum install -y epel-release
$ yum install -y iftop
5.2. 基本的な使用法
iftopを引数なしで起動できます。
$ iftop
ネットワークインターフェイスを指定せずにiftopを実行すると、最初に検出した外部インターフェイスでリッスンします。
5.3. 特定のインターフェイスの監視
フラグ-iを使用して、特定のインターフェイスでiftopを実行できます。
$ iftop -i lo
上記のコマンドにより、iftopはloインターフェイスでリッスンします。
5.4. DNS解決をオフにする
デフォルトでは、 iftop は、DNSを取得するために各ソケット接続のIPを検索しようとします。 ただし、これはDNS解決中にネットワークオーバーヘッドを課すため、望ましくない場合があります。
DNS解決を無効にするために、フラグ-nを指定してiftopを起動できます。
$ iftop -n
5.5. 特定のネットワークの監視
iftopでは、フラグ-Fを使用して特定のネットワークを監視することもできます。 たとえば、ネットワーク監視をネットワークブロック192.168.0.1/16に絞り込むことができます。
$ iftop -F 192.168.0.1/16
コマンドはiftopを開始し、192.168.0.1/16ネットワークブロックに分類されるアドレスに出入りするトラフィックのみを監視します。
CIDR表記の代わりに、ネットワークマスクを使用できます。 たとえば、上記のコマンドは、明示的なマスクを使用して置き換えることができます。
$ iftop -F 192.168.0.1/255.255.0.0
6. nethogs
nethogs は、ネットワークの使用状況を監視するためのさらに別のコマンドラインツールです。 ネットワークトラフィックを生成または受信するプロセスIDによって、ネットワークインターフェイス上のネットワークトラフィックをグループ化します。 その結果、さまざまなプロセスのネットワーク帯域幅の消費を監視できるようになります。
6.1. インストール
DebianベースのLinuxにnethogsをインストールするには、apt-getコマンドを使用します。
$ apt-get install -y nethogs
同様のインストールは、yumを使用してRHELベースのLinuxで実行できます。
$ yum install -y nethogs
6.2. 基本的な使用法
nethogsコマンドを引数なしで実行してみましょう。
$ nethogs
すぐにインタラクティブな画面が表示されます。
画面には、各プロセスで消費される帯域幅が表示されます。
PID 列には、この情報行が対応するプロセスIDが表示されます。 次に、プロセスを開始したユーザーがUSER列に表示されます。 続いて、 PROGRAM 列に、帯域幅を消費しているプログラムが表示されます。
DEV 列に、インターフェースの名前が表示されます。 最後に、SENT列とRECEIVED列には、このプロセスによって送受信されたバイト数がそれぞれ表示されます。
6.3. インタラクティブコントロール
異なる表示モードを切り替えるには、mキーを押します。 使用可能なさまざまな表示モードは、キロバイト/秒、キロバイト、バイト、およびメガバイトです。
4つの異なるモードのうち、最初のモードのみがレート情報を表示していることに注意してください。 残りの表示モードでは、さまざまなメトリックプレフィックスで転送されたデータの量が表示されます。
また、RECEIVEDまたはSENTの値で行をインタラクティブに並べ替えることもできます。
6.4. 更新間隔の変更
更新間隔を変更するには、フラグ-dを使用できます。
$ nethogs -d 2
上記のコマンドは、2秒のリフレッシュレートでnethogsインスタンスを開始します。
6.5. トレースモード
監視の目的で、nethogsをトレースモードで開始できます。
$ nethogs -t
トレースモードでは、レポートが生成され、コンソール出力に追加されます。 したがって、さらなる処理に使用できる時間の経過に伴うレポートのストリームを提供します。
7. 概要
この記事では、Linuxで利用できるさまざまなネットワーク監視ツールについて説明しました。 次に、これらのツールを、システムのネットワーク使用状況を報告するときに提供される詳細レベルごとにグループ化する方法を説明することから始めました。
その後、最も単純なツールnloadから始めました。 nload が、すべてのネットワークトラフィックを合計することにより、ネットワークインターフェイスでのネットワーク使用状況を報告する方法を確認します。
さらに、スピードメーターも確認しました。 nload と非常によく似ていますが、スピードメーターはさまざまなディスプレイのカスタマイズを提供します。
次に、 iftop を使用して、それぞれの接続ソケットによってグループ化されたネットワークトラフィックを監視する方法を確認しました。 その結果、 nloadおよびスピードメーターと比較して、情報の深さが増します。
最後に、 nethogs を使用して、それぞれのプロセスIDでグループ化されたネットワークトラフィックを監視する方法について説明しました。