MRTGでNetScreen25の利用状況を見てみる 導入編

今更感があるMRTGですが、とりあえずNetScreen25の利用状況を
何かしらでモニタリングしておきたいと思い手軽だったし入れてみた。
暫定的にMRTGの導入をしますがあくまで暫定。。。
せっかくhobbitも入れているので次回はhobbitに統合しちゃいます。
今回はMRTGをインストールして
NS25のモニタリングが出来るところまでの手順をまとめてみました。
大まかな手順はこんな感じ。
①NetScreen25でエージェント設定
②MRTG(snmpマネージャ)のインストール&設定
③MRTGの起動
④ひたすら待つ。
①NetScreen25でエージェント設定
普通ならサーバにsnmpエージェント入れて。。。監視項目決めて。。。
あれこれとエージェントの設定をしなければいけないところですが
NetScreen25のエージェント設定は超簡単!
メニューのConfiguration > Report Settings > SNMPを選択
New Communityをクリック。
-300x133.png)
次にCommunity nameに任意の名前を入力してPermissionsを最低限readぐらいつけておきましょう。
あとHosts IPにはMRTGをインストールするサーバIPを入力。Netmaskを255.255.255.255として終了。
-300x129.png)
NS25の設定はこれだけ。簡単です。Community NameはMRTGの設定で使用するので暗記しておきましょう!w
②MRTG(snmpマネージャ)のインストール&設定
次にMRTGをインストールしていきます。最新版のMRTG-2.16.2をインストールします。
MRTGで必要とされるライブラリなどはあらかじめyumっておいちゃいます。
インストール先はいつも通り/opt。
# yum install zlib zlib-devel libpng libpng-devel gd gd-devel net-snmp # cd /usr/local/src # wget http://oss.oetiker.ch/mrtg/pub/mrtg-2.16.2.tar.gz # tar zxvf mrtg-2.16.2.tar.gz # mkdir /opt/mrtg-2.16.2 # ln -s /opt/mrtg-2.16.2 /opt/mrtg # cd mrtg-2.16.2 # ./configure --prefix=/opt/mrtg # make && make install && echo $? |
インストール中にエラーが出る場合は必要なライブラリがないことが殆どなので
yumってさくさく入れてしまいましょう。
次にMRTGの設定に移ります。
MRTGは特定のコマンドを実行して、エージェントから取得した値を特定のディレクトリに出力します。
出力されるファイルは画像ファイルとhtmlファイルとログファイルで
このhtmlファイルを閲覧することでグラフィカルな利用状況を確認できます。
ということで、htmlファイルをブラウザで確認したい場合は当たり前ですがapacheが必要です。
※今回はapacheの部分は省きます。
apacheの公開ディレクトリは/apps/mrtgとしました。
前置きが長くなりましたが実際の設定方法です。
まず設定ファイルを作成します。
# /opt/mrtg/bin/cfgmaker --output /apps/mrtg/mrtg.cfg |
outputオプションで設定ファイルの出力先を指定できます。
つぎに実際にmrtg.cfgを編集していきます。全体的な設定は以下の物を設定しました。
RunAsDaemon: Yes Interval: 5 EnableIPv6: no WorkDir: /apps/mrtg Language: eucjp Options[_]: growright,gauge |
パラメータの解説を少し。
RunAsDaemon: Yes –> このオプションを付けることでcronに設定する必要がなくなります。デーモンとして起動します。
Interval: 5 –> どのぐらいの間隔で更新するか指定します。デフォルトは5分のようです。
EnableIPv6: no –> IPv6の対応はきっておきます。
WorkDir: /apps/mrtg –> htmlファイルや画像ファイルやログファイルの出力先を指定します。
Language: eucjp –> これを指定することで日本語表示が可能になります。
Options[_]: growright,gauge –> よく解らないけど指定しておきますw
設定ファイルを生成するcfgmakerコマンドを実行した直後は
全体の設定の他に以下の項目が自動的に作成されています。
### Interface 2 >> Descr: 'ethernet2' | Name: '' | Ip: '192.168.100.0' | Eth: 'xx-xx-xx-xx-xx-xx' ### Target[192.168.100.254_2]: 2:public@192.168.100.254: SetEnv[192.168.100.254_2]: MRTG_INT_IP="192.168.100.0" MRTG_INT_DESCR="ethernet2" MaxBytes[192.168.100.254_2]: 12500000 Title[192.168.100.254_2]: Traffic Analysis for 2 -- ns25 PageTop[192.168.100.254_2]: <h1>Traffic Analysis for 2 -- ns25</h1> <div id="sysdetails"> <table> <tr> <td>System:</td> <td>ns25 in </td> </tr> <tr> <td>Maintainer:</td> <td></td> </tr> <tr> <td>Description:</td> <td>ethernet2 </td> </tr> <tr> <td>ifType:</td> <td>ethernetCsmacd (6)</td> </tr> <tr> <td>ifName:</td> <td></td> </tr> <tr> <td>Max Speed:</td> <td>100.0 Mbits/s</td> </tr> <tr> <td>Ip:</td> <td>192.168.100.0 ()</td> </tr> </table> </div> |
長いので一部分だけ。NS25の各物理ポート分だけ生成されています。
これはトラフィックの使用量を表示する項目です。
さすがにトラフィックだけでは寂しいので、CPU/Memory/セッション数の項目を追加します。
追加する項目は、NS25のMIBが解っていないと何をとったらいいか解りません。
なのでここで確認することができます→http://www.oidview.com/mibs/3224/NETSCREEN-RESOURCE-MIB.html
ここで、取得したい値のOIDをメモします(このサイトでは各ベンダーのMIBが検索できてとても便利)。
まずCPUの値を取得したいので、1.3.6.1.4.1.3224.16.1.1をメモ。
MRTGに設定する前にsnmpwalkコマンドで、MRTGをインストールしたサーバから確認。
# snmpwalk -v 1 -c public 192.168.100.254 1.3.6.1.4.1.3224.16.1.1 SNMPv2-SMI::enterprises.3224.16.1.1.0 = INTEGER: 1 |
エラーなく値がとれているようなので、実際にMRTGの設定をします。
※snmpwaklコマンドがない時は、net-snmp-utilsでyumってください。
mrtg.cfgにNS25のCPU(Load Average)を取得する設定を以下のように書きます。
Target[la]:1.3.6.1.4.1.3224.16.1.1.0&1.3.6.1.4.1.3224.16.1.2.0:public@192.168.100.254: SetEnv[la]: EMAIL="root" URL="http://192.168.100.20/mrtg" MaxBytes[la]: 100 Title[la]: Load Average PageTop[la]: <H1> Load Average</H1> |
ハマったところを少し解説。
まず一行目のTarget[la]に先ほど確認したOIDとコミュニティ名と監視対象をそれぞれ設定します。
※[]この括弧内は任意の文字列を入れればOK。
ここではまったのは、OIDの指定で最後に『.0』を入れないとMRTG起動時にエラーが出てしまいます。
こんな感じ↓
2009-11-29 19:37:28: ERROR: Target[la][_IN_] '1.3.6.1.4.1.3224.16.1. $target->[2]{$mode} ' evaluated to 'ಘ0' instead of a number 2009-11-29 19:37:28: ERROR: Target[la][_OUT_] '1.3.6.1.4.1.3224.16.1. $target->[2]{$mode} ' evaluated to 'ಘ294' instead of a number |
かなりはまりましたw
もう1つここではまりました。それは同時に2つのOIDを指定しないとエラーになります。
機器や設定項目によって違うと思いますがNS25は上記のように設定しました。
その他の項目は、フィーリングですwww
ここに詳しく解説があるので参考にしてみてください→ http://www.atmarkit.co.jp/flinux/rensai/root08/root08a.html
残りのメモリーの使用量とセッション数は下記のように設定しました。
# # Memory # Target[mem]:1.3.6.1.4.1.3224.16.2.1.0&1.3.6.1.4.1.3224.16.2.2.0:public@192.168.100.254: SetEnv[mem]: EMAIL="root" URL="http://192.168.100.20/mrtg" MaxBytes[mem]: 256000000 Title[mem]: Memory PageTop[mem]: <H1>Memory</H1> # # Session # Target[ses]:1.3.6.1.4.1.3224.16.3.2.0&1.3.6.1.4.1.3224.16.3.3.0:public@192.168.100.254: SetEnv[ses]: EMAIL="root" URL="http://192.168.100.20/mrtg" MaxBytes[ses]: 16000 Title[ses]: Session PageTop[ses]:<H1>Session</H1> |
これで準備完了です。mrtg.cfgを保存していよいよMRTGを起動させます。
③MRTGの起動
MRTGの起動コマンドと設定ファイルを引数にして起動させます。
# /opt/mrtg/bin/mrtg /apps/mrtg/mrtg.cfg ----------------------------------------------------------------------- ERROR: Mrtg will most likely not work properly when the environment variable LANG is set to UTF-8. Please run mrtg in an environment where this is not the case. Try the following command to start: env LANG=C /opt/mrtg/bin/mrtg /apps/mrtg/mrtg.cfg ----------------------------------------------------------------------- |
なぬ?!エラー?!どうやら環境変数がいけないらしい。。。
アドバイスしてくれているので素直にこれを使います。
# env LANG=C /opt/mrtg/bin/mrtg /apps/mrtg/mrtg.cfg Daemonizing MRTG ... # ps -ef | grep mrtg root 27777 1 1 20:12 ? 00:01:49 /usr/bin/perl -w /opt/mrtg/bin/mrtg /apps/mrtg/mrtg.cfg |
初回起動時は何かしらのエラーがでます。これはグラフに使用するデータなどが何もないために
出るエラーらしいので無視してOK。公式ドキュメントにもそう書いてありましたw
一応デーモンが起動していることが確認できればOKです。
また、mrtg.cfgのWorkDirで指定したディレクトリにhtmlやpngファイルが作成されていれば問題ありません。
中身を見ると解りますが、mrtg,cfgで指定した項目数分のhtmlファイルが生成されています。
えっ?!各項目ごとにブラウザでhtmlファイル名を指定するの?とかって疑問がありますが心配は無用w
ちゃんと1つのhtmlファイルにまとめてくれるコマンドがあります。
indexメーカーというらしいです。これを実行。
# env LANG=C /opt/mrtg/bin/indexmaker /apps/mrtg/mrtg.cfg > /apps/mrtg/index.html |
監視項目が増えたり減ったりした場合は、indexメーカーコマンドの実行が必要。
そして、いよいよブラウザから確認してみます。

mrtg.cfgで監視項目にしたものが表示されていればOK。そして。。。
④ひたすら待つ。
最後はちゃんとグラフが生成されるか気長に待ちます。これが一番時間がかかるかも。
しばらくして再度htmlを見てみます。うまく動作していれば下記のように表示されます。

各グラフをクリックすると、月別、週別、日別の平均が表示されます。いやー長かったw
ってことで、ただ表示するだけなら本当に手軽に出来ちゃいます。
もう少しがんばると自分で設定した閾値に達した時にメール通知とか出来ます。
でもhobbitでこれもやっちゃう予定なので今回は表示のみにしました。
あとMRTGではなくてRRDtoolを使ったグラフ描画も対応しているので
ここの公式ドキュメントを参考にしてみてはいかがでしょうか。
最後に自分が設定したmrtg.cfgを晒しておきます。
RunAsDaemon: Yes Interval: 5 EnableIPv6: no WorkDir: /apps/mrtg Language: eucjp Options[_]: growright,gauge ###################################################################### # System: ns25 # Description: NetScreen-25 version 5.0.0r11.0 (SN: xxxxxxxxxxxxxxxxxx, Firewall+VPN) # Contact: # Location: ###################################################################### ### Interface 2 >> Descr: 'ethernet2' | Name: '' | Ip: '192.168.100.0' | Eth: 'xx-xx-xx-xx-xx-xx' ### Target[192.168.100.254_2]: 2:public@192.168.100.254: SetEnv[192.168.100.254_2]: MRTG_INT_IP="192.168.100.0" MRTG_INT_DESCR="ethernet2" MaxBytes[192.168.100.254_2]: 12500000 Title[192.168.100.254_2]: Traffic Analysis for 2 -- ns25 PageTop[192.168.100.254_2]: <h1>Untrust -- eth2</h1> ### Interface 3 >> Descr: 'ethernet3' | Name: '' | Ip: 'xxx.xxx.xxx.xxx' | Eth: 'xx-xx-xx-xx-xx-xx' ### Target[192.168.100.254_3]: 3:public@192.168.100.254: SetEnv[192.168.100.254_3]: MRTG_INT_IP="203.152.196.112" MRTG_INT_DESCR="ethernet3" MaxBytes[192.168.100.254_3]: 12500000 Title[192.168.100.254_3]: Traffic Analysis for 3 -- ns25 PageTop[192.168.100.254_3]: <h1>DMZ -- eth3</h1> # # CPU Load Average # Target[la]:.1.3.6.1.4.1.3224.16.1.1.0&1.3.6.1.4.1.3224.16.1.2.0:public@192.168.100.254: SetEnv[la]: EMAIL="root" URL="http://192.168.100.20/mrtg" MaxBytes[la]: 100 Title[la]: Load Average PageTop[la]: <H1> Load Average</H1> # # Memory # Target[mem]:1.3.6.1.4.1.3224.16.2.1.0&1.3.6.1.4.1.3224.16.2.2.0:public@192.168.100.254: SetEnv[mem]: EMAIL="root" URL="http://192.168.100.20/mrtg" MaxBytes[mem]: 256000000 Title[mem]: Memory PageTop[mem]: <H1>Memory</H1> # # Session # Target[ses]:1.3.6.1.4.1.3224.16.3.2.0&1.3.6.1.4.1.3224.16.3.3.0:public@192.168.100.254: SetEnv[ses]: EMAIL="root" URL="http://192.168.100.20/mrtg" MaxBytes[ses]: 16000 Title[ses]: Session PageTop[ses]:<H1>Session</H1> |
