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

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

この記事を読むのに必要な時間:およそ 6 分

第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 HIMITSU@192.168.1.208

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

# Created by
# ./cfgmaker HIMITSU@192.168.1.208

### 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     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
# Contact: Me <me@somewhere.org>
# Location: Right here, right now.
######################################################################

### Interface 1 >> Descr: 'le0' | Name: '' | Ip: '192.168.1.208' | Eth: '' ###
Target[192.168.1.208_1]: 1:HIMITSU@192.168.1.208:
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 <me@somewhere.org></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:HIMITSU@192.168.1.208:
# 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 <me@somewhere.org></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:HIMITSU@192.168.1.208:
# 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 <me@somewhere.org></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 HIMITSU@192.168.1.208 > 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の設定項目について見ていくことにしましょう。

著者プロフィール

田村吉章(たむらよしあき)

1962年群馬県生まれ。東京理科大学理工学部数学科卒。専門は数値解析。85年から金融機関に勤務。システム開発部門,有価証券のリスク管理部門を経た後,システム監査に従事。公認情報システム監査人(CISA)。主な業務に社内ネットワークの企画・構築の他,有価証券のプライスモデルの実装やValue at Risk(VaR)算出などを行う市場リスク管理システムの構築などがある。

コメント

コメントの記入