MRTGを使ったネットワーク監視(1)

システム監視者にはすでにお馴染みかと思いますが、MRTGを使ったネットワークの監視方法について書いてみたいと思います。

MRTGとは?

MRTG(Multi Router Traffic Grapher)は簡単に言うと、SNMPを使ってエージェントから取得したデータをグラフ化してくれるツールです。
例えばネットワークに流れるトラフィックを常時監視してグラフ化することにより長期的なトラフィックの流れを把握することが出来ますし、トラフィック過負荷になる前に対処することも可能になります。
もちろんトラフィック以外にもサーバの温度やルータのCPU使用率など基本的にSNMPで取得できるMIBがあれば何でもグラフ化出来ます。

前提条件

今回はCatalyst2950のインタフェースに流れるトラフィックをグラフにしてみます。 MRTGを使用する際には以下のライブラリが必要となります。

  • perl:perl本体
  • zlib:データ圧縮ライブラリー
  • gd:画像作成用ライブラリ
  • libpng:イメージフォーマットライブラリ

 

MRTGの入手

MRTGにはWindows版とUnix版が存在しますが今回はUnixを使用した方法を紹介します。

まずはMRTGを入手しましょう。

MRTGサイト

MRTGサイト(日本語)ダウンロードはこのページから可能です。

インストールについてはそれぞれディストリビューションによって変わってきますのでここでは一般的なソースからコンパイルしてインストールする方法のみ記述します。

こんな感じ。

# tar xvfz mrtg-*.*.*.tar.gz
# cd mrtg-*.*.*
# ./configure
# make
# make install

MRTGの設定

インストールが無事終了したらいよいよMRTGを設定しましょう。
設定方法もいくつかありますが、簡単に設定ファイルを作成できる cfgmaker というツールを使用した方法をご紹介します。
cfgmakerを使用して設定ファイルを作成するには、以下のコマンドを実行します。  

cfgmaker <オプション> コミュニティ名@ホスト名


例えばCatalyst2950のIPアドレスが192.168.1.1でコミュニティ名がpublicで、設定ファイルを/home/aki/mrtg.cfgに保存する場合は、  

cfgmakepublic@192.168.1.1 > /home/aki/mrtg.cfg

 


すると以下のようなファイルが作成されます。 もしここでうまくファイルが作成されない場合はエラーが出力されるはずです。

mrtg.cfgファイルの中身の例

# Created by
# /usr/local/bin/cfgmaker public@192.168.1.1

### 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

##########################################
# System: catalyst2950
# Description: Cisco Internetwork Operating System Software
# IOS (tm) C2950 Software (C2950-I6Q4L2-M), Version **********, RELEASE SOFTWARE (fc1)
# Copyright (c) 1986-2003 by cisco Systems, Inc.
# Compiled Tue 24-Jun-03 17:31 by yenanh
# Contact:
# Location:
##########################################

### Interface 1 >> Descr: 'FastEthernet0/1' | Name: 'Fa0/1' | Ip: '' | Eth: '**-**-**-**-**-01' ###

Target[192.168.1.1_1]: 1:public@192.168.1.1:
SetEnv[192.168.1.1_1]: MRTG_INT_IP="" MRTG_INT_DESCR="FastEthernet0/1"
MaxBytes[192.168.1.1_1]: 12500000
Title[192.168.1.1_1]: Traffic Analysis for 1 -- catalyst2950
PageTop[192.168.1.1_1]: <H1>Traffic Analysis for 1 -- catalyst2950</H1>
<TABLE>
<TR><TD>System:</TD> <TD>catalyst2950 in </TD></TR>
<TR><TD>Maintainer:</TD> <TD></TD></TR>
<TR><TD>Description:</TD><TD>FastEthernet0/1 Router-Management </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
<TR><TD>ifName:</TD> <TD>Fa0/1</TD></TR>
<TR><TD>Max Speed:</TD> <TD>12.5 MBytes/s</TD></TR>
</TABLE>

### Interface 2 >> Descr: 'FastEthernet0/2' | Name: 'Fa0/2' | Ip: '' | Eth: '**-**-**-**-**-02' ###
### The following interface is commented out because:
### * it is operationally DOWN
#
# Target[192.168.1.1_2]: 2:public@192.168.1.1:
# SetEnv[192.168.1.1_2]: MRTG_INT_IP="" MRTG_INT_DESCR="FastEthernet0/2"
# MaxBytes[192.168.1.1_2]: 12500000
# Title[192.168.1.1_2]: Traffic Analysis for 2 -- catalyst2950
# PageTop[192.168.1.1_2]: <H1>Traffic Analysis for 2 -- catalyst2950</H1>
# <TABLE>
# <TR><TD>System:</TD> <TD>catalyst2950 in </TD></TR>
# <TR><TD>Maintainer:</TD> <TD></TD></TR>
# <TR><TD>Description:</TD><TD>FastEthernet0/2 Router-Management </TD></TR>
# <TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
# <TR><TD>ifName:</TD> <TD>Fa0/2</TD></TR>
# <TR><TD>Max Speed:</TD> <TD>12.5 MBytes/s</TD></TR>
# </TABLE>

以下省略

ここで各サーバの環境に合わせていくつか設定を変更する必要があります。
少なくとも最低限設定しなければならない項目は以下の通りです。

WorkDir : MRTGがHTMLや画像ファイルを出力するディレクトリ名を指定します。( フルパスで指定する必要があります。)

 

今回は作業ディレクトリを/home/aki/public_html/mrtg/とします。

WorkDir : /home/aki/public_html/mrtg

さて設定は以上で終了です。
非常に簡単ですね。

MRTGを動かしてみよう。

それでは早速実行してみましょう。 実行コマンドは以下です。

/usr/local/bin/mrtg /home/aki/mrtg.cfg

このコマンドを実行するたびにSNMPにてCatalyst2950へトラフィックデータの取得を行いデータを格納していきます。

ちなみに最初と2回目に上記コマンドを実行したときにはエラーが出力されますが、これはデータがまだ格納されていないため発生するエラーですので気にしなくて良いです。 3回実行すれば正常にデータが格納されるためエラーは発生しなくなるはずです。

Rateup WARNING: /usr/local/bin/rateup could not read the primary log file for 192.1681.1_1
Rateup WARNING: /usr/local/bin/rateup The backup log file for 192.168.1.1_2 was invalid as well

これでWorkDirで設定したディレクトリを見てみるとhtmlファイルやpngファイルが作成されていると思います。

つづいて今回作成したトラフィックグラフのサマリーページを作成します。 サマリーページとは簡単に言うとトラフィックグラフをまとめてインデックスページを作成してくれるという優れものです。
コマンドは indexmaker というコマンドを使用します。

indexmaker 設定ファイル > インデックスファイル

今回の場合だと、

indexmaker /home/aki/mrtg.cfg > /home/aki/public_index/mrtg/index.html

それでは実際にサーバにアクセスしてみましょう。
今回の例ではURLはこんな感じ

http://サーバのIPアドレス/aki/mrtg/index.html

どうでしょう見れましたか?見れましたね?

MRTGの定期的実行

後は実際にデータを更新するには先ほどの実行コマンド(mrtg /home/aki/mrtg.cfg)を定期的に実行することでデータが更新されていきます。
crontab で5分おきに定期実行させるようにすればOKです

crontab -e 0/5 * * * * /usr/local/bin/mrtg /home/aki/mrtg.cfg

これで定期的にデータを取得してくれるはずです。

今回はここまで。次回はMRTGのカスタマイズについて書いていきます。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: