CodeZine(コードジン)

特集ページ一覧

net-snmpについて(機器監視)

net-snmpによる機器監視の具体的な方法について

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/09/10 14:00

目次

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 を行うための設定を説明したいと思います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:net-snmpについて

著者プロフィール

  • 赤松 エイト(エイト)

    (株)DTSに勤てます。 WebアプリやJavaやLL等の上位アプリ環境を密かに憧れつつも、ず~っとLinuxとかHP-UXばかり、ここ数年はカーネル以上アプリ未満のあたりを行ったり来たりしています。 mixiもやってまして、こちらは子育てとか日々の日記メインです。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5