サーバの状態を長期・継続的に取得してビジュアライズすることで、いままで見えなかったことが見えるようになる。これを実現するソリューションがMRTGだ。(編集局)
前回は、コマンドラインベースでサーバの情報を取得する方法をいくつか紹介しました。「現在」の状態を確認するだけであれば前回紹介したツールでも問題ないのですが、システムを監視する場合、「その瞬間」のデータよりも長期的なデータの推移を見たいという方が多いと思います。
また、多くの場合、人間がシステムを常時監視するわけにはいきません。そのため、定期的にシステムを監視する操作を行い、監視項目が設定した閾値を超えたらメールで管理者に通知するといった処理が必要になります。
今回は、上記の要件を満たすためMRTGというソフトウェアを利用することを考えてみます。
MRTG(Multi Router Traffic Grapher)は、SNMPエージェントから取得したデータを加工してグラフ化するツールです。基本的には、監視対象の機器に対してSNMPリクエスト(iso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1).intreface(2).ifTable(2).ifEntry(1) ifInOctets(10).I/Fポート(1)およびiso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1).intreface(2).ifTable(2).ifEntry(1) ifOutOctets(10).I/Fポート(1))を送信し、取得したデータをPNG画像にします。監視対象のシステムから収集したすべてのデータは過去2年間分保持され、過去1日間、7日間、4週間、12カ月間のトラフィックのグラフを生成するのに利用します。
MRTGはHTML形式のページを作成するため、ApacheなどHTTPデーモンが動作しているサーバで利用すれば、X Window Systemに頼ることなくWebブラウザ経由でグラフの閲覧が可能です。また、トラフィックの監視だけでなく、あらゆるSNMP変数を監視することが可能です。ほかの外部プログラムを使用して、MRTGで監視されているデータを集約することもできます。
MRTGの本体は以下のWebページで入手可能です。
なお、MRTGではデータをグラフ化するためのGDライブラリが必要になります。また、GDによって生成される画像形式はPNG形式であるため、libpngが必要になります。そして、libpngは画像圧縮を行うためのzlibが必要になります。このようなソフトウェア同士の依存関係があるため、以下の表にあるソフトウェアを順番にインストールしておく必要があります。
ソフトウェア | 説明 |
---|---|
zlib | データ圧縮ライブラリ |
libpng | PNG形式の画像用ライブラリ。zlibがインストールされている必要がある |
GD | 画像生成用ライブラリ。libpngがインストールされている必要がある |
これらのソフトウェアは、システムによってはすでにインストールされていることもあります。また、多くのディストリビューションにはこれらのライブラリパッケージが含まれているので、ディストリビューション付属のパッケージを利用すればよいでしょう。
ここでは上記ソフトウェアはすでにインストールされているものとし、mrtg-2.9.25.tar.gzを入手した場合のインストール方法を示します。
# tar xvfz mrtg-2.9.25.tar.gz |
デフォルトでは、/usr/local/mrtg-2以下に関係するすべてのファイルがインストールされます。
MRTGには、設定ファイルを作成するツールとしてcfgmakerというコマンドが用意されています。動作確認を行うため、cfgmakerを利用してMRTGの設定ファイルを簡単に作成してみましょう。
設定ファイルの書式は以下の形式になります。
cfgmaker <オプション> コミュニティ名@ホスト名 |
今回は/usr/local/apache以下にApacheがインストールされており、/usr/local/apache/htdocs/mrtgをMRTG用のディレクトリにすることとします。また、作成されるMRTG用の設定ファイルは、/usr/local/mrtg-2/lib/mrtg.cfgとして保存するように実行しました。
/usr/local/mrtg-2/bin/cfgmaker \ |
以上の操作で設定ファイルが作成されますが、「WorkDir」「Language」「IconDir」の指定を設定ファイルに追加します。
WorkDir:MRTGがHTMLやグラフ画像ファイル類を出力するディレクトリ名。フルパスで指定する必要がある(ex. /usr/local/apache/htdocs/mrtg)
Language:使用する言語の設定
IconDir:生成されるHTMLファイル中に埋め込まれるアイコンが格納されるURLでのパス指定(ex. http://host.domain/mrtg/iconsであれば/mrtg/iconsと指定)
cfgmakerの実行により、以下のようなファイルが作成されればよいでしょう。
WorkDir: /usr/local/apache/htdocs/mrtg |
注:#で始まる行はコメント行なので削除しています。赤字が追加した行 |
また、IconDirで指定したアイコンを格納するディレクトリを作成し、/usr/local/mrtg-2/share/mrtg2/iconsからPNGファイルをコピーしておきます。
# mkdir -p /usr/local/apache/htdocs/mrtg/icons |
引数に設定ファイルを指定してmrtgコマンドを実行します。今回は以下のようになります。
# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg |
ここまでの流れであれば、まずSNMPによって指定したホストのトラフィック量を採取し、PNGグラフを書き出します。初回と2回目は、mrtgコマンド実行時にエラーが表示されます。理由は過去の統計データが存在せず、グラフが作成できないからなので気にしなくても構いません。
# bin/mrtg /usr/local/apache/htdocs/mrtg-test2/mrtg.cfg |
3回連続で実行すると、指定したディレクトリにHTMLファイル、MRTGで収集したデータ統計ログ、4つのPNGファイルが作成されます。
ファイル名 | 説明 |
---|---|
TargetName.html | 4つのPNG画像を含む、以下の情報を表示するHTMLファイル |
TargetName.log | MRTGによって採取されたデータのログ |
TargetName.old | MRTGによって採取された過去のデータのログ |
'TargetName-day.png' | 1日分の統計のグラフ画像 |
'TargetName-week.png' | 1週間分の統計のグラフ画像 |
'TargetName-manth.png' | 1カ月分の統計のグラフ画像 |
'TargetName-year.png' | 1年分の統計のグラフ画像 |
Apacheが起動している場合、Webブラウザから以下のように指定してすれば作成されたHTMLファイルを確認できます。
http://サーバのIPアドレス/mrtg/192.168.0.2_2.html |
トラフィックデータを収集・グラフ化するには、MRTGを定期的に実行する必要があります。ここでは2通りの方法を示します。
MRTGを実行すると、SNMPによって監視対象機器のトラフィックデータを収集してログに格納します。また、その時点での統計データをPNGグラフに変換・生成します。そのため、MRTGを定期的に実行し、ログおよびグラフを更新する必要があります。ここではcronを利用し、MRTGを5分ごとに実行させてログ/グラフを更新します。
# crontab -e |
を実行し、下記の内容を記入します。
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg |
通常の実行方法であれば、実行した時点でのデータの収集/グラフ化が完了するとMRTGも終了します。しかし、MRTGの設定ファイルにRunAsDaemonを指定すると、MRTGをデーモンモードで運用できます。この場合、cronで定期実行させる必要がなく、システムに常駐したMRTGが定期的にデータの収集、グラフ化を行います。デフォルトでは5分間隔でMRTGを呼び出し、データ収集作業を行いますが、「Interval:」で測定間隔を任意の値に設定することも可能です。
つまり、以下のような設定をMRTGの設定ファイルに記述しておくと、MRTGはデーモンとして動き、5分置きにデータを収集します。
RunAsDaemon:Yes |
デーモンモードでMRTGを起動しておく場合、root権限で実行するのはお勧めしません。MRTGを特定のユーザー/グループの権限で動かすようにしましょう。ここではmrtguserというユーザー/グループでMRTGを動作するようにしてみます。その場合、コマンドラインの「--user=ユーザー名」と「--group=グループ名」のオプションを使います。
# useradd mrtguser |
デーモンモードでは、設定ファイルを変更した場合はそれを反映するためにプロセスの再起動が必要なことにも注意してください。また、MRTGによってデータが作成されるWorkDirは、mrtguser権限でデータが作成できるようにパーミッションを設定する必要があります。
# chown -R mrtguser.mrtguser /usr/local/apache/htdocs/mrtg/ |
Copyright © ITmedia, Inc. All Rights Reserved.