SNMP + MRTG(2.9.22) に関するインストールメモ(2003/02/09, 更新日:2003/07/16) 
 

SNMP + MRTG とは

SNMP(Simple Network Management Protocol)は、ネットワークに接続されて機器類を監視するために作成されたプロトコルで、このプロトコルを使用することによってハードウエアが物理的に壊れたとか、ネットワーク回線が不調である等々をソフトウエアから見る(監視)することができる。

  RFC1155 : Structure and Identification of Management Information for TCP/IP-based Internets 

  RFC1157 : A Simple Network Management Protocol (SNMP)

  RFC1213 : Management Information Base for Network Management of TCP/IP-based internets: MIB-II 

MRTG(Multi Router Traffic Grapher)は、その名の通りルーターを流れるデータ量を起点単位に数値の統計を取りグラフ化してくれるツールです。MRTGは、SNMPが組み込まれているハードウエアなりソフトウエアに対しエージェント機能を使用し、数値の統計(グラフ化データ)を取り込む事が可能です。使用例としては、ネットワーク監視、ディスク監視、CPU負荷監視等の用途に使用することができます。

RRDTool という MRTG の次世代ツールが最近は、流行のようです。

  MRTG (公式日本語サイト)

  SNMPによるネットワークモニタリング (基本〜応用)

  MRTGによるネットワーク監視

  UNIXしま専科ucd-snmpとmrtgでサーバ監視

snmpの設定

1.管理画面を開き「ネットワークサービス−SNMPの設定」を選択し、SNMPサービスを有効にします。読み出し・書き可能SNMPコミュニティは、デフォルトで「public」となっていますが、セキュリティ上好ましくないらしいので変更しておきます。私は「HOME」に設定してみました。

2.動作チェックを行います。下のコマンドを実行し、山の様になんか帰ってくれば ok です。

$ snmpwalk SNMPエージェントのIPアドレス HOME .1.3.6.1.2.1 

MRTG設定前の環境

MRTG のコンパイルには、libpng / libjpeg / gd が必要です。

  gd : http://www.boutell.com/gd/

  libpng : http://www.libpng.org/pub/png/

libpng (1.2.5)

$ wget http://www.libpng.org/pub/png/src/libpng-1.2.5.tar.gz
$ gzip -cd libpng-1.2.5.tar.gz | tar xf -
$ cd ./libpng-1.2.5
$ ln -s scripts/makefile.linux Makefile
$ vi Makefile
    prefix=/usr/local → prefix=/usr
$ make
$ make test
$ su
# make install

libjpeg (6b)

$ wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
$ gzip -cd jpegsrc.v6b.tar.gz | tar xf -
$ cd ./jpeg-6b/
$ ./configure --prefix=/usr --enable-shared
$ make -j2
$ make test
$ su
# make install
# cp *.h /usr/local/include/

libgd (2.0.12)

$ wget http://www.boutell.com/gd/http/gd-2.0.12.tar.gz
$ gzip -cd gd-2.0.12.tar.gz | tar xf -
$ cd ./gd-2.0.12
$ ./configure
$ make
$ su
# make install

MRTGの設定方法

1.MRTG(2.9.29) のコンパイルを行う。

$ wget http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/mrtg-2.9.29tar.gz
$ gzip -cd mrtg-2.9.29.tar.gz | tar xf -
$ cd ./mrtg-2.9.29
$ ./configure --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include
$ ./configure --with-gd=../src/gd-1.8.4 --with-png=../src/libpng-1.2.5
$ make
$ su
# make install

2.MRGT の日本語化を行う。

# cd ./translate
# ./mergelocale.pl skeleton.pm0 eucjp.pmd
# ./mergelocale.pl skeleton.pm0 iso2022JP.pmd
# cp locales_mrtg.pm /usr/local/mrtg-2/lib/

3.各リソースのデータを格納する場所を作ります。

# mkdir /usr/local/mrtg-2/data

MRTGのグラフ化データの設定(ネットワーク転送量の監視)

1.cfg ファイルを作成する。

# /usr/local/mrtg-2/bin/cfgmaker HOME@192.xxx.xxx.xxx > /usr/local/mrtg-2/data/mrtg.cfg
    ※ /usr/local/mrtg-2/bin/cfgmaker コミュニティ名@SNMPエージェントのIPアドレス

2.cfg ファイルを設定する。

# vi /usr/local/mrtg-2/data/mrtg.cfg
    WorkDir: /usr/local/mrtg-2/data  ←出力先の設定

3.実行してみます。下記のコマンドを3回実行します。(2回目までは、ワーニングメッセージが出力されますが差分データが無いだけなので問題ありません)

# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/data/mrtg.cfg

4.web上から参照できるように、リンクを張ります。

# ln -s /usr/local/mrtg-2/data /home/groups/home/web/mrtg
# cp /opt/local/src/mrtg-2.9.17/images/* /usr/local/mrtg-2/data

5.web上から参照してみましょう。

http://localhost/mrtg/192.xxx.xxx.xxx.html

ネットワークカード(NIC)が複数ある場合、"cfgmaker"の実行結果で出力されるネットワーク転送量を定義する結果が複数個表示されます。ですのでNIC2枚目以降の定義は、その表示された結果を参考にしてグラフを作成してください。

traffic以外に、CPU使用率/メモリ使用率/ディスク使用率を調べたい場合は、

ucd-snmpとmrtgでサーバ監視 か、下記を参考にしながら調整してみてください。

最終的な設定

HTMLのインデックスページを生成しましょう。

# /usr/local/mrtg-2/bin/indexmaker --prefix=cpu/ cpu/mrtg.cfg > index.html
# /usr/local/mrtg-2/bin/indexmaker --prefix=disk/ disk/mrtg.cfg >> index.html
# /usr/local/mrtg-2/bin/indexmaker --prefix=memory/ memory/mrtg.cfg >> index.html
# /usr/local/mrtg-2/bin/indexmaker mrtg.cfg >> index.html

それぞれの設定ファイル。

traffic.cfg ネットワーク転送量の監視
cpu.cfg     CPU負荷率の監視
memory.cfg  メモリ使用量の監視
disk.cfg    ディスク使用率の監視

traffic以外に、CPU使用率/メモリ使用率/ディスク使用率を調べたい場合は、

ucd-snmpとmrtgでサーバ監視 を参考にしながら調整してみてください。

cron による実行

MRTGは、1回実行しただけでは意味を持ちません。定期的(5分間隔とか)に実行しその差異を求める事が重要となってきます。そのため、下記の様に cron に定義しましょう。

# setenv EDITOR vi
# crontab -e
    0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/data/mrtg.cfg