MRTGを使ったネットワーク監視技法

第5回MRTGのインストール その2

第3回(authorize)に引き続き、MRTGのインストール方法を解説します。

cfgmakerを使う

MRTGがインストールされると、以下のプログラムが組み込まれます。

/usr/local/mrtg-2/bin/cfgmaker

このcfgmakerは、MRTGの実行に必要なパラメータを出力してくれるPerlスクリプトです。cfgmakerは引数に監視対象機器のコミュニティ名とIPアドレスを@で結んだ値を渡して使います。

今、監視対象機器にはNET-SNMPがインストールされ、コミュニティ名が⁠HIMITSU⁠になっているとします。またIPアドレスは⁠192.168.1.208⁠とした場合、次のように実行します。

# cd /usr/local/mrtg-2/bin
# ./cfgmaker [email protected]

すると、以下のパラメータが表示されます。

# Created by
# ./cfgmaker [email protected]

### Global Config Options
#  for UNIX
# WorkDir: /home/http/mrtg
#  or for NT
# WorkDir: c:\mrtgdata
### Global Defaults
#  to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
EnableIPv6: no
######################################################################
# System: mrtg.sample.jp
# Description: FreeBSD mrtg.sample.jp 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 14:37:25 UTC 2009     [email protected]:/usr/obj/usr/src/sys/GENERIC i386
# Contact: Me <[email protected]>
# Location: Right here, right now.
######################################################################

### Interface 1 >> Descr: 'le0' | Name: '' | Ip: '192.168.1.208' | Eth: '' ###
Target[192.168.1.208_1]: 1:[email protected]:
SetEnv[192.168.1.208_1]: MRTG_INT_IP="192.168.1.208" MRTG_INT_DESCR="le0"
MaxBytes[192.168.1.208_1]: 1250000
Title[192.168.1.208_1]: Traffic Analysis for 1 -- mrtg.sample.jp
PageTop[192.168.1.208_1]: <h1>Traffic Analysis for 1 -- mrtg.sample.jp</h1>
                <div id="sysdetails">
                        <table>
                                <tr>
                                        <td>System:</td>
                                        <td>mrtg.sample.jp in Right here, right now.</td>
                                </tr>
                                <tr>
                                        <td>Maintainer:</td>
                                        <td>Me <[email protected]></td>
                                </tr>
                                <tr>
                                        <td>Description:</td>
                                        <td>le0  </td>
                                </tr>
                                <tr>
                                        <td>ifType:</td>
                                        <td>ethernetCsmacd (6)</td>
                                </tr>
                                <tr>
                                        <td>ifName:</td>
                                        <td></td>
                                </tr>
                                <tr>
                                        <td>Max Speed:</td>
                                        <td>1250.0 kBytes/s</td>
                                </tr>
                                <tr>
                                        <td>Ip:</td>
                                        <td>192.168.1.208 (mrtg.sample.jp)</td>
                                </tr>
                        </table>
                </div>

### Interface 2 >> Descr: 'plip0' | Name: '' | Ip: '' | Eth: '' ###
### The following interface is commented out because:
### * it is administratively DOWN
### * it is operationally DOWN
### * has a speed of 0 which makes no sense
#
# Target[192.168.1.208_2]: 2:[email protected]:
# SetEnv[192.168.1.208_2]: MRTG_INT_IP="" MRTG_INT_DESCR="plip0"
# MaxBytes[192.168.1.208_2]: 0
# Title[192.168.1.208_2]: Traffic Analysis for 2 -- mrtg.sample.jp
# PageTop[192.168.1.208_2]: <h1>Traffic Analysis for 2 -- mrtg.sample.jp</h1>
#               <div id="sysdetails">
#                       <table>
#                               <tr>
#                                       <td>System:</td>
#                                       <td>mrtg.sample.jp in Right here, right now.</td>
#                               </tr>
#                               <tr>
#                                       <td>Maintainer:</td>
#                                       <td>Me <[email protected]></td>
#                               </tr>
#                               <tr>
#                                       <td>Description:</td>
#                                       <td>plip0  </td>
#                               </tr>
#                               <tr>
#                                       <td>ifType:</td>
#                                       <td>para (34)</td>
#                               </tr>
#                               <tr>
#                                       <td>ifName:</td>
#                                       <td></td>
#                               </tr>
#                               <tr>
#                                       <td>Max Speed:</td>
#                                       <td>0.0 Bytes/s</td>
#                               </tr>
#                       </table>
#               </div>

### Interface 3 >> Descr: 'lo0' | Name: '' | Ip: '127.0.0.1' | Eth: '' ###
### The following interface is commented out because:
### * it is a Software Loopback interface
### * has a speed of 0 which makes no sense
#
# Target[192.168.1.208_3]: 3:[email protected]:
# SetEnv[192.168.1.208_3]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo0"
# MaxBytes[192.168.1.208_3]: 0
# Title[192.168.1.208_3]: Traffic Analysis for 3 -- mrtg.sample.jp
# PageTop[192.168.1.208_3]: <h1>Traffic Analysis for 3 -- mrtg.sample.jp</h1>
#               <div id="sysdetails">
#                       <table>
#                               <tr>
#                                       <td>System:</td>
#                                       <td>mrtg.sample.jp in Right here, right now.</td>
#                               </tr>
#                               <tr>
#                                       <td>Maintainer:</td>
#                                       <td>Me <[email protected]></td>
#                               </tr>
#                               <tr>
#                                       <td>Description:</td>
#                                       <td>lo0  </td>
#                               </tr>
#                               <tr>
#                                       <td>ifType:</td>
#                                       <td>softwareLoopback (24)</td>
#                               </tr>
#                               <tr>
#                                       <td>ifName:</td>
#                                       <td></td>
#                               </tr>
#                               <tr>
#                                       <td>Max Speed:</td>
#                                       <td>0.0 Bytes/s</td>
#                               </tr>
#                               <tr>
#                                       <td>Ip:</td>
#                                       <td>127.0.0.1 (localhost)</td>
#                               </tr>
#                       </table>
#               </div>

もし、すぐにパラメータが出力されない場合は、コミュニティ名が誤っているか、snmpdデーモンが動作していない場合などが考えられますので、これらの点が正しいか確認してください。

パラメータが画面に出力されることが確認できたら、ファイルにリダイレクトして、パラメータファイル(mrtg.cfg)を作成します。

# ./cfgmaker [email protected] > mrtg.cfg

mrtg.cfgを修正する

今、リダイレクトで作られたmrtg.cfgは、実はまだ未完成で、このままでは使うことができません。このファイルに、MRTGが出力するデータを書き出すパスを記述する必要があります。

この指定には、⁠WorkDir:⁠というディレクティブを使います。なお、実際にデータを書き出すパスは、Webサーバで公開できるパスにしなければなりません。

このサーバにはApache 2.2.xが標準的な手順でインストールされているものとして話を進めます。このとき作られるドキュメントルートディレクトリの下にmrtgというディレクトリを作り、そこにMRTGのデータを書き出すことにします。

# mkdir /usr/local/apache2/htdocs/mrtg
# vi mrtg.cfg
(1行を追加)
#  for UNIX
# WorkDir: /home/http/mrtg
WorkDir: /usr/local/apache2/htdocs/mrtg ←追加行

これでMRTGを実行することができます。

# ./mrtg mrtg.cfg

1回目の実行時には、以下のようなワーニングがでますが、これは正常です。

2009-03-09 15:34:04, Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for 192.168.1.208_1
2009-03-09 15:34:04, Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for 192.168.1.208_1 was invalid as well
2009-03-09 15:34:04, Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove 192.168.1.208_1.old updating log file
2009-03-09 15:34:04, Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename 192.168.1.208_1.log to 192.168.1.208_1.old updating log file

2回目の実行時にもワーニングメッセージがでますが、これも正常です。

2009-03-09 15:34:58, Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove 192.168.1.208_1.old updating log file

3回目の実行時から、ワーニングメッセージがでなくなります。

cronで5分ごとに実行する

MRTGはデフォルトでは5分ごとにデータを収集するようになっているため、

mrtg mrtg.cfg

のコマンドをcrontabで設定します。

# crontab -e
(以下の3行は途中で改行せず、1行で記述する)
0,5,10,15,20,25,30,35,40,45,50,55 * * * *
/usr/local/mrtg-2/bin/mrtg
/usr/local/mrtg-2/bin/mrtg.cfg

出力結果

この実行によって、以下のファイルが作られます。

%cd /usr/local/apache2/htdocs/mrtg
%ls
192.168.1.208_1-day.gif     192.168.1.208_1.log
192.168.1.208_1-month.gif   192.168.1.208_1.old
192.168.1.208_1-week.gif    mrtg-l.png
192.168.1.208_1-year.gif    mrtg-m.png
192.168.1.208_1.html        mrtg-r.png

ブラウザで、

http://192.168.1.208/mrtg/192.168.1.208_1.html

にアクセスすると、図1のような図形が得られると思います(図1は、計測を始めてから1日ほど経過した状態です⁠⁠。

図1 計測した様子
図1 計測した様子

次回は

これで、とりあえずはMRTGが動作できることが確認できました。ここまでもだいぶ道のりが長かったのですが、実際の運用ベースにするには、まだいろいろな設定が必要です。次回は、mrtg.cfgの設定項目について見ていくことにしましょう。

おすすめ記事

記事・ニュース一覧