この記事は、進行中のパフォーマンス監視シリーズ記事の一部です。
この記事では、vnstat ユーティリティを使用してネットワーク トラフィックを監視し、後で分析するためにログに記録する方法に焦点を当てます。
vnstat は、システム上のインターフェースのネットワーク トラフィックを表示およびログに記録するコマンド ライン ユーティリティです。これは、カーネルが提供するネットワーク統計に依存します。したがって、vnstat は、ネットワーク トラフィックの監視とログ記録のためにシステムに負荷を追加しません。
1. vnStat をインストール
Linux ディストリビューションに固有のリポジトリからシステムに vnStat をインストールします。
たとえば、Ubuntu では、以下に示すように apt-get を使用してインストールします。
$ apt-get install vnstat
ソースからインストールする場合は、ここから vnStat ソースをダウンロードするか、以下に示すように wget を使用してダウンロードしてインストールします。
Mergecap と Tshark を使用してネットワーク トラフィックを分析することもできます。
wget http://humdi.net/vnstat/vnstat-1.11.tar.gz cd vnstat-1.11 make make install
他のソース ベースのインストールで通常行う「./configure」は必要ないことに注意してください。
vnstat はカーネルによって提供される情報に依存するため、次のコマンドを実行して、カーネルが vnStat が期待するすべての情報を提供しているかどうかを確認します。
# vnstat --testkernel This test will take about 60 seconds. Everything is ok.
2. vnStat を使用して監視するインターフェイスを選択
vnStat は、特に要求しない限り、インターフェースを監視しません。
eth0 の監視を開始するには、次の手順を実行します。これは一度だけ実行する必要があります。以下に示すように、これによりデータベース ファイル eth0 が /var/lib/vnstat ディレクトリの下に作成され、この特定のインターフェイスのすべてのネットワーク トラフィック ログ メッセージが含まれます。
# vnstat -u -i eth0 Error: Unable to read database "/var/lib/vnstat/eth0". Info: -> A new database has been created.
vnStat が監視できるシステムで利用可能なすべてのインターフェースを表示するには、次の手順を実行します。
# vnstat --iflist Available interfaces: lo eth0 eth1 sit0
これらの情報をバックグラウンドで監視および記録する vnstatd (vnstat デーモン) を開始します。
# vnstatd -d # ps -ef | grep vnst root 14353 1 0 09:12 ? 00:00:00 vnstatd -d root 14355 330 0 09:12 pts/1 00:00:00 grep vnst
注:「vnstatd -d」を /etc/rc.local ファイルに追加して、システムを再起動するたびに自動的に開始されるようにすることができます。
3. vnStat の基本的な使い方
引数なしで vnstat を実行すると、次の情報を含む簡単な要約が得られます:
- /var/lib/vnstat/ の下にある vnStat データベースが最後に更新された時刻
- 特定のインターフェースの統計情報の収集を開始した時点から
- 過去 2 か月および過去 2 日間のネットワーク統計データ (送信バイト数、受信バイト数)。
# vnstat Database updated: Sat Oct 15 11:54:00 2011 eth0 since 10/01/11 rx: 12.89 MiB tx: 6.94 MiB total: 19.82 MiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- Sep '11 12.90 MiB | 6.90 MiB | 19.81 MiB | 0.14 kbit/s Oct '11 12.89 MiB | 6.94 MiB | 19.82 MiB | 0.15 kbit/s ------------------------+-------------+-------------+--------------- estimated 29 MiB | 14 MiB | 43 MiB | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- yesterday 4.30 MiB | 2.42 MiB | 6.72 MiB | 0.64 kbit/s today 2.03 MiB | 1.07 MiB | 3.10 MiB | 0.59 kbit/s ------------------------+-------------+-------------+--------------- estimated 4 MiB | 2 MiB | 6 MiB |
注:vnStat をインストールしたばかりの場合は、「eth0:まだ十分なデータがありません。」というメッセージが表示されます。しばらく待ってから、コマンドを再試行してください。
4. vnStat 時間、日、月、週 ネットワーク データ
「vnstat -h」(または)「vnstat –hours」を使用して、時間ごとのネットワーク統計データの内訳を表示します。これは、テキスト ベースのグラフも表示します。
「vnstat -d」(または)「vnstat –days」を使用して、ネットワーク統計データの日別内訳を表示します。
# vnstat -d eth0 / daily day rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- 10/10/11 2.48 MiB | 1.28 MiB | 3.76 MiB | 0.36 kbit/s 10/11/11 4.07 MiB | 2.17 MiB | 6.24 MiB | 0.59 kbit/s 10/12/11 4.30 MiB | 2.42 MiB | 6.72 MiB | 0.64 kbit/s 10/13/11 2.06 MiB | 1.10 MiB | 3.16 MiB | 0.60 kbit/s ------------------------+-------------+-------------+--------------- estimated 3 MiB | 1 MiB | 4 MiB |
「vnstat -m」(または)「vnstat –months」を使用して、月ごとのネットワーク統計データの内訳を表示します。
# vnstat --m eth0 / monthly month rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- Sep '11 12.90 MiB | 6.90 MiB | 19.81 MiB | 0.14 kbit/s Oct '11 12.92 MiB | 6.96 MiB | 19.89 MiB | 0.15 kbit/s ------------------------+-------------+-------------+--------------- estimated 29 MiB | 14 MiB | 43 MiB |
日や月と同様に、「vnstat -m」(または) 「vnstat –months」を使用して、週ごとのネットワーク統計データの内訳を表示します。
5.データを Excel または他の DB にエクスポート
ネットワーク監視データを Excel または他のデータベースにエクスポートする場合は、セミコロンで区切られたテキスト形式でデータをダンプできます。これを Excel または他のデータベースにインポートできます。
–dumpdb 出力の最初の数行には、いくつかのヘッダー情報が含まれています。ヘッダー行の後に、「d;」で始まる 30 行あります。 (d;0;1318316406;1;0;386;698;1)。この行には、セミコロンで区切られた次の情報が含まれています。
- d – 日を表します
- 0 – 日付。 0 は今日を示します。
- 1318316406 – Unix 形式のデータ
- これに続いて、送受信されたバイトが含まれます
$ vnstat --dumpdb interface;eth0 created;1218562937 updated;1218546895 totalrx;3 totaltx;1 ... ... d;0;1328316406;1;0;386;698;1 d;1;1345262937;2;1;494;289;1
「vnstat –oneline」を使用することもできます。これは、値がセミコロンで区切られた 1 行にトラフィックの概要を表示します。
$ vnstat --oneline 1;eth0;10/11/11;1.45 MiB;801 KiB;2.23 MiB;0.59 kbit/s;Oct '11;3.93 MiB;2.06 MiB;6.00 MiB;0.05 kbit/s;3.93 MiB;2.06 MiB;6.00 MiB
6.ライブ ネットワーク統計の表示
「vnstat -l」または「vnstat –live」を使用して、ライブ ネットワーク統計情報を表示します。
$ vnstat -l Monitoring eth0... (press CTRL-C to stop) rx: 2 kbit/s 5 p/s tx: 2 kbit/s 4 p/s
Ctrl-C を押して停止すると、vnstat はライブ モニターが実行されていた期間の概要を表示します。
7.デフォルトの vnstat 出力形式を変更
「vnstat -s」または「vnstat –short」を使用すると、ネットワーク統計の短い要約が表示されます。これには、今日、昨日、当月の統計が含まれます。
$ vnstat -s (--short) rx / tx / total / estimated eth0: Oct '11 3.93 MiB / 2.06 MiB / 6.00 MiB / 13.00 MiB yesterday 2.48 MiB / 1.28 MiB / 3.76 MiB today 1.45 MiB / 801 KiB / 2.23 MiB / --
「vnstat –style 0」を使用することもできます。これにより、デフォルトの幅の広い列の出力よりも読みやすい狭い列の出力が得られます。
$ vnstat --style 0
利用可能なスタイル番号は次のとおりです:
- 0 – 狭い出力
- 1 – バー列を有効にする
- 2 – バー列を有効にし、平均トラフィック レートを要約で表示します
- 3 – すべての出力で平均トラフィック レートを表示
- 4 – ライブ モード (vnstat -l) と組み合わせると、端末制御文字を無効にします
8.上位 10 日間のトラフィックを表示
「vnstat -t」または「vnstat –top10」を使用して、全期間の上位 10 日のトラフィックを表示します。
$ vnstat --top10 eth0 / top 10 # day rx | tx | total | avg. rate -----------------------------+-------------+-------------+--------------- 1 10/12/11 4.30 MiB | 2.42 MiB | 6.72 MiB | 0.64 kbit/s 2 10/11/11 4.07 MiB | 2.17 MiB | 6.24 MiB | 0.59 kbit/s 3 10/10/11 2.48 MiB | 1.28 MiB | 3.76 MiB | 0.36 kbit/s .... -----------------------------+-------------+-------------+---------------
Linux パフォーマンスの監視とチューニング シリーズの以前の記事:
- Linux パフォーマンスの監視とチューニングの概要
- 15 の実用的な Linux トップ コマンドの例
- プロセス監視のための 7 つの実用的な PS コマンドの例
- UNIX / Linux のパフォーマンス監視に役立つ Sar (Sysstat) の 10 の例
- Linux でのディスク I/O パフォーマンス測定のための iozone の 10 の例
- Linux パフォーマンス監視のための 24 の iostat、vmstat、mpstat の例