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"