Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

NetHogsで実現! Linuxのプロセス別ネットワーク帯域使用量をリアルタイム監視する方法

Linux向けのオープンソースネットワーク監視ツールは数多く存在します。たとえば、iftopコマンドで帯域使用状況を監視したり、netstatやssコマンドでインターフェース統計レポートを確認したり、topコマンドでシステム上の実行中プロセスを監視したりすることができます。

しかし、「プロセスごとのネットワーク帯域使用量をリアルタイムで把握したい」というニーズがあるならば、選ぶべきはNetHogs一択といえるでしょう。

NetHogsで実現! Linuxのプロセス別ネットワーク帯域使用量をリアルタイム監視する方法

NetHogsとは何か?

NetHogsは、Linuxのtopコマンドに似た操作性を持つオープンソースのコマンドラインツールで、各プロセスやアプリケーションが消費しているネットワーク帯域をリアルタイムで監視するために使用されます。

NetHogsプロジェクトページより引用:

NetHogsは小さな「net top」ツールです。多くのツールがプロトコル別やサブネット別にトラフィックを分類するのに対し、NetHogsはプロセス単位で帯域をグループ化します。また、特別なカーネルモジュールのロードを必要としません。突然大量のネットワークトラフィックが発生した際にも、NetHogsを起動すればどのPIDが原因かを即座に確認できます。そのため、暴走して帯域を占有しているプログラムを簡単に特定できるのです。

本記事では、Unix/Linux環境においてnethogsユーティリティをインストールし、プロセスごとのネットワーク帯域使用量をリアルタイムで確認する方法を解説します。

LinuxへのNetHogsのインストール方法

NetHogsは多くのLinuxディストリビューションで利用可能です。お使いのディストリビューションに応じて、以下のいずれかの方法でインストールしてください。

RHEL / CentOS / Rocky Linux / AlmaLinuxの場合

RedHat系ディストリビューションでは、まずEPELリポジトリを有効化してから、次のyumコマンドでnethogsパッケージをダウンロード・インストールします。

# yum install epel-release
# yum install nethogs

Fedora Linuxの場合は、dnfコマンドを使用します。

# dnf install nethogs

Ubuntu / Linux Mint / Debianの場合

以下のaptコマンドでnethogsパッケージをインストールします。

$ sudo apt install nethogs

NetHogsを使ってプロセス別に帯域を監視する

RedHat系システムでは、次のコマンドでnethogsを起動します。

# nethogs

Debian系Linuxではroot権限が必要となるため、sudoコマンドを使って実行します。

$ sudo nethogs

画面には各プロセスの送信(SENT)受信(RECEIVED)のトラフィック量が表示され、下部に全体の合計値が算出されます。後述の対話操作キーを使えば、表示順序の変更や並べ替えも自由に行えます。

NetHogsのコマンドラインオプション

nethogsの主なコマンドラインオプションは以下の通りです。「-d」でリフレッシュ間隔を指定でき、続けて「デバイス名」を指定すると特定のデバイスの帯域のみを監視できます(デフォルトはeth0)。

たとえば、リフレッシュ間隔を5秒に設定する場合は、次のように入力します。

# nethogs -d 5
$ sudo nethogs -d 5

特定のデバイス(eth0)のみを監視する場合は、次のコマンドを使用します。

# nethogs eth0
$ sudo nethogs eth0

eth0eth1の両方のインターフェースを同時に監視する場合は、以下のように入力します。

# nethogs eth0 eth1
$ sudo nethogs eth0 eth1

NetHogsのオプション一覧

  • -d: リフレッシュ間隔(遅延秒数)を指定する
  • -h: 利用可能なコマンドのヘルプを表示する
  • -p: プロミスキャスモードでスニッフィングする(非推奨)
  • -t: tracemodeで表示する
  • -V: バージョン情報を表示する

NetHogsの対話操作(キーボードショートカット)

nethogsの実行中に使える便利な対話操作キーは以下の通りです。

  • m: 帯域の表示単位を切り替える(KB/秒 → KB → B → MB)
  • r: 受信トラフィック量の多い順に並べ替える
  • s: 送信トラフィック量の多い順に並べ替える
  • q: 終了してシェルプロンプトに戻る

nethogsユーティリティのコマンドラインオプションの一覧については、ターミナルから「man nethogs」または「sudo man nethogs」を実行してマニュアルページをご確認ください。さらに詳しい情報は、Nethogsの公式プロジェクトページでも公開されています。

まとめ

NetHogsを使えば、追加設定や特殊なカーネルモジュールなしに、プロセス単位のネットワーク帯域使用量を即座に可視化できます。サーバーの異常なトラフィック発生時の原因究明や、日常的な帯域モニタリングとして、ぜひ活用してみてください。

  1. Linuxでファイル名を変更する2つの簡単な方法:mvとrenameコマンドの使い分け

    この記事では、Linux環境でファイルや複数ファイルの名前を変更するための、2つの異なる方法を解説します。 mvコマンドとrenameコマンドの使い方、そしてそれぞれのコマンドを使い分ける理由について詳しく見ていきましょう。 mvコマンドでのファイル名変更 – もはや推奨されない方法 まずは具体例から始めます。Webディレクトリ内のファイル拡張子が何らかの理由で壊れてしまった状況を想定しましょう。ここではブログのファイルを使用します。 ping www.linuxscrew.com #まず接続確認 wget -m www.linuxscrew.com #サイトをミラーリング これでウェブサイト

  2. 毎日の作業で本当に役立つBash履歴ショートカット7選

    多くのBash履歴ショートカットのガイドは、利用可能なショートカットを網羅的にリストアップしています。しかし問題なのは、私がショートカットを一度使ってみても、すべてのパターンを試そうとして頭が混乱し、その後日常業務に戻ると完全に忘れてしまうことでした。結局残っていたのは、Bashを使い始めた頃に覚えた有名な!!のテクニックだけでした。 つまり、ほとんどのショートカットは記憶に定着しなかったのです。 この記事では、私が毎日実際に使っているショートカットを紹介します。内容の一部は私の著書『Learn Bash the Hard Way』(プレビューを読むことで詳細を確認できます)に基づいています。