差分
この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
management:centreon:hddtemp:start [2011/03/15 16:04] yuki [詳細] |
management:centreon:hddtemp:start [2021/09/04 20:44] yuki 削除 |
||
---|---|---|---|
ライン 16: | ライン 16: | ||
- CentreonのWebUIでcommandを登録。 | - CentreonのWebUIでcommandを登録。 | ||
- 同様に監視対象となるホストを選択して、Servicesを登録。 | - 同様に監視対象となるホストを選択して、Servicesを登録。 | ||
- | - 終わり。 | + | - Nagios再起動して終わり。 |
===== 詳細 ===== | ===== 詳細 ===== | ||
- | * まずextend機能を使用してMIB値を登録する。 | + | ==== 1.SNMPのextend機能を使用して、MIB値の登録 ==== |
- | * 以下のスクリプトを実行可能な形で作成 | + | |
- | * <code>#!/bin/sh | + | * 以下のスクリプトを実行可能な形で作成 |
+ | * <code>#!/bin/sh | ||
for dev in `ls -t /dev/* | awk '/(ad|da)[0-9]+$/ {print $1}'`; do | for dev in `ls -t /dev/* | awk '/(ad|da)[0-9]+$/ {print $1}'`; do | ||
case $1 in | case $1 in | ||
name) echo $dev;; | name) echo $dev;; | ||
- | temprature) smartctl -A $dev | awk '$1=="194" {print $10}';; | + | temprature) /usr/local/sbin/smartctl -A $dev | awk '$1=="194" {print $10}';; |
esac | esac | ||
done</code> | done</code> | ||
- | * snmpd.confにextend行を記載(今回は最終行に2行追加)。 | + | * snmpd.confにextend行を記載(今回は最終行に2行追加)。 |
- | * <code># cat snmpd.conf | tail -2 | + | * <code># cat snmpd.conf | tail -2 |
- | extend ataDevice /usr/local/share/snmp/ata_device_temperature.sh name | + | extend ataDevice /usr/local/share/snmp/ata_device_temprature.sh name |
- | extend ataDeviceTemperature /usr/local/share/snmp/ata_device_temperature.sh temprature</code> | + | extend ataDeviceTemperature /usr/local/share/snmp/ata_device_temprature.sh temprature</code> |
- | * snmpdの再起動 | + | * snmpdの再起動 |
- | * <code># /usr/local/etc/rc.d/snmpd restart</code> | + | * <code># /usr/local/etc/rc.d/snmpd restart</code> |
- | * MIB値の確認 | + | ==== 2.MIB値の確認 ==== |
- | * nsExtensionsは1.3.6.1.4.1.8072.1.3なので、snmpwalkで一通り見てみる。 | + | |
- | * http://www.oidview.com/mibs/8072/NET-SNMP-AGENT-MIB.html | + | * nsExtensionsは1.3.6.1.4.1.8072.1.3なので、snmpwalkで一通り見てみる。 |
- | * snmpwalk -v 1 -c private 127.0.0.1 .1.3.6.1.4.1.8072.1.3 | + | * http://www.oidview.com/mibs/8072/NET-SNMP-AGENT-MIB.html |
- | * 一部抜粋 | + | * コマンド結果を一部抜粋 |
- | * <code>NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."ataDevice" = INTEGER: 4 | + | * <code># snmpwalk -v 1 -c private 127.0.0.1 .1.3.6.1.4.1.8072.1.3 |
+ | NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."ataDevice" = INTEGER: 4 | ||
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."ataDeviceTemperature" = INTEGER: 4 | NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."ataDeviceTemperature" = INTEGER: 4 | ||
NET-SNMP-EXTEND-MIB::nsExtendResult."ataDevice" = INTEGER: 0 | NET-SNMP-EXTEND-MIB::nsExtendResult."ataDevice" = INTEGER: 0 | ||
ライン 55: | ライン 57: | ||
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ataDeviceTemperature".3 = STRING: 33 | NET-SNMP-EXTEND-MIB::nsExtendOutLine."ataDeviceTemperature".3 = STRING: 33 | ||
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ataDeviceTemperature".4 = STRING: 34</code> | NET-SNMP-EXTEND-MIB::nsExtendOutLine."ataDeviceTemperature".4 = STRING: 34</code> | ||
- | * 値にシェルスクリプトのエラー値が入っている場合は、スクリプトを見直します。 | + | * 値にシェルスクリプトのエラー値が入っている場合は、スクリプトを見直します。 |
+ | * その後、-Onオプションを付与してOIDを数値形式で出力し、Centreon用のスクリプトに記載します。 | ||
+ | * <code># snmpwalk -v 1 -On -c private 127.0.0.1 .1.3.6.1.4.1.8072.1.3</code> | ||
+ | |||
+ | ==== 3.Centreon用のシェルスクリプト作成 ==== | ||
- | * Centreon用のシェルスクリプト作成 | + | * 参考文献 |
- | * 参考文献 | + | * http://nagiosplug.sourceforge.net/developer-guidelines.html |
- | * http://nagiosplug.sourceforge.net/developer-guidelines.html | + | * http://junrei.dip.jp/wordpress/nagios/nagios%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E9%96%8B%E7%99%BA%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3/ |
- | * http://junrei.dip.jp/wordpress/nagios/nagios%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E9%96%8B%E7%99%BA%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3/ | + | * 端的に、以下の2点が守られていればとりあえず機能する。 |
- | * エラー処理等は他のプラグインの書き方を真似ているので、部分的に晒しあげ。 | + | * スクリプトの戻り値が、下記のいずれかであること |
- | * <code>#!/usr/bin/perl -w | + | * <code>0(=OK), 1(=WARNING), 2(=CRITICAL), 3(=UNKNOWN), 4(=DEPENDENT)</code> |
+ | * スクリプトのstdout(ようするにprintの出力)が、以下の形式であること | ||
+ | * <code>ぶんしょー | こんぽーねんと=値</code> | ||
+ | * 「ぶんしょー」部分は、画面出力に使用するだけ。自由に設定。 | ||
+ | * パイプの後ろ側はグラフを描画するときに使用。グラフの要素名=値となるように記述。複数ある場合は半角スペースで区切る。 | ||
+ | * 今回作成したスクリプト | ||
+ | * <code># cat check_snmp_hddtemp.pl | ||
+ | #!/usr/bin/perl -w | ||
################################################################# | ################################################################# | ||
# | # | ||
ライン 76: | ライン 89: | ||
# Net-snmp hddtemp | # Net-snmp hddtemp | ||
+ | # ここは人によりけりだと思うので、自分で調べる。 | ||
+ | # 今思ったけど、tempratureの略をtempにしたのはアレだなぁ。 | ||
my $hddtemp_lines = ".1.3.6.1.4.1.8072.1.3.2.3.1.3.9.97.116.97.68.101.118.105.99.101"; | my $hddtemp_lines = ".1.3.6.1.4.1.8072.1.3.2.3.1.3.9.97.116.97.68.101.118.105.99.101"; | ||
my $hddtemp_name = ".1.3.6.1.4.1.8072.1.3.2.4.1.2.9.97.116.97.68.101.118.105.99.101"; | my $hddtemp_name = ".1.3.6.1.4.1.8072.1.3.2.4.1.2.9.97.116.97.68.101.118.105.99.101"; | ||
ライン 113: | ライン 128: | ||
-P, --port=PORT | -P, --port=PORT | ||
SNMP port (Default 161) | SNMP port (Default 161) | ||
- | -w, --warn=INTEGER | INT,INT | + | -w, --warn=INTEGER |
- | warning level for memory in percent (0 for no checks) | + | warning level for temprature |
- | Default (-N switch) : comma separated level for Real Memory and Swap | + | -c, --crit=INTEGER |
- | -I switch : warning level | + | critical level for temprature |
- | -c, --crit=INTEGER | INT,INT | + | |
- | critical level for memory in percent (0 for no checks) | + | |
- | Default (-N switch) : comma separated level for Real Memory and Swap | + | |
- | -I switch : critical level | + | |
-f, --perfdata | -f, --perfdata | ||
Performance data output | Performance data output | ||
ライン 162: | ライン 173: | ||
if ( isnnum($o_warn) || isnnum($o_crit)) | if ( isnnum($o_warn) || isnnum($o_crit)) | ||
{ print "Numeric value for warning or critical !\n"; print_usage(); exit $ERRORS{"UNKNOWN"}} | { print "Numeric value for warning or critical !\n"; print_usage(); exit $ERRORS{"UNKNOWN"}} | ||
- | if (($o_crit!= 0) && ($o_warn > $o_crit)) | + | if ($o_warn > $o_crit) |
{ print "warning <= critical ! \n"; print_usage(); exit $ERRORS{"UNKNOWN"}} | { print "warning <= critical ! \n"; print_usage(); exit $ERRORS{"UNKNOWN"}} | ||
if (!defined($o_timeout)) {$o_timeout=5;} | if (!defined($o_timeout)) {$o_timeout=5;} | ||
ライン 256: | ライン 267: | ||
print "$output \n"; | print "$output \n"; | ||
exit $ERRORS{$n_status};</code> | exit $ERRORS{$n_status};</code> | ||
+ | |||
+ | * CentreonにCommand登録する前に、手元で動作確認しておいたほうがいいよ。 | ||
+ | * <code>./check_snmp_hddtemp.pl -H 127.0.0.1 -C private -w 46 -c 50 -f</code> | ||
+ | |||
+ | ==== 4.CentreonにCommandの登録 ==== | ||
+ | |||
+ | * 言葉だけ。 | ||
+ | * Configuration -> Commands -> Add | ||
+ | * Command Name(自由に) | ||
+ | * <code>hddtemp</code> | ||
+ | * Command Line(動作確認用のコマンドと同じになるように) | ||
+ | * <code>$USER1$/check_snmp_hddtemp.pl -H $HOSTADDRESS$ -C $USER2$ -w $ARG1$ -c $ARG2$ -f</code> | ||
+ | * $USER1$,$USER2$は、Configure -> Nagios -> resourcesに設定されてる。 | ||
+ | * $HOSTADDRESS$は、Centreonの設定項目から自動的に引っ張ってくる。 | ||
+ | * 異なるホストを監視するのに、Command2つ作るのは面倒でゲソ。 | ||
+ | * $ARG1$,$ARG2$は、下記のArgument Exampleに示す値を、Services設定時に入れる。 | ||
+ | * 監視ホストによって値を変えたくなるでゲソ? | ||
+ | * Argument Example | ||
+ | * 空でもいいけど、$ARGn$に入る値の書き方を示すので書いていたほうがいい。 | ||
+ | * "!"で区切って、順次$ARGn$($ARG1$,$ARG2$...)に代入されるよ。 | ||
+ | * <code>!46!50</code> | ||
+ | * $HOSTADDRESS$ | ||
+ | * 空でいい | ||
+ | * Command Type | ||
+ | * とりあえず"Check" | ||
+ | * Graph template | ||
+ | * 空でいい | ||
+ | |||
+ | ==== 5.Centreonに監視Servicesの登録 ==== | ||
+ | |||
+ | * Configuration -> Services -> Add | ||
+ | * Description : 適当な名前 | ||
+ | * Service Template : generic-service | ||
+ | * 別にこれでなくてもいいけど。 | ||
+ | * Check Command : hddtemp | ||
+ | * さっき作った名前 | ||
+ | * Args : 青い矢印クリック | ||
+ | * さっき作った"!46!50"が入力されるよ。 | ||
+ | * Relations(上のタブにあるでゲソ) | ||
+ | * Linked with Hosts : 対象ホストを選択してAdd | ||
+ | * Saveして終わり。 | ||
+ | |||
+ | ==== 6.Nagiosの再起動 ==== | ||
+ | |||
+ | * Configuration -> Nagios | ||
+ | * 下記2つにチェックを追加して、"Export" | ||
+ | * Move Export Files | ||
+ | * Restart Nagios | ||
+ | |||
+ | ==== 7.動いてる図 ==== | ||
+ | |||
+ | {{:image:centreon:centreon_hddtemp_02.png|}} | ||
+ |