vnstatで手軽にtrafiicをモニタリング

はじめに

vnstatはコマンドベースのネットワークtrafficモニターです。 trafficというとcactiとかmrtgといったのが最初に思い浮かぶと思いますが、それだとわざわざWebサーバを立てなくてはいけません。 もっと手軽に導入できるのがvnstatです。 また、時間別や日別など、様々なパターンでモニタリングができます。


# 1.インストール ということでまず、インストール。

今回利用するサーバはAmazon Linuxです。

$ sudo yum install --enablerepo=epel vnstat

redhat系のインストールはepelリポジトリからyumインストールで可能ですが、ubuntu系はaptで以下の方法でインストールできます。

$ sudo apt-get install vnstat vnstati

また、vnstatに関する設定は*/etc/vnstat.conf*に記載され、データの保存場所やdata保存間隔などが設定できます。


# 2.コマンド実行 それではコマンドを実行してみましょう。
$ vnstat
No database found, nothing to do. Use --help for help.

A new database can be created with the following command:
vnstat -u -i eth0

Replace 'eth0' with the interface that should be monitored.

The following interfaces are currently available:
eth0 lo

_“No database found …”と表示されました。 インストールしたてで「まだデータベースが何もないよ!」と言っているみたいです。 続きを読むと”vnstat -u -i eth0”_でデータベースが作成できると書いてあります。 ということで、作成してみます。


## 2.1. DB作成 ```bash:DB作成 $ vnstat -u -i eth0 Error: Unable to read database "/var/lib/vnstat/eth0". Info: -> A new database has been created. ```

一行目には”Error”とありますが、二行目には”Info”でデータベースが作成されたと記載があります。 これでデータベースが新規に作成されました。

$ ls /var/lib/vnstat/
eth0

ということで再度コマンドを実行します。

$ vnstat
eth0: Not enough data available yet.

まだ有効なデータがないと言われてしまいました。


## 2.2 データの更新 ということで、データを更新します。
$ vnstat -u -i eth0

## 2.3 データの確認 では改めて確認してみましょう。
$ vnstat
Database updated: Tue Jul 7 15:16:40 2015

eth0 since 07/07/15

rx: 25 KiB tx: 13 KiB total: 38 KiB

monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Jul '15 25 KiB | 13 KiB | 38 KiB | 0.00 kbit/s
------------------------+-------------+-------------+---------------
estimated -- | -- | -- |

daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
today 25 KiB | 13 KiB | 38 KiB | 0.01 kbit/s
------------------------+-------------+-------------+---------------
estimated -- | -- | -- |

デフォルトだと_monthly_と_daily_の2種類が表示されますが、オプションによって_weekly_表示にすることも可能です。

$ vnstat -w

eth0 / weekly

rx | tx | total | avg. rate
---------------------------+-------------+-------------+---------------
last 7 days 25 KiB | 13 KiB | 38 KiB | 0.00 kbit/s
current week 25 KiB | 13 KiB | 38 KiB | 0.00 kbit/s
---------------------------+-------------+-------------+---------------
estimated -- | -- | -- |

## 2.4. オプションの確認 どのような出力方法が可能かは、”--help”オプションで確認ができます。
$ 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".

## 2.5. 自動取得設定(daemonの起動) また、この_vnstat_は_daemon_が用意されているので、起動するだけで自動で情報が取得できます。
$ sudo service vnstat start
vnstatd を起動中: [ OK ]

# 3.グラフの作成 また、_vnstati_で取得したデータからpngのグラフも作成できます。 rx:受信 tx:送信
### [月別(-m)] ![20160121_monthly.png](/images/posts/2346b5c6-d2a7989b-8f62-4b63-8024-2ce3bbb9b7e4.png)
$ vnstati -m -o ./monthly.png

### [日別(-d)] ![20160121_daily.png](/images/posts/b1920ef9-877feab1-5f7e-d49f-df81-1c3d5e6d1331.png)
$ vnstati -d -o ./daily.png

### [時間別(-h)] ![20160121_hourly.png](/images/posts/292816f3-0ce83c1b-8f71-d524-bf1c-92793bc9de7a.png)
$ vnstati -h -o ./houly.png

### [時間別サマリ(-vs)] ![20160121_hsum.png](/images/posts/39946687-e361b0b8-e3a9-958b-e086-eb2dd93c94d8.png)
$ vnstati -vs -o ./hsum.png

以上のように、気軽に導入できグラフ化も可能なのがとても便利です。