はじめに
この連載では監視用プロトコルとして広く知られているSNMPについて設定方法などを交えて説明していきます。今回は独自の情報を監視するための機能の追加方法について、MIBファイルの作成からソースファイルの生成までを述べます。
構築環境はFedora7(2.6.23.17-88.fc7)、32bit、glibc-2.6-4、gcc-4.1.2を使用しています。
これまでの記事
- 第1回:net-snmpについて(基礎知識)
- 第2回:net-snmpについて(環境構築)
- 第3回:net-snmpについて(機器管理)
- 第4回:net-snmpについて(Trap設定)
7. 拡張MIBと独自エージェントの実装
今まで取得してきた情報は、既にnet-snmpが用意したものです。しかし自分たちが作成したソフトの挙動を監視する際、その監視項目は当然ですがnet-snmpにはありませんし、他のsnmpソフトにもありません。
ではどうするか。自分たちで監視したい項目をnet-snmpに追加することで対応します。具体的な方法は下記の通りです。
- 企業拡張番号の払い出し
- MIBファイルの作成
- MIBファイルの登録
- mib2cによるソースファイルの生成
- ソースファイルの修正・改良
- ソースファイルから拡張MIB対応エージェントの構築
拡張MIBとは標準MIB以外のソフトに対し、ベンダーやソフトウェア開発者独自の監視項目をMIBとして定義し参照するためのMIB定義です。標準MIBはRFCで標準化され、ベンダーに依存しない装置およびソフトウェアなどの管理用MIB定義です。
ベンダーやソフトウェア開発者は自作のソフトをSNMPによって監視を行う場合、独自の拡張MIBを作り登録する必要があります。
7.1 企業拡張番号の決定
標準MIBのenterprises以降に追加する形になるため、ユニークなOIおよびOIDを使用する必要があります。
IANAのWebページから申請し、番号を取得します。無料で、申請後30日間(早い時で10日くらい)で番号を得られます。
今回はローカルな環境で利用するだけなので実際に申請しないで、重ならない番号を使用します。適当な番号(12345)を使用しました。
7.2 MIBファイル作成
決定した企業拡張番号と管理・監視したい項目をMIBファイルにまとめていきます。
このMIBファイル、ASN.1 BER という言語で書きます。
ASN.1 BER(Abstruct Syntax Notation One Basic Encoding Rules)は通信プロトコルを規定するために使用されるデータの構造を定義する言語のひとつです。実際にはPascalに似た、BNF(Backus-Naur Form)記法によって記述します。
しかし ASN.1 を勉強してからMIBファイルを作るより、net-snmpのサイトで参照するとか、各ベンダが提供しているMIBファイルを参考にして作った方が効率が良いです。それほど難しくなく感覚的に理解でき、時間をかけずに習得できるので、この方法を薦めます。
今回は下記のテスト用拡張MIBファイル(MATSU-TEST-MIB.mib)を作成しました。オブジェクト識別子は今回「matsutest」としています。enterprises直下に拡張します。
オブジェクト識別子には命名規約があり、長さ64文字以下、英数字とハイフンのみです。同一MIBファイル内で同一オブジェクト識別子を使用するとエラーになります。これも標準MIBで使われてるオブジェクト識別子と同一にならないよう、プレフィクスなどを付加して避けた方が無難です。
今回はオブジェクトを6つ配し、インスタンスを4つ、Trap配信用を2つ作りました。4つのインスタンスのうち、2つを snmpset によって変更できるようにしてます。
各インスタンスの動作は下記の通りです。
- matsutest1
pid(プロセス)値,timer値,自身が呼ばれた回数などを文字列にして返す、get-request のみ - matsutest2
自身が呼ばれた回数を数値で返す、get-request のみ - mtuTrap
Trapを飛ばすための区分、セットされた値によってTrapを発行、get-request/set-request対応 - mtuTimer
Timer開始区分、30秒後にTrapを発行、get-request/set-request対応
実際のMIBファイルの内容は、MATSU-TEST-MIB.txt をダウンロードして参照ください。以下、簡単に構成を説明します。