第6回 サーバ異常をSNMPで通知させるにはSNMPによるネットワークモニタリング「第2版」(2/6 ページ)

» 2007年05月25日 07時59分 公開
[大澤文孝,ITmedia]

プロセスの監視

 次にプロセスの監視方法を説明しよう。

 プロセス情報は、prTableサブツリーにある。しかしsnmpwalkコマンドを使ってprTableサブツリーを見ても、デフォルトでは何も見えない。prTableサブツリーから参照するためには、snmpd.confにおいてprocディレクティブを記述し、どのプロセスを監視するのかを決めなければならない。


proc プロセス名 最大値 最小値

 プロセス名は、ps -eコマンドで取得できるものであり、純粋なコマンド名のみ(例えば「httpd」や「sendmail」など)を指定する。

 「最大値」と「最小値」は、このプロセスが、幾つ起動していないとエラーとするかを指定する値だ。最小値を下回ったり、最大値を上回ったりしたときには、後述のprTableサブツリー内のprErrorFlagが1になる。

 「最大値」と「最小値」を省略したときには、「1個もプロセスが起動していないとエラー」という意味になる。実際に、snmpd.confに、次の監視命令を記述して、snmpdデーモンを再起動してみよう。

 Net-SNMPには、versionUpdateConfigの値を「1」に設定すると設定を再読込する機能がある。そのため、snmpd.confファイルを変更したあと、「snmpset -c hogeprivate -v 1 localhost versionUpdateConfig.0 i 1」のように実行しても構わない。

リスト1■「httpd」と「sendmail」を監視するためのsnmpd.conf内指定

proc httpd
proc sendmail

 リスト1では、「httpd」と「sendmail」の2つのプロセスを監視するように設定した。

 prTableはテーブルであるため、実際にデータを参照するときには、インデックス番号を付ける。このインデックス番号は、procディレクティブを指定した順になる。つまりこの例で言えば、「httpd」は「1」、「sendmail」は「2」である。

 実際にsnmpwalkコマンドで取得すると、次のようになる。


$ snmpwalk -c hogeprivate -v 1 localhost prTable
UCD-SNMP-MIB::prIndex.1 = INTEGER: 1
UCD-SNMP-MIB::prIndex.2 = INTEGER: 2
UCD-SNMP-MIB::prNames.1 = STRING: httpd
UCD-SNMP-MIB::prNames.2 = STRING: sendmail
UCD-SNMP-MIB::prMin.1 = INTEGER: 0
UCD-SNMP-MIB::prMin.2 = INTEGER: 0
UCD-SNMP-MIB::prMax.1 = INTEGER: 0
UCD-SNMP-MIB::prMax.2 = INTEGER: 0
UCD-SNMP-MIB::prCount.1 = INTEGER: 9
UCD-SNMP-MIB::prCount.2 = INTEGER: 2
UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: 0
UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: 0
UCD-SNMP-MIB::prErrMessage.1 = STRING: 
UCD-SNMP-MIB::prErrMessage.2 = STRING: 
UCD-SNMP-MIB::prErrFix.1 = INTEGER: 0
UCD-SNMP-MIB::prErrFix.2 = INTEGER: 0
UCD-SNMP-MIB::prErrFixCmd.1 = STRING:

 それぞれの設定の意味は、表3の通りだ。

 ここではプロセスの監視として、「prErrorFlag」に注目したい。このフラグは、procディレクティブにおいて、「最小値」を下回ったときや、「最大値」を上回ったときに「1」になるフラグだ。そうでないときは、「0」だ。

 最大値の使い道が浮かばないかもしれない。これは主にフォークされたプロセスを無くしたい場面で使われる。例えば、sendmailがたくさんのメールを送信し過ぎており、幾つかのsendmailプロセスを無くしたいときなどに用いる。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ