Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

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

snmpは広く知られた監視用のプロトコルです。しかし実際は“シンプル”ではなく、複雑な仕様、深いMIB-Tree、異なるバージョン等、理解が困難と思われます。本レポートでは、net-snmpを使って実際に機器から情報を取得したり、情報を設定したりします。

目次

はじめに

 この連載では監視用プロトコルとして広く知られているSNMPについて設定方法などを交えて説明していきます。今回は実際にSNMPを通して情報の取得および設定を行います。

 構築環境はFedora7(2.6.23.17-88.fc7)、32bit、glibc-2.6-4、gcc-4.1.2を使用しています。

これまでの記事

5. SNMPによる機器監視

 SNMPでやり取りされる情報は、大きく3つの区分に分類されることを2.1章で述べました。当章ではその中の2つ、get-requestset-request について実際の動作に基づいて説明します。

 監視したい項目は業務要件などによって異なりますが、一般的に、CPU情報・メモリ情報・ディスク情報・特定プロセスの存在有無、は必須監視項目と言えます。これらの情報は、MIBツリー内のucdavisサブツリー(OID 1.3.6.1.4.1.2021)を参照(get-request)することで得られます。

 ucdavisサブツリーはよく知られてる監視対象なので、他のサイトでも詳細に解説されています。よって当レポートでは、取得する方法と取得できる大まかな情報について、なるべく簡単に纏めます。

OID 名称 取得できる情報
ucdavis.2 prTable 特定のプログラムおよびデーモンが起動しているか調査。snmpd.confの編集が必要。
ucdavis.4 memory メモリ情報の取得、"/proc/meminfo"の情報を展開している。
ucdavis.8 extTable 指定されたコマンドの実行と結果。snmpd.confの編集が必要。
ucdavis.9 dskTable Disk情報の監視、"df -k"の情報を展開している。snmpd.confの編集が必要。
ucdavis.10 laTable ロードアベレージ情報の取得、"/proc/loadavg"を取得している。
ucdavis.11 systemStats vmstatコマンドで得られる情報の取得(vmstatは/proc/meminfo /proc/stat等から取得している)。
ucdavis.15 fileTable 指定されたファイルをstatコマンドによって取得。snmpd.confの編集が必要。

 個人的な感想ですが、データを取得するためにわざわざsnmpd.confに記述しなくてはいけない(さらにsnmpdを再起動しなくてはいけない)というのは、スマートな仕様とは思えませんが、まあしょうがない。

5.1 prTable(OID .1.3.6.1.4.1.2021.2)

 snmpd.confに必要な情報を設定することで、起動中のプログラムおよびデーモンの起動中・停止中等の情報を取得できます。例えばhttpd(apache)プロセスとsyslogデーモンを監視する場合、下記の記述を、/usr/share/snmp/snmpd.conf に記述します。

proc httpd 10 1   <- httpdプロセスが10個以上、1個未満時はエラー
proc syslogd      <- syslogdが1個も起動していない時はエラー

 記述後、snmpd.confを保存し、snmpdrestartします。ついでにhttpdも起動します。

% service snmpd restart
snmpd を停止中:                    [  OK  ]
snmpd を起動中:                    [  OK  ]
% 
% service httpd start
httpd を起動中: httpd:             [  OK  ]
% 

 簡易SNMPマネージャである、snmpwalkコマンドを利用し、ucdavis.prTable に対してアクセスします。

TWSNMPからのアクセスについて
 TWSNMPからアクセスする場合、監視対象のノードを選択後、メニューからSNMP管理(M)->MIBブラウザを実行します。SNMPモードに"SNMPv2"を、Community/Userに"securecom"、Passwordは空のまま、追加ボタンを押下してOIDを選択し、実行ボタンを押下します。
詳しくはTWSNMPのヘルプを参照してください。
 
% snmpwalk -v 2c -c localcom  localhost prTable
UCD-SNMP-MIB::prIndex.1 = INTEGER: 1
                 ↑ リファレンス値:1
UCD-SNMP-MIB::prIndex.2 = INTEGER: 2
                 ↑ リファレンス値:2
UCD-SNMP-MIB::prNames.1 = STRING: httpd
                 ↑ :1のチェック対象プロセス名
UCD-SNMP-MIB::prNames.2 = STRING: syslogd
                 ↑ :2のチェック対象プロセス名
UCD-SNMP-MIB::prMin.1 = INTEGER: 1
                 ↑ :1のプロセスの最低起動数
UCD-SNMP-MIB::prMin.2 = INTEGER: 0
                 ↑ :2のプロセスの最低起動数
UCD-SNMP-MIB::prMax.1 = INTEGER: 10
                 ↑ :1のプロセスの最大起動数
UCD-SNMP-MIB::prMax.2 = INTEGER: 0
                 ↑ :2のプロセスの最大起動数
UCD-SNMP-MIB::prCount.1 = INTEGER: 9
                 ↑ :1の現在起動プロセス数
UCD-SNMP-MIB::prCount.2 = INTEGER: 1
                 ↑ :2の現在起動プロセス数
UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: noError(0)
                 ↑ :1のプロセスのエラー数値
UCD-SNMP-MIB::prErrorFlag.2 = INTEGER: noError(0)
                 ↑ :1のプロセスのエラー数値
UCD-SNMP-MIB::prErrMessage.1 = STRING:
                 ↑ :1プロセスのエラーメッセージ
UCD-SNMP-MIB::prErrMessage.2 = STRING:
                 ↑ :2プロセスのエラーメッセージ
UCD-SNMP-MIB::prErrFix.1 = INTEGER: noError(0)
                 ↑ 5.8章にて解説
UCD-SNMP-MIB::prErrFix.2 = INTEGER: noError(0)
                 ↑ 5.8章にて解説
UCD-SNMP-MIB::prErrFixCmd.1 = STRING:
                 ↑ 5.8章にて解説
UCD-SNMP-MIB::prErrFixCmd.2 = STRING:
                 ↑ 5.8章にて解説
% 

 httpdを停止させ、再度取得します。

% service httpd stop
httpd を停止中:                    [  OK  ]
% 
% 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:
・・・
% 

 起動していないとエラー情報を取得できます。


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

著者プロフィール

  • 赤松 エイト(エイト)

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

バックナンバー

連載:net-snmpについて
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5