5. 機器監視(4/4):set-request
5.8 set-request の例
上記では全てマネージャからの値の要求に対して応答する形で値が返されていました。これらは区分としてはget-requestになります。
それに対してset-requestは、マネージャからエージェントに対し、値を設定することでエージェントの挙動を変えることを指しています。
一例として、prTableの監視を参考にします。prTableでは特定のプログラムおよびデーモンの起動確認を行えますが、何らかの状況で起動していない時、規定されたコマンドを実行することが出来ます。そのためには、やっぱりsnmpd.confへの編集が必要です。
今回は例として、httpd
への再起動コマンドを設定します。snmpd.confに下記を追記し、snmpd
を再起動します。
procfix httpd /sbin/service httpd start
再起動後、snmpwalk
でprTableを取得すると、下記のようにprErrFixCmdが変更されているはずです。
% service httpd start % snmpwalk -v 2c -c localcom localhost prErrFixCmd UCD-SNMP-MIB::prErrFixCmd.1 = STRING: UCD-SNMP-MIB::prErrFixCmd.2 = STRING: % service snmpd restart % snmpwalk -v 2c -c localcom localhost prErrFixCmd UCD-SNMP-MIB::prErrFixCmd.1 = STRING: /sbin/service httpd start UCD-SNMP-MIB::prErrFixCmd.2 = STRING: %
httpdを停止させるとエラー情報を取得できますが、その状況で下記コマンドを叩きます。
% service httpd stop % snmpwalk -v 2c -c localcom localhost prTable ・・・ UCD-SNMP-MIB::prCount.1 = INTEGER: 0 UCD-SNMP-MIB::prCount.2 = INTEGER: 1 UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: error(1) UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: noError(0) UCD-SNMP-MIB::prErrMessage.1 = STRING: Too few httpd running (# = 0) UCD-SNMP-MIB::prErrMessage.2 = STRING: ・・・ % % snmpset -v 2c -c securecom 192.168.1.12 prErrFix.1 i 1 %
securecom でsnmpset
しているのは、snmpd.conf のaccess設定にて、write権限が許可されているのはsecurecomだけだからです。詳細は、4.4章を参照してください。
snmpsetコマンドを実行すると、内部で/sbin/service httpd start
が実行され、正常に実行されれば(つまりhttpdが正常に起動すれば) prCount.1 は 9 となり、prErrorFlag.1 の値は noError(0)になります。
% snmpwalk -v 2c -c localcom localhost prTable ・・・ UCD-SNMP-MIB::prCount.1 = INTEGER: 9 UCD-SNMP-MIB::prCount.2 = INTEGER: 1 UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: noError(0) UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: noError(0) UCD-SNMP-MIB::prErrMessage.1 = STRING: UCD-SNMP-MIB::prErrMessage.2 = STRING: ・・・ %
snmpsetコマンドはエージェントにMIB情報の書き換えを指示するコマンドです。MIB情報が変更されたことを受けて、その変更された値をもって規定の行動を行ったのです。
尚、今回はprTableを例とし、procfix句を使用しましたが、同様の機能がextTableにも存在します。execfixディレクティブで定義することが可能で、文法はprocfixディレクティブと全く一緒です。
5.9 終わりに
get-requestは、これら以外にもいろんな情報を取得できます(例えば特定のNICの死活情報や受信パケット総数、特定プリンタの紙残量の取得など)。また、set-requestも同様に、利用箇所が多く存在しています。
しかしこれらはすべてマネージャから要求を受けて取得したものであり、エラーが発生したことをエージェント側から上がってくるようにするともっと便利です。
この、“エージェントからマネージャに向けて情報を配信する機能”こそ、3番目の区分である、Trap です。次回は、この Trap を行うための設定を説明したいと思います。