VnStat PHP:ネットワーク帯域幅の使用状況を監視するためのWebベースのインターフェイス


VnStat PHPは、「vnstat」と呼ばれる最も有名なコンソールモードネットワークロガーユーティリティ用のグラフィカルインターフェイスアプリケーションです。このVnStatPHPは、VnStatのグラフィカルなフロントエンドであり、ネットワークトラフィックの帯域幅使用状況レポートを適切なグラフィック形式で表示および監視します。 INおよびOUTネットワークトラフィック統計を時間、日、月、または完全な要約で表示します。

この記事では、LinuxシステムにVnStatとVnStatPHPをインストールする方法を説明します。

VnStatPHPの前提条件

次のソフトウェアパッケージをシステムにインストールする必要があります。

  • VnStat: A command-line network bandwidth monitoring tool, must be installed, configured, and should collect network bandwidth statistics.
  • Apache: A Web Server to serve web pages.
  • PHP: A server-side scripting language for executing php scripts on the server.
  • php-gd extension: A GD extension for serving graphic images.

ステップ1:VnStatコマンドラインツールのインストールと構成

VnStatは、ネットワークデバイスの帯域幅(送信および受信)をカウントし、データを独自のデータベースに保持するコマンドラインネットワーク帯域幅監視ユーティリティです。

Vnstatはサードパーティのツールであり、RedHatベースのシステムでepelリポジトリを有効にすることでインストールできます。有効にしたら、以下に示すように、yumコマンドを使用してインストールできます。

# yum install vnstat              [On CentOS/RHEL]
$ sudo apt-get install vnstat     [On Debian/Ubuntu]

VnStatの最新バージョンをインストールするには、この記事–Linuxでネットワークトラフィックを監視するためにvnStatをインストールする方法に従ってください。

私が言ったように、Vnstatはすべてのネットワーク情報を保持するために独自のデータベースを維持しています。 「eth0」と呼ばれるネットワークインターフェイス用の新しいデータベースを作成するには、次のコマンドを発行します。要件に応じて、インターフェイス名を必ず置き換えてください。

# vnstat -i eth0

Error: Unable to read database "/var/lib/vnstat/eth0".
Info: -> A new database has been created.

上記のエラーが発生した場合は、コマンドを最初に実行するため、このようなエラーについて心配する必要はありません。したがって、eth0の新しいデータベースを作成します。

次に、次のコマンドを実行して、有効なすべてのデータベースを更新するか、図のように-iパラメーターを使用して特定のインターフェースのみを更新します。 eth0インターフェイスのINおよびOUTのトラフィック統計を生成します。

# vnstat -u -i eth0

次に、5分ごとに実行されるcrontabを追加し、eth0データベースを更新してトラフィック統計を生成します。

*/5 * * * * /usr/bin/vnstat -u >/dev/null 2>&1

ステップ2:Apache、Php、およびPhp-gd拡張機能をインストールする

Red Hatベースのシステムの場合は「yum」、Debianベースのシステムの場合は「apt-get」と呼ばれるパッケージマネージャーツールを使用して、次のソフトウェアパッケージをインストールします。

# yum install httpd php php-gd

システムの起動時にApacheをオンにして、サービスを開始します。

# chkconfig httpd on
# service httpd start

次の「iptables」コマンドを実行してファイアウォールのApacheポート「80」を開き、サービスを再起動します。

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# service iptables restart
$ sudo apt-get install apache2 php php-gd
$ sudo /etc/init.d/apache2 start

Apacheのポート80を開きます。

$ sudo ufw allow 80

ステップ3:VnStatPHPフロントエンドをダウンロードする

以下に示すように「wgetコマンド」を使用して最新のVnStatPHPソースtarballファイルをダウンロードするか、このページにアクセスして最新バージョンを入手してください。

# cd /tmp
# wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz

示されているように「tarコマンド」を使用して、ソースtarballファイルを抽出します。

# tar xvf vnstat_php_frontend-1.5.1.tar.gz

ステップ4:VnStatPHPフロントエンドをインストールする

解凍すると、「vnstat_php_frontend-1.5.1」というディレクトリが表示されます。以下に示すように、このディレクトリの内容をディレクトリvnstatとしてWebサーバーのルートの場所にコピーします。

# cp -fr vnstat_php_frontend-1.5.1/ /var/www/html/vnstat

システムでSELinuxが有効になっている場合は、「restorecon」コマンドを実行して、ファイルのデフォルトのSELinuxセキュリティコンテキストを復元します。

# restorecon -Rv /var/www/html/vnstat/
# cp -fr vnstat_php_frontend-1.5.1/ /var/www/vnstat

ステップ5:VnStatPHPフロントエンドの構成

セットアップに一致するように構成します。次のファイルをVIエディターで開き、以下に示すようにパラメーターを変更します。

# vi /var/www/html/vnstat/config.php
# vi /var/www/vnstat/config.php

デフォルトの言語を設定します。

// edit these to reflect your particular situation
$locale = 'en_US.UTF-8';
$language = 'en';

監視するネットワークインターフェイスを定義します。

// list of network interfaces monitored by vnStat
$iface_list = array('eth0', 'eth1');

ネットワークインターフェイスにカスタム名を設定できます。

// optional names for interfaces
// if there's no name set for an interface then the interface identifier.
// will be displayed instead
$iface_title['eth0'] = 'Internal';
$iface_title['eth1'] = 'External';

ファイルを保存して閉じます。

ステップ6:VnStatPHPにアクセスしてグラフを表示する

お気に入りのブラウザを開き、次のリンクのいずれかに移動します。これで、ネットワーク帯域幅の使用状況の概要を時間、日、および月単位で示す、凝ったネットワークグラフが表示されます。

http://localhost/vnstat/
http://your-ip-address/vnstat/

参照リンク

VnStatPHPホームページ