コンソールベースのネットワークトラフィックモニタ「vnstat」を使ってみた

コンソールベースのネットワークトラフィックモニタツール「vnstat」を使ってみました。
時間別や日別など、様々なパターンでのモニタリングが可能なので便利だなと思いました。

インストール

パッケージでインストールします。

$ sudo aptitude install vnstat

vnstatは統計情報をカーネルから取得しているようなのでテストしてみます。

$ vnstat --testkernel
This test will take about 60 seconds.
[==============================] done.

Detected boot time variation during test:   0
Maximum boot time variation set in config: 15

The current kernel doesn't seem to suffer from boot time variation problems.
Everything is ok.

問題なさそうです。

ネットワークトラフィックデータを取得する

vnstatはデーモン(vnstatd)で定期的にトラフィックデータを取得します。
取得したデータは、/var/lib/vnstat 配下にネットワークインタフェース毎に保存されます。
パッケージでvnstatをインストールした場合、起動スクリプト(/etc/init.d/vnstat)が作成され、OSブート時に自動的に起動するようになっています。
インストール直後は起動していないので、手動起動します。

$ sudo /etc/init.d/vnstat start
 * Starting vnStat daemon vnstatd
   ...done.

(補足)
特定のネットワークインタフェースだけのトラフィックデータを取得することもできます。
eht0 のトラフィックのみを取得する場合は、以下のように実行します。

$ sudo vnstat -u -i eth0

iflist オプションで、モニタリング可能なインタフェースを確認することができます。

$ vnstat --iflist
Available interfaces: lo eth0 eth1

モニタリングする

では、実際にモニタリングしてみます。

$ vnstat
                      rx      /      tx      /     total    /   estimated
 eth1:
       Nov '11      1.74 MiB  /    7.77 MiB  /    9.51 MiB  /   10.00 MiB
     yesterday      1.20 MiB  /    5.90 MiB  /    7.09 MiB
         today        81 KiB  /      89 KiB  /     170 KiB  /      --    

 eth0:
       Nov '11      3.36 MiB  /     128 KiB  /    3.48 MiB  /       0 KiB
     yesterday         0 KiB  /       0 KiB  /       0 KiB
         today         1 KiB  /       1 KiB  /       2 KiB  /      --    

時間別でモニタリングしてみます。

$ vnstat -h
 eth0                                                                                                                             05:42 
  ^                                                                                                                                    rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
  |                                                                                                                                     rt    
 -+-------------------------------------------------------------------------------------------------------> 
  |  06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05    
                                                                                
 h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB) 
06          0          0      14          0          0       22          0          0
07          0          0      15          0          0       23          0          0
08          0          0      16          0          0       00          0          0
09          0          0      17          0          0       01          0          0
10          0          0      18          0          0       02          0          0
11          0          0      19          0          0       03          0          0
12          0          0      20          0          0       04          0          0
13          0          0      21          0          0       05          1          1

開発機なので、全くトラフィックでていませんが、グラフみたいに表示されます。
次に日別でモニタリングしてみます。

$ vnstat -d
 eth0  /  daily
         day         rx                  |     tx          |    total          |   avg. rate
     -----------------------------+-------------+--------------+---------------
      11/20/11      3.35 MiB |     127 KiB |    3.48 MiB  |    0.33 kbit/s
      11/22/11         1 KiB    |       1 KiB    |       2 KiB    |    0.00 kbit/s
     -----------------------------+-------------+--------------+---------------
     estimated        --             |      --          |      --           |

他にも、月別や週別、日別トップ10などでモニタリングできます。
各オプションは、以下のとおりになります。

$ vnstat --help
(中略)
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top10
(中略)

デフォルトでは、eth0 のモニタリングをするようになっているので、他のインタフェースをモニタリングする場合は i オプションを使用します。

$ vnstat -h -i eth1

リアルタイムでモニタリングする

vnstat はリアルタイムでのモニタリングも可能です。

$ vnstat -l
Monitoring eth0...    (press CTRL-C to stop)
   rx:     2.62 Mbit/s   230 p/s          tx:       48 kbit/s   116 p/s


vnStat - a network traffic monitor for Linux and BSD
How to Monitor and Log Network Traffic on Linux Using vnStat