vnstat を使ってlinuxサーバのtrafficをお手軽に確認する

vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected interface(s).

サーバのtrafficを真面目に確認/監視したい場合はcacti, mrtg等を使うのが通常だと思いますが、たった数台のためだけにcacti server立てたり、snmpd 設定するのが面倒くさい!という場合にはvnstatが便利かもしれない。



vnstati で作ったグラフ

上から順にvnstati -h, -d, -m, -s で作ったもの




install

rhel/centos/sl

epelリポジトリにある

# yum install --enablerepo=epel vnstat
ubuntu

aptで

$ sudo apt-get install vnstat vnstati
source

結果をグラフに出力するvnstati を使う(make all)場合はgdが必要なのであらかじめ入れておく。

# tar zxvf vnstat-1.11.tar.gz
# cd vnstat-1.11
# make all

起動scriptのsampleはsource/examples/init.d/ 以下にディストリビューションごとに用意されている。

installされるブツ
  • vnstat
  • vnstatd
  • vnstati
  • /etc/vnstat.conf

vnstatの使い方

/etc/vnstat.conf

dbの保存場所 (/var/lib/vnstat) や、vnstatd 起動時のdataを保存するInterval などの設定をする

vnstat
# vnstat --help
 vnStat 1.11 by Teemu Toivola <tst at iki dot fi>

         -q,  --query          query database
         -h,  --hours          show hours
         -d,  --days           show days
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top10
         -s,  --short          use short output
         -u,  --update         update database
         -i,  --iface          select interface (default: eth0)
         -?,  --help           short help
         -v,  --version        show version
         -tr, --traffic        calculate traffic
         -ru, --rateunit       swap configured rate unit
         -l,  --live           show transfer rate in real time

See also "--longhelp" for complete options list and "man vnstat".

引数を何もつけなかったら全interfaceのsummary が表示される。

  • db初期化(更新)
# vnstat -u -i eth0

以後、vnstat を叩けば統計が表示される。

  • データの更新

vnstat -u で更新するか、vnstatd をdaemonで起動しておく。

# vnstat -u -i eth0
$ vnstat
Database updated: Thu Aug  9 12:54:48 2012

   eth0 since 08/08/12

          rx:  219.06 MiB      tx:  8.29 MiB      total:  227.35 MiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Aug '12    219.06 MiB |    8.29 MiB |  227.35 MiB |    2.52 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       795 MiB |      29 MiB |     824 MiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     yesterday     96.33 MiB |    5.05 MiB |  101.39 MiB |    9.61 kbit/s
         today    122.73 MiB |    3.24 MiB |  125.96 MiB |   22.20 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       226 MiB |       5 MiB |     231 MiB |
$ vnstat -w

 eth0  /  weekly

                      rx      |     tx      |    total    |   avg. rate
   ---------------------------+-------------+-------------+---------------
    last 7 days    219.06 MiB |    8.29 MiB |  227.35 MiB |    3.30 kbit/s
   current week    219.06 MiB |    8.29 MiB |  227.35 MiB |    6.09 kbit/s
   ---------------------------+-------------+-------------+---------------
      estimated       438 MiB |      16 MiB |     454 MiB |
$ vnstat -m

 eth0  /  monthly

       month        rx      |     tx      |    total    |   avg. rate
    ------------------------+-------------+-------------+---------------
      Aug '12    219.06 MiB |    8.29 MiB |  227.35 MiB |    2.52 kbit/s
    ------------------------+-------------+-------------+---------------
    estimated       795 MiB |      29 MiB |     824 MiB |
$ vnstat -d

 eth0  /  daily

         day         rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
      08/08/12     96.33 MiB |    5.05 MiB |  101.39 MiB |    9.61 kbit/s
      08/09/12    122.73 MiB |    3.24 MiB |  125.96 MiB |   22.20 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       226 MiB |       5 MiB |     231 MiB |
$ vnstat -h
 eth0                                                                     12:54
  ^     r
  |     r
  |     r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     rt r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  |     rt r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
 -+--------------------------------------------------------------------------->
  |  13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 10 11 12

 h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)
13          0          0    21       9589        225    05       9413        156
14      11559       3416    22       9835        158    06       9581        227
15       9440        329    23       9656        153    07       9893        170
16      10023        184    00       9745        230    08       9861        168
17       9811        160    01       9760        158    09       9665        237
18       9404        215    02       9737        160    10       9638        162
19       9511        163    03       9671        233    11       9636        162
20       9819        172    04       9675        164    12       9398       1086
vnstatd

定期的にvnstatを実行しているdaemon? cronでvnstat -u でupdateするでも、vnstatd をdaemon 起動しておくでもどっちでも良いかな。

# vnstatd --daemon
vnstati

vnstat(d) で取得したデータからpngのグラフを生成する。

$ vnstati --help
 vnStat image output 1.11 by Teemu Toivola <tst at iki dot fi>

         -h,  --hours          output hours
         -d,  --days           output days
         -m,  --months         output months
         -t,  --top10          output top10
         -s,  --summary        output summary
         -hs, --hsummary       output horizontal summary with hours
         -vs, --vsummary       output vertical summary with hours
         -nh, --noheader       remove header from output
         -ne, --noedge         remove edge from output
         -ru, --rateunit       swap configured rate unit
         -o,  --output         select output filename
         -c,  --cache          update output only when too old
         -i,  --iface          used interface (default: eth0)
         -?,  --help           this help
         -D,  --debug          show some additional debug information
         -v,  --version        show version
         --dbdir               select database directory
         --style               select output style (0-3)
         --locale              set locale
         --config              select config file
         --transparent         toggle background transparency

See also "man vnstati".
  • example
$ vnstati -h -o hourly.png