mrtgのインストール このmrtgのインストールについては試行錯誤の連続であった。何とか動いたので経緯を書いておくが、これが正攻法かどうかは全く自信が無い。
# apt-get install mrtg パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 以下の特別パッケージがインストールされます: libsnmp-session-perl 提案パッケージ: mrtg-contrib 推奨パッケージ: libsocket6-perl libio-socket-inet6-perl 以下のパッケージが新たにインストールされます: libsnmp-session-perl mrtg アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 30 個。 589kB のアーカイブを取得する必要があります。 展開後に追加で 1679kB のディスク容量が消費されます。 続行しますか [Y/n]? 取得:1 http://ftp2.jp.debian.org etch/main libsnmp-session-perl 1.08-1 [69.6kB] 取得:2 http://ftp2.jp.debian.org etch/main mrtg 2.14.7-2 [520kB] 589kB を 4s で取得しました (119kB/s) パッケージを事前設定しています ... 未選択パッケージ libsnmp-session-perl を選択しています。 (データベースを読み込んでいます ... 現在 18997 個のファイルとディレクトリがイン ストールされています。) (.../libsnmp-session-perl_1.08-1_all.deb から) libsnmp-session-perl を展開しています... 未選択パッケージ mrtg を選択しています。 (.../archives/mrtg_2.14.7-2_arm.deb から) mrtg を展開しています... libsnmp-session-perl (1.08-1) を設定しています ... mrtg (2.14.7-2) を設定しています ... 2.snmpとsnmpdのインストール # apt-get install snmpd snmp パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 以下の特別パッケージがインストールされます: libsensors3 libsnmp-base libsnmp9 libsysfs2 提案パッケージ: lm-sensors 以下のパッケージが新たにインストールされます: libsensors3 libsnmp-base libsnmp9 libsysfs2 snmp snmpd アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 30 個。 4863kB のアーカイブを取得する必要があります。 展開後に追加で 9064kB のディスク容量が消費されます。 続行しますか [Y/n]? 取得:1 http://ftp2.jp.debian.org etch/main libsysfs2 2.1.0-1 [24.8kB] 取得:2 http://ftp2.jp.debian.org etch/main libsensors3 1:2.10.1-3 [82.5kB] 取得:3 http://ftp2.jp.debian.org etch/main libsnmp-base 5.2.3-7etch2 [1215kB] 取得:4 http://ftp2.jp.debian.org etch/main libsnmp9 5.2.3-7etch2 [1778kB] 取得:5 http://ftp2.jp.debian.org etch/main snmp 5.2.3-7etch2 [928kB] 取得:6 http://ftp2.jp.debian.org etch/main snmpd 5.2.3-7etch2 [835kB] 4863kB を 41s で取得しました (117kB/s) パッケージを事前設定しています ... 未選択パッケージ libsysfs2 を選択しています。 (データベースを読み込んでいます ... 現在 19116 個のファイルとディレクトリがイン ストールされています。) (.../libsysfs2_2.1.0-1_arm.deb から) libsysfs2 を展開しています... 未選択パッケージ libsensors3 を選択しています。 (.../libsensors3_1%3a2.10.1-3_arm.deb から) libsensors3 を展開しています... 未選択パッケージ libsnmp-base を選択しています。 (.../libsnmp-base_5.2.3-7etch2_all.deb から) libsnmp-base を展開しています... 未選択パッケージ libsnmp9 を選択しています。 (.../libsnmp9_5.2.3-7etch2_arm.deb から) libsnmp9 を展開しています... 未選択パッケージ snmp を選択しています。 (.../snmp_5.2.3-7etch2_arm.deb から) snmp を展開しています... 未選択パッケージ snmpd を選択しています。 (.../snmpd_5.2.3-7etch2_arm.deb から) snmpd を展開しています... libsysfs2 (2.1.0-1) を設定しています ... libsensors3 (2.10.1-3) を設定しています ... libsnmp-base (5.2.3-7etch2) を設定しています ... libsnmp9 (5.2.3-7etch2) を設定しています ... snmp (5.2.3-7etch2) を設定しています ... snmpd (5.2.3-7etch2) を設定しています ... chage: the shadow password file is not present /usr/bin/chage failed with return code 15, shadow not enabled, password aging cannot be set. Continuing. Starting network management services: snmpd. 3./etc/snmp/snmpd.confの作成 最初デフォルトでは上手くアクセスできなかったため、ネットを参考に以下のとおり設定した。 この設定の目的は、自ホストへのアクセスにはcommunity に localcom を使い、リモートホストに対するアクセスには securecom を使うことである。 なお、この設定は、mrtg 稼働ホストと被監視リモートホストと共用のものである。 #### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): # sec.name source community com2sec local localhost localcom com2sec securenet 192.168.0.0/24 securecom #com2sec readonly default public #com2sec readwrite default private #### # Second, map the security names into group names: # sec.model sec.name group local_group v1 local group local_group v2c local group local_group usm local group secure_group v1 securenet group secure_group v2c securenet group secure_group usm securenet #### # Third, create a view for us to let the groups have rights to: # incl/excl subtree mask #view all included .1 80 #view system included .iso.org.dod.internet.mgmt.mib-2.system view view_all included .1 view view_mib2 included .1.3.6.1.2.1 view view_ucdavis included .1.3.6.1.4.1.2021 #### # Finally, grant the 2 groups access to the 1 view with different # write permissions: # context sec.model sec.level match read write notif access local_group "" any noauth exact view_all none none access secure_group "" any noauth exact view_ucdavis none none #access MyRWGroup "" any noauth exact all all none 今回は、リモートホストに対する監視は .1.3.6.1.4.1.2021 で包含できるのでこの設定としている。 変更後は、/etc/init.d/snmpd restart で設定を反映することを忘れないこと。 また、設定が有効かどうかは # snmpwalk -v 1 -c localcom localhost でmibの中身が大量に出てくれば成功である。今回の設定では個別のIPアドレスを指定する場合はsecurecomを使う必要があり、 # snmpwalk -v 1 -c securecom 192.168.0.62 .1.3.6.1.4.1.2021 とするが、この場合は.1.3.6.1.4.1.2021 まで指定しないと中身は出てこない。 4./etc/mrtg/mrtg.cfg の作成 デフォルトでは/etc/mrtg.cfg となっているが、/etc/mrtg/mrtg.cfg に作成した。特に意味は無い。 この/etc/mrtg/mrtg.cfgの作成は、ツールが用意されており、 # /usr/bin/cfgmaker --output=/etc/mrtg/mrtg.cfg localcom@localhost これで、本体のネットワークインタフェースの稼働状況についての設定が自動作成される。 LANの速度をかんしするだけであればこれで良いが、今回のテーマである温度とかCPUの稼働率のようなものは手入力する必要がある。 mrtg.cfg 作成後は # env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg で起動するが、最初は関連ファイルが無いため、色々エラーが出る。3回目にエラーが無くなれば正常である。エラーが無くならない場合は、内容に誤りがある のでエラーメッセージを良く見ながら修正する必要がある。正常に動作すれば、/var/www/mrtg/ に xxxx.html なるhtmlファイルが作成される。 この操作は、監視項目を追加する度に実施する必要がある。 これが終われば、定期的な起動 設定をする必要があり、デフォルトで /etc/cron.d/mrtg が用意されている。しかし今回は、mrtg.cfg の在処を変更しているので /etc/mrtg.cfg を /etc/mrtg/mrtg.cfg に修正する必要がある。ブラウザから http://192.168.0.70/mrtg/localhost_1.html でうまくいけばこのようなものが作成される。 監視項目が増えてくると、一々URLで指定するのも面倒なので全監視項目が一望できるページがあれば便利である。そのような時のためにインデックスページを作成するツールも用意されており、 # /usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html で以下の様なページか作成され、該当部分をクリックすることで詳細ページに進むことができる。 5.LS−GLの温度監視 温度はMIBには無いので、自前で取得して mrtg に渡してやる必要がある。 フォーマットは、 1行目 : 値1(整数・必須) 2行目 : 値2(整数・必須) 3行目 : システムが起動してから経過した時間(uptime) 4行目 : 値の説明 であり、ここを参考に温度監視のスクリプトを書いたが、何故か動かない。状況は、コマンドラインで実行するとちゃんと画面には表示されるが、cron で実行すると一行目の値が0になったり別の値になったりで正常に取得でき無い。 色々コマンドの指定方法を変えてみたりしたが改善しない。どうも miconapl のコマンド自体で値の取得が出来ていないことに気がつき、以前このコマンドの代替ものを公開しているページかあったことを思いだし、それを使ってみた。それはmicon20070818.tar.gzであり tar zxvf で解凍するとソースと micon というバイナリーが出てくる。私の環境ではそのまま動いたので再コンパイルせずに使っている。 使用方法は、miconapl と同じである。 このようになった原因は良く分からないが、以前あったEABIとOABIの問題のようで、Debian化を山下氏の方法で miconapl はジェイルという別環境をもってくる方法で構築したため、これが影響しているのかも知れない。 何分、理屈を理解しないまま闇雲に試しているだけなので、原因の究明は望べくもなく、ただ動いたということで済ましている。 以下に今回使用したスクリプトを示しておく。55 は目安の値で特に無くても支障はないが値の比較には便利である。 /usr/local/mrtg/bin なるディレクトリーを作成してそこにスクリプトを入れている。 また、micon も同じディレクトリーにコピーした。 /usr/local/mrtg/bin/mon_temp.pl
また、 /etc/mrtg/mrtg.cfg にも以下の内容を追記した。
6.リモートホストの温度とCPU稼働率の監視 mrtg におけるリモートホストの監視も snmp を使う。従って監視したいホストにも snmp と anmpd をインストールする。 /etc/snmp/snmpd.conf の設定は上で示した方法で、コミュニティとしてIPアドレスでの呼び出しとなるので securecom を使用する。 また、呼出についてはCPUの稼働率についてはMIBコードがあるのでそれを指定すれば良いが、温度についてはそれがないので、上で作った mon_temp.pl と関係の micon を被監視ホストにコピーするとともに /etc/snmp/snmpd.conf の中にある Executables/scripts の最後あたりに以下のものを追記する。 ############################################################################### # Executables/scripts exec mon_fan /usr/bin/perl /usr/local/mrtg/bin/mon_temp.pl この追加した項目のMIBコードは、.1.3.6.1.4.1.2021.8.1.101.1 のようである。 さらに監視側ホストの /etc/mrtg/mrtg.cfg については以下の内容を追記する。
リモートホストからのデータ取得には snmpwalk を用いるが、このコマンドは一度に値を一つしか取得できないため、今回のCPUについては2値の取得が必要なため、以下のcpu-62.pl なるスクリプトを使用する。 不要文字の削除用に awk を使ったものを多く見受けたが、私の環境では上手く機能せず結局、以下のようなもので対応している。 /usr/local/mrtg/bin/cpu-62.pl
ホームページトップ LinkStationトップ |