Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

net-snmpについて(独自監視項目の追加) - 前編

net-snmpによる拡張MIBの設定方法について(前編)

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

snmpは広く知られた監視用のプロトコルです。しかし実際は“シンプル”ではなく、複雑な仕様、深いMIB-Tree、異なるバージョンなど、理解が困難と思われます。本レポートでは、net-snmpにおける独自情報の監視を行う為に必要な拡張MIBの設定方法とソースファイルの生成方法についてレポートしています。

目次

はじめに

 この連載では監視用プロトコルとして広く知られているSNMPについて設定方法などを交えて説明していきます。今回は独自の情報を監視するための機能の追加方法について、MIBファイルの作成からソースファイルの生成までを述べます。

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

これまでの記事

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 をダウンロードして参照ください。以下、簡単に構成を説明します。


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

著者プロフィール

  • 赤松 エイト(エイト)

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

バックナンバー

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