チェックするために、MRTGをセットアップしました。snmpとmrtgでの設定メモです。詳しく調べないまま書いているので、間違えたことや変なことを書いている可能性もあります。概要MRTGはネットワーク負荷など監視し、その推移を画像にしたHTMLページを生成してくれるツールです。詳しくはMRTG日本語ページhttp://www.mrtg.jp/doc/などを参照してください同じ作者が作成したRRDToolhttp://people.ee.ethz.ch/~oetiker/webtools/rrdtool/もありますが、今回はなじみがあるMRTGを使いました。サーバとMRTGの間の通信にはSNMPを使用しました。サーバにはsnmpエージェントとしてnet-snmpdをセットアップします。(@IT)あたりに詳しく書いてあります。snmpd.confのセキュリティ設定のcom2sec、group、view、accessを設定します。コミュニティ名をデフォルトのまま使わないように注意します。snmpd.confのsyscontactとsyslocationの設定をします。サーバ名などのようにしてレスポンスが返ってくるか確認する。ここまででsnmpdの設定は一通り終わりです。MRTGのインストール、設定net-snmpdの準備ができたら、MRTGをセットアップします。(STACK*)あたりに詳しく書いてあります。MRTGを動かすサーバを決めるMRTGはグラフ化する際に、htmlとpngを生成するので、webサーバ越しに見ると便利です。MRTGの設定(cfgmaker)webサーバのDocumentRootを/var/www/htmlと仮定します。設定ファイルの置き場所を/etc/mrtg、MRTGの出力ファイルの場所を/var/www/html/mrtgとします。コミュニティ名@(監視対象の)ホスト名とすると、以下のような設定ファイルの雛形がmrtg.cfgに書き込まれます。MRTGを動かすサーバから監視対象のudpの161番ポートに通信可能なこと設定ファイルの雛形では、ネットワーク負荷を表示する設定が書き込まれています。出力ディレクトリのWorkDir、文字コードのLanguageの設定を下記のように変更しました。../mrtg_docs/----実際にmrtgを動かします。/etc/mrtg/mrtg.cfg3回連続して動かすと、pngファイルが出力されます。以下にアクセスすることで、作成されたHTMLファイルを確認できます/var/www/html/mrtg/server1_2.htmlhttp://サーバ名/mrtg/server1_2.html(server1_2の部分には、設定ファイルの監視項目の名前(targetの[]内に入っている文字)が入ります。)確か、FedoraCore2のapacheでは文字化けしたような気がします。httpd.confで、AddDefaultCharsetをoffにしました。....として全て1つの設定ファイルで行うことができるようです。私は知らなかったので、監視機器毎に設定ファイルを作成しました。WorkDirも、/var/www/html/mrtg/server1、/var/www/html/mrtg/server2というように分けています。設定ファイルに監視項目が複数ある場合、indexページを作成した方が便利です。crontabでの定期的な実行MRTGは定期的に実行する必要があります。デーモンとして起動することもできるようですが、crontabで動かすことにしました。5分おきにmrtgを動かしています。監視項目の追加CPU負荷、空きメモリ量、ディスク容量、プロセス数や、任意のスクリプトの返す値などもグラフ化できるようです。1つの画像に2項目までグラフ化できます。*)などに詳しく書いてあるようです。監視対象サーバのsnmpd.confのCPU負荷に関する設定部分は以下の部分です。14(以下、情報が格納されるMIBの説明)----mrtg側の設定ファイルは以下のようになります。空きメモリのチェックmrtg側で以下のような設定をを行うと、空きメモリ容量をチェックすることができます。実メモリとスワップの2つをグラフ化しています。MaxBytesには監視対象サーバの総メモリ量を書き込んでいます。使用ディスク容量のチェック監視対象サーバのsnmpd.confの使用ディスク容量チェックに関する設定部分は以下の部分です。5%(以下、情報が格納されるMIBの説明)----mrtg側の設定ファイルは以下のようになります。ここでは、/と、/homeの使用ディスク容量をチェックします。特定のプロセス数のチェック監視対象サーバのsnmpd.confのプロセス数チェックに関する設定部分は以下の部分です。1(以下、情報が格納されるMIBの説明)----httpdのプロセス数を監視するmrtg側の設定ファイルは以下のようになります。プログラムの標準出力への出力の1行目が入ります。execを複数書いた場合は、最初のものがn=1、次のものはn=2、...となります。/etc/snmp/bin/tomcat_threads.shの標準出力への出力の1行目となります。tomcat_threads.shでは、tomcatのスレッド数を戻り値で渡しています。0----mrtgの設定は以下のようになります。tomcatのスレッド数を表示する画像と、httpdのopenpipeの画像が出力されます。今のところただグラフ化しているだけですが、閾値を越えたら何らかのアクションをとるようにしてみたいです。監視サーバ、機器が別のネットワークにある場合、udpの161番ポートへは通信できないことが多いようです。何らかのトンネリングが必要なのかもしれません。