名称

unix-guide - MRTG 2.9.22をUnix箱で動かすための説明


概要

MRTGはソースコードで配布されています。つまり、Unixマシン上で使うためには コンパイルしなければなりません。そのための説明がここにあります。


準備

MRTGをコンパイルして利用するためには、Cコンパイラとperlがインストール されていなければなりません。ほとんどの場合は既に入っているでしょう。 そうでない場合には、ここにいくつかのスタートポイントを書いておきます。 以下では、コンパイル処理の全体を詳しく解説します。

GCC

GNU Cコンパイラは、フリーなUnixのほとんどにインストールされています。 商用Unixの場合、まずはダウンロードしてコンパイルしなければいけません。 コンパイラがない場合、鶏と卵問題が生じてしまいますが、ほとんどのオペ レーティングシステムではあらかじめコンパイルされたGCCが入手可能です。

 http://gcc.gnu.org/
Perl

MRTGシステムの大部分はPerlで書かれています。MRTGを入れようとしているシステムに 最近のバージョンのperlが入っていることを確認してください。バージョンはperl -vで わかります。MRTGには5.005以降のものが必要です。最新版のperlは

 http://www.perl.com/

から得ることができます。

MRTGはグラフをPNGフォーマットで生成します。そのためにはいくつかのサードパーティ製 ライブラリが必要です。それらのライブラリをコンパイルする時には、スタティック ライブラリとしてコンパイルすることを強くお勧めします。そのほうがトラブルが少ないのです。 どんなふうにすればいいかは次のセクションの解説をご覧ください。 多くのフリーUnixでは、必要なライブラリが既に揃っていることに気をつけてください。 その場合、改めてインストールする必要はありません。 そういったことをチェックするには、以下のライブラリに関する解説を全て読み飛ばして、 いきなりMRTGのコンパイルに進めばいいでしょう。

コンパイルに失敗してMRTGが動かない場合には、以下の説明を参考にライブラリを コンパイルしてみてください。。。これはMRTGがコンパイルできないというメールを 私に送るにやってくださいね。

gd

これは、Thomas Boutellによって開発されたグラフを描くための基本的なライブラリです。 バージョン1.3以降はPNGイメージのみ生成することに注意してください。 これは、a) GIFフォーマットはUNISYSが特許を持っている圧縮技術を利用していたために Thomasが騒動に巻き込まれた、b) PNGはもっと効率が良く特許に縛られていない、ためです。 MRTGは古いバージョンのGDでも新しいバージョンのものでも大丈夫です。 GDは以下のサイトから最新版を得ることができます。

 http://www.boutell.com/gd/
libpng

PNGグラフィックファイルを生成するために必要です。

 http://www.libpng.org/pub/png/src/

から取得してください。

zlib

libpngが生成したグラフィックを圧縮するためにこのライブラリを必要としています。

http://www.gzip.org/zlib

から取得してください。

そして最後に、もちろんMRTGです。まだの方は私のWebサイト

 http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/

から手に入れてください。


ライブラリのコンパイル

このセクションではMRTGのコンパイルに必要な様々なライブラリのコンパイルについて 1つずつ解説します。*BSDLinuxといったシステムの場合にはこれらのライブラリは 既にインストールされているかもしれませんので注意してください。 その場合には再コンパイルしなくてもいいのです。 以下で利用するwgetはシンプルなダウンロード用ソフトウェアですので、 手元にwgetがない場合にはnetscapeにURLを入力するのでもかまいません。

訳註) 以下、各ソフトウェアのソース tarball にはバージョン番号が入っていますが、 これらはあくまでも原稿が書かれた時のものです。現在ではバージョンが上がるなどして、 既に手に入れることのできないものもありますのでその時点で最新のものをお使いください。

まずはコンパイル用のディレクトリを作りましょう。 すでにある場合は、それをそのまま利用すればいいでしょう。

 mkdir -p /usr/local/src
 cd /usr/local/src

zlibがインストールされていない場合は以下のようにします。

 wget http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
 gunzip -c zlib.tar.gz | tar xf -
 mv zlib-?.?.?/ zlib
 cd zlib
 ./configure
 make
 cd ..

libpngが入っていない場合には、

 wget http://www.libpng.org/pub/png/src/libpng-1.0.12.tar.gz
 gunzip -c libpng-*.tar.gz |tar xf -
 rm libpng-*.tar.gz
 mv libpng-* libpng
 cd libpng
 make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
 rm *.so.* *.so
 cd ..

とします。

そして、ここまできたら

 wget http://www.boutell.com/gd/http/gd-1.8.3.tar.gz
 gunzip -c gd-1.8.3.tar.gz |tar xf -
 mv gd-1.8.3 gd
 cd gd

と、gdをコンパイルすることができます。

 make INCLUDEDIRS="-I. -I../zlib -I../libpng" \
      LIBDIRS="-L../zlib -L. -L../libpng" \
      LIBS="-lgd -lpng -lz -lm"
 cd ..

ここで、行末に \ 文字がある行は、それに続く行を実際には一行で書く、という意味です。


MRTG のコンパイル

さあ、これでMRTGのコンパイルのために必要なものが全て揃いました。

 cd /usr/local/src
 gunzip -c mrtg-2.9.22.tar.gz | tar xvf -
 cd mrtg-2.9.22

全てのライブラリがプリインストールされている場合、単に

 ./configure --prefix=/usr/local/mrtg-2

とすればいいでしょう。

そうでない場合は、様々なライブラリがどこにあるのかというヒントを与えます。

 ./configure --prefix=/usr/local/mrtg-2       \
             --with-gd=/usr/local/src/gd      \
             --with-z=/usr/local/src/zlib     \
             --with-png=/usr/local/src/libpng

もしRRDtoolが利用できるなら、MRTGと一緒に使用することも可能です。 mrtg-rrdをチェックしてください。

configureスクリプトは、起動された環境がMRTGの構築に適しているかどうか確認します。 問題が見つかった場合はそう報告するでしょうし、またどう解決すればいいかも 教えてくれるでしょう。全てがOKなら、そのシステム用のMakefileができあがります。さぁ、

 make

と入力してください。

これでrateupというバイナリが作成され、スクリプト中のperlの パスが全て書き換えられます。

 make install (GNUのインストールが必要です)

と入力してMRTGをインストールしましょう。

MRTGに必要な全てのソフトウェアが /usr/local/mrtg-2 にインストールされます。

上でコンパイルしたライブラリはもう消しても大丈夫ですが、 次のバージョンのMRTGが出た時のためにそのまま置いておいてもいいでしょう。


設定

次のステップは、MRTGでネットワークデバイスを監視するための設定です。 これは mrtg.cfg というファイルを作ることによって行ないます。 このファイルでは何を監視したいかといったことを定義するのです。 ラッキーなことに設定ファイルを最初から自分で書く必要はありません。 MRTGに付属の cfgmaker を使えばいいのです。 これは、監視したいルータを指定するスクリプトで、MRTGの設定ファイルを 作ってくれるのです。このスクリプトは bin サブディレクトリにあり、 以下のように起動します。

 cfgmaker --global 'WorkDir: /home/httpd/mrtg'  \
          --global 'Options[_]: bits,growright' \
          --output /home/mrtg/cfg/mrtg.cfg    \
           community@router.abc.xyz

上記は、Webサーバから/home/mrtg/cfgが見えていることを想定し、 その下に設定ファイルを作成しているのです。 cfgmakerに関しては cfgmakerマニュアル に全て書かれています。 インタフェースのリナンバリングでトラブるのを防ぐために --ifref=ip を使うところは一見の価値があるかもしれません。

もし MRTG の設定ファイルを自分で書きたいという場合にはreferenceをしっかりと読んで 全ての設定オプションについて勉強してください。


MRTG の起動

設定ファイルができたら次のコマンドを試してください。

 /usr/local/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg

これはルータにqueryを送り、最初のグラフとWebページを作ります。 はじめてMRTGを起動した時にはログファイルがないといった文句がたくさん 出力されるでしょうが、心配しないでください。最初の2回はそういうものなのです。 もし文句が出つづけるなら、その場合はトラブったということかもしれません。

長期的にはMRTGをいちいち手で起動するのは現実的とはいえません。 何回かやってみて満足する結果が得られることがわかった場合には 定期的(デフォルトでは5分おき)に起動するように自動化しましょう。

crontabファイルに次のような行を追加してもよいですし、

 0,5,10,15,20,25,30,35,40,45,50,55 * * * * \
       <mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg \
                --logging /var/log/mrtg.log

Linuxでcrontab -eでやっているなら

 */5 * * * *  <mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg \
                       --logging /var/log/mrtg.log

としてもいいです。また、/etc/crontab に書く場合には

 */5 * * * *  mrtg-user  <mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg \
                                 --logging /var/log/mrtg.log                  

とすればいいでしょう。

MRTGの設定ファイルに

 RunAsDaemon: Yes

という行を加え、システムの起動シーケンスにMRTGの起動スクリプトを 加えることでMRTGをデーモンプロセスとして動かすこともできます。

面倒なことに、起動スクリプトはUnixシステム間で大幅に異なります。 最近の流行りの1つに /etc/init.d/etc/rc.d/init.d といったディレクトリ を用意し、そこにシステムのブート時に立ち上げておきたいプロセスの起動スクリプトを置く、 というものがあります。この場合、そのスクリプトのシンボリックリンクを /etc/rc3.d/etc/rc.d/rc?.d といったディレクトリに S65mrtg という名前 (これはただの例で、重要なのはSで始まり続けて2つの数字がくることです) で作るのです。このあたりのことにあまり詳しくない場合にはシステムのドキュメントを 参考にしてください。

init.dに置く最も簡単なスクリプトは次のような感じです。

 #! /bin/sh
 cd /usr/local/mrtg-2.9.22/bin && ./mrtg --user=mrtg-user \
       /home/httpd/mrtg/mrtg.cfg  --logging /var/log/mrtg.log                  

これは、mrtg.cfgでRunAsDaemon: Yesとしている時のみ動くことに注意してください。


著者

Tobias Oetiker <oetiker@ee.ethz.ch>


日本語訳

花井 浩之 <e2j@mrtg.jp>