MRTG

MRTGは、Multi Router Traffic Grapher の略で、ルーターなどのネットワークのトラフィック量を自動的にグラフ化してくれます。創意工夫次第で何でもグラフ化できるようなので(それなりの perl scriptを書かなくてはなりませんが)、トライしてみてください。ここでは極一般的なお話を覚え書き風に書いておきます。なお、オリジナルはここに、日本語のミラーはここにあります。

1.ルーターの設定
使用しているルーターにSNMP(ルーター上のトラフィックカウンター)を喋らせなければなりません。大概のルーターにはSNMP機能がありますが、デフォルトではオフになっていると思いますので、それをオンにしなくてはなりません。僕の使っているYAMAHA Rt102i では、次のようにしました。

# snmp host 210.250.4.50
# snmp community read-only PUBLIC

ここで、host は mrtg を動かすマシン、PUBLIC はルーターのコミュニティ名です。

2.MRTGのインストール
portsを利用しましょう。

# cd /usr/ports/net/mrtg
# make install

これでインストールは終わりです。最新の mrtg は2002年12月現在、2.9.25です。次にmrtg.cfgの作成ですが、cfgmaker という便利なツールがあるのでそれを利用しましょう。

# /usr/local/bin/cfgmaker PUBLIC@router.fujie.org >> /usr/local/etc/mrtg/mrtg.cfg

ここで、PUBLIC はルーターで設定したコミュニティ名、router.fujie.org はルーターのマシン名で、IP address でも構いません。さらに、/usr/local/etc/mrtg/mrtg.cfg.sample を参照に、mrtg.cfg を適当に書き換えます。僕の場合、次のように一部書き換えました。

WorkDir: /usr/local/www/data/mrtg
IconDir: /mrtg/images/
Options[_]: growright, bits
XSize[_]:       600
YSize[_]:       200
Refresh:        3600

WorkDir は html ファイルを置く場所です。また、デフォルトでは growleft(グラフが左に進む)、縦軸の単位も bytes なのでそれを修正しました。次に、Indexmakerでトップページのためのindex.htmlを作成します。

# indexmaker /usr/local/etc/mrtg/mrtg.cfg > /usr/local/www/data/mrtg/index.html

それでは起動してみましょう。

# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

これで先の WorkDir に、router.fujie.org_1.html などができていれば完成です。ブラウザからアクセスしてみて、無事にグラフができていれば成功です。ページのフッタには MRTG のロゴ画像ファイルが入るんですが、これは /usr/local/share/mrtg 以下にあるファイルを WirkDir にコピーすれば出るようになります。MRTG はデフォルトでは過去5分間の平均のトラフィックを計るので、cron で5分毎に mrtg を動かすようにします。

# crontab -e
-----
*/5 * * * *     /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

3.SNMPのインストール
FreeBSD マシンに SNMP を喋らせるために、ports を利用して、ucd-snmp をインストールしましょう。make の途中でlocationなどを聞かれますが、適当に入力します。なお、ZDNet/JAPAN のページ(大澤文孝さん)を参考にさせていただきました。ここにはSNMPとMRTGについて非常に詳しく書かれています。Linuxでの話ですが、とても参考になります。

# cd /usr/ports/net/net-snmp
# make
# make install

2002年12月現在、Ver5.0.6です。次に、設定ファイルである snmpd.conf を編集します。net-snmp インストール直後では、snmpd.conf はありませんから、EXAMPLE.conf をコピーして利用します。

# cp /usr/local/share/examples/ucd-snmp/EXAMPLE.conf /usr/local/share/snmp/snmpd.conf

この snmpd.conf を次のように書き換えました。自分の環境に合わせてください。

# cd /usr/local/share/snmp
# ee snmpd.conf
-----
#       sec.name  source          community
com2sec local     localhost       PUBLIC
com2sec mynetwork 192.168.1.0/24  PUBLIC

# Second, map the security names into group names:

#               sec.model  sec.name
# group MyRWGroup       v1         local
# group MyRWGroup       v2c        local
# group MyRWGroup       usm        local
group MyROGroup       v1         mynetwork
group MyROGroup       v2c        mynetwork
group MyROGroup       usm        mynetwork

# It is also possible to set the sysContact and sysLocation system
# variables through the snmpd.conf file:

syslocation FreeBSD server
syscontact  FUJIE Masao <masao@fujie.jp>

ここで、PUBLIC はコミュニティ名になります。またセキュリティのため、読み出しは mynetwork に可能ですが、書き出しは local でも不可能な設定にしました。起動は /usr/local/sbin/snmpd ですが、起動ファイルはportsでインストールしてある場合、/usr/local/etc/rc.d/snmpd.sh となりますが、rc.confに次の1行を加えてください。これで自動起動されます。

net_snmpd_enable="YES"

TOP PAGE