SNMP + MRTG(2.9.22) に関するインストールメモ(2003/02/09,
更新日:2003/07/16)
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 の次世代ツールが最近は、流行のようです。
1.管理画面を開き「ネットワークサービス−SNMPの設定」を選択し、SNMPサービスを有効にします。読み出し・書き可能SNMPコミュニティは、デフォルトで「public」となっていますが、セキュリティ上好ましくないらしいので変更しておきます。私は「HOME」に設定してみました。
2.動作チェックを行います。下のコマンドを実行し、山の様になんか帰ってくれば ok です。
$ snmpwalk SNMPエージェントのIPアドレス HOME .1.3.6.1.2.1
MRTG のコンパイルには、libpng / libjpeg / gd が必要です。
gd : http://www.boutell.com/gd/
libpng : http://www.libpng.org/pub/png/
$ 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
$ 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/
$ 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
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 install2.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
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/data5.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でサーバ監視 を参考にしながら調整してみてください。
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