・プロセスを実行する
httpdプロセスがない状態で、次のようにsnmpsetコマンドを実行する。
$ snmpset -c hogeprivate -v 1 localhost prErrFix.1 i 1
これは「prErrFix.1」にInteger型の値「1」を設定するという意味だ。なお、「prErrFix.1」の「.1」は、snmpd.confに記述した「1番目のproc(procfix)」であることを示している。
これにより、procfixで指定してあるコマンドが実行される。すなわち「/sbin/service httpd restart」が実行され、プロセスが復帰するというわけだ。
・自動復帰させる
procfixは、snmpsetコマンドなどで、「prErrFix.インデックス番号」に「1」を設定したときに活動するものにすぎず、プロセスがなくなったときに自動復帰するというわけではない。プロセスがなくなったときに自動復帰させるには、さらに設定が必要だ。
そのためには、snmpd.confに対してリスト2のように追記し、定期的にモニタリングする。
# _internaluserという内部利用のユーザーを作る
createUser _internaluser MD5 "internalpass"
iquerySecName _internaluser
rwuser _internaluser
# イベント定義
setEvent httpdfix prErrFix = 1
# モニタリング
monitor -u _internaluser -r 60 -e httpdfix "procTable" prErrorFlag != 0
リスト2では、まず、内部ユーザー_internaluserを作成している。そしてmonitorディレクティブを使って、そのユーザー名で接続し、prErrorFlagが0でない場合に――つまり何らかのプロセスがエラーを発生しているならば――、httpdfixというイベントを発生させるようにした。
「-r」オプションは監視の間隔(秒)を指定するものだ。リスト2では「-r 60」となっており、60秒間隔でチェックしている。この間隔は適時調整してほしい。
httpdfixというイベントは、setEventディレクティブを使って、prErrFixに1を設定する定義した。これにより、procfixで指定しておいたコマンドが実行される。すなわち、「/sbin/service httpd restart」が実行され、httpdプロセスが復帰するという具合だ。
Copyright © ITmedia, Inc. All Rights Reserved.