他サーバーのCPU使用率やディスク使用率は他サーバーにインストールしたsnmp経由で取得可能です。 しかし温度やFAN回転数などはsnmpでは標準ではサポートされていません。 出来れば温度監視、FAN監視も一緒にやっておきたいところです。 (ここではdebian化したLinkstationの温度、FAN監視を扱っていますので お使いの機器によって温度取得、FAN回転数などの取得スクリプトは異なります)
snmpには外部スクリプトの結果を返してくれるようにする設定が可能なのでそれを利用します。 snmpd.confのサンプルを見ると Executables/scripts という項目があるのが分かると思います。
##################################### # Executables/scripts # # # You can also have programs run by the agent that return a single # line of output and an exit code. Here are two examples. # # exec NAME PROGRAM [ARGS …] # # NAME: A generic name. # PROGRAM: The program to run. Include the path! # ARGS: optional arguments to be passed to the program
この後ろに実行スクリプトを登録します。 ちなみに今回は本体で使用しているスクリプトをそのまま他サーバーにコピーし流用します。 以前紹介しているスクリプトを他サーバーにコピーしてください。
/usr/local/mrtg/bin/mon_fan.pl /usr/local/mrtg/bin/mon_temp.pl
スクリプトをコピーしたらsnmpd.confに実行の記述を書き足します。
exec mon_fan /usr/bin/perl /usr/local/mrtg/bin/mon_fan.pl exec mon_fan /usr/bin/perl /usr/local/mrtg/bin/mon_temp.pl
この二行を書き足すことでスクリプトの実行結果がsnmp経由で取得可能になります。 Executables/scriptsのコメント部分に取得の値もちゃんと書いてありますね。 1.3.6.1.4.1.2021.8.1.101.1 ←1つ目の実行結果をそのまま文字列で返すようです。 1.3.6.1.4.1.2021.8.1.101.2 ←2つ目の実行結果をそのまま文字列で返すようです。
しかしこの結果をそのまま取得すると「UCD-SNMP-MIB::extOutput.1 = STRING:」のような余計な文字まで取得します。 本来はスクリプトを数字で返すように書き換えてINTEGERの値を取得すべきですが楽に使い回すために MRTGの取得側で細工を行い正常にMRTGが認識出来るようにします。
※温度、FAN回転数のMRTG側設定は以前紹介したものを一部書き換えて使用します。 基本的には同じように書くことで設定温度、設定回転数を超えた場合にメールの送信まで行ってくれます。
tagert項目を以下のように書き換えてください。
Target[fan_nashiro]: `snmpwalk -v 1 -c public 192.168.x.x .1.3.6.1.4.1.2021.8.1.101.1 | awk ‘{print $4} {print “2640”} {print “hostname”}’`
※public 192.168.x.x の部分はsnmpで設定した名称、サーバーIPに書き換えてください。 2640の部分は好きな数字に書き換えて構いません。 もちろん0でもOKです。 hostnameの部分は他サーバーのホスト名に書き換えます。 また、.1.3.6.1.4.1.2021.8.1.101.1 の部分を .1.3.6.1.4.1.2021.8.1.101.2 に書き換えれば温度の取得が出来ます。
snmpでスクリプトからの取得設定を行えばスクリプトで取得できる値は snmp標準の値でなくても取得可能になるのでスクリプトで取得できる殆どの値はsnmp経由で送信可能ということになります。
以前紹介したメール対応の設定サンプルを改造したものを載せておきます。
### fan rpm info NAS-HIRO ####
Options[fan_nashiro]: gauge,growright,nopercent,unknaszero MaxBytes[fan_nashiro]: 3700 ThreshMaxI[fan_nashiro]: 3000 SetEnv[fan_nashiro]: EMAIL=”yourmail@yourdomain.com” URL=”http://your url/temp_nashiro.html” YLegend[fan_nashiro]: Fan RPM ShortLegend[fan_nashiro]: rpm LegendI[fan_nashiro]:RPM LegendO[fan_nashiro]:fastline Unscaled[fan_nashiro]: ymwd
Target[fan_nashiro]: `snmpwalk -v 1 -c public 192.168.x.x .1.3.6.1.4.1.2021.8.1.101.1 | awk ‘{print $4} {print “2640”} {print “NAS-HIRO”}’` Title[fan_nashiro]: Fan RPM Information PageTop[fan_nashiro]:
Fan RPM Information on NAS-HIRO
System: NAS-HIRO Maintainer: Root Ip: 192.168.x.x
### temp info NAS-HIRO ####
Options[temp_nashiro]: gauge,growright,nopercent,unknaszero MaxBytes[temp_nashiro]: 75 ThreshMaxI[temp_nashiro]: 50 SetEnv[temp_nashiro]: EMAIL=”yourmail@yourdomain.com” URL=”http://your url/temp_nashiro.html” YLegend[temp_nashiro]: Temperature ShortLegend[temp_nashiro]: C-deg LegendI[temp_nashiro]:TEMP LegendO[temp_nashiro]:borderline Unscaled[temp_nashiro]: ymwd
Target[temp_nashiro]: `snmpwalk -v 1 -c public 192.168.x.x .1.3.6.1.4.1.2021.8.1.101.2 | awk ‘{print $4} {print “55”} {print “NAS-HIRO”}’` Title[temp_nashiro]: Temperature Information PageTop[temp_nashiro]:
Temperature Information on NAS-HIRO
System: NAS-HIRO Maintainer: Root Ip: 192.168.x.x