SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

net-snmpについて

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

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

MIBファイル構成

7.3 MIBファイル構成

 MIBファイルは大まかに言うと、以下の構成になっています。

  • モジュール名
  • リンケージ
  • MIBツリー定義
  • 値の定義

 今回使用するMATSU-TEST-MIB.txtも同様の構成になっています。以下、各々を説明します。

7.3.1 モジュール名

 まず以下の一文を最初に記述します。これによってMIB定義の開始を表します。

モジュール名定義
MATSU-TEST-MIB DEFINITIONS ::= BEGIN

 MATSU-TEST-MIB というのがモジュール名になります。これはファイル名と同じでなくてはいけません(拡張子は何でも良いが.txtが望ましそう)。

 BEGINとある通り、ファイルの最後にはENDが必要で、MIB定義の終了を意味します。

7.3.2 リンケージ

 次に以下の記述を行います。IMPORTSとは、既に定義されてるマクロ名やデータタイプを当MIBファイルでも使用することを宣言するものです。ちなみにEXPORTと記述することで、MIBファイル内で定義した新しいマクロ名やデータタイプを他のMIBファイルで使用できるようにするものです。複数のMIBファイルを作成する場合に有効です。

リンケージ定義
IMPORTS
  MODULE-IDENTITY    FROM SNMPv2-SMI
  NOTIFICATION-TYPE  FROM SNMPv2-SMI
  Integer32          FROM SNMPv2-SMI
  TEXTUAL-CONVENTION FROM SNMPv2-TC
  SnmpAdminString    FROM SNMP-FRAMEWORK-MIB;

 SNMPv2-SMIとは、/usr/share/snmp/mibs/SNMPv2-SMI.txt を指しています。このファイルの中に、MODULE-IDENTITY やInteger32とは何者なのかが定義されていて、それらをこのMIBファイルで使用します、と宣言しています。

  • MODULE-IDENTITY
    連絡先やら更新履歴など、一般的な管理情報や説明文などを定義するために使用します。
  • NOTIFICATION-TYPE
    イベント通知の定義を行うために使用します。
  • TEXTUAL-CONVENTION
    既に定義されたデータタイプを利用して新しいデータタイプを定義する際に使用します
  • Integer32
    32ビットの範囲で数値データを使用する際に宣言します
  • SnmpAdminString
    文字列のデータタイプを使用する際に宣言します

7.3.3 MIBツリー定義

 当MIBファイルがツリー上に展開される場所を定義します。7.1章で述べたとおり、今回は12345という拡張番号をenterprises以下に追加します。

ツリー定義
org            OBJECT IDENTIFIER ::= { iso 3 }
dod            OBJECT IDENTIFIER ::= { org 6 }
internet       OBJECT IDENTIFIER ::= { dod 1 }
private        OBJECT IDENTIFIER ::= { internet 4 }
enterprises    OBJECT IDENTIFIER ::= { private 1 }
matsutest      OBJECT IDENTIFIER ::= { enterprises 12345 }

 なお、enterprisesまではSNMPv2-SMIで定義されているので、リンケージでenterprisesの使用を宣言した場合、下記の通り省略可能です。-- はコメントを表します。

ツリー定義
IMPORTS
  enterprises  FROM SNMPv2-SMI
-- org         OBJECT IDENTIFIER ::= { iso 3 }
-- dod         OBJECT IDENTIFIER ::= { org 6 }
-- internet    OBJECT IDENTIFIER ::= { dod 1 }
-- private     OBJECT IDENTIFIER ::= { internet 4 }
-- enterprises OBJECT IDENTIFIER ::= { private 1 }
matsutest      OBJECT IDENTIFIER ::= { enterprises 12345 }

 OBJECT IDENTIFIERは、左辺の文字列がOIDを意味し、右辺の括弧内の値が具体的なOIDの値を示します。

7.3.4 値の定義

 以下からは具体的にOIの定義をしていきます。

値の定義
mtuObject1     OBJECT-TYPE
  SYNTAX       SnmpAdminString
  MAX-ACCESS   read-only
  STATUS       current
  DESCRIPTION  "this element is for akamatsu test 1!!"
               ::= { matsutest1 1 }

 上記は、OID名がmtuObject1でOIDの値がmatsutest1の下で1(enterprises.12345.1.1)、文字列でread-onlyであることが定義されています。STATUS は状態を通知しているだけで、廃止予定であれば"deprecated"を、廃止されたものであれば"obsolete"を設定します。通常は"current"です。

 もう1つ、Trap送信用のOIについての定義を見ます。

値の定義
mtuStatusTrap  NOTIFICATION-TYPE
  OBJECTS      { mtuTrap }
  STATUS       current
  DESCRIPTION  "Trap of mtuTrap Status."
               ::= { matustrap 1 }

 Trap用OIを表す場合は"NOTIFICATION-TYPE"を設定します。OID名がmtuStatusTrapでOIDの値がmatsutrapの下で1(enterprises.12345.3.1)、関連するOIは"mtuTrap"であることを定義しています。

 値の定義を終えたら、"END"を記述して拡張MIB定義を終えています。

次のページ
MIBファイルの登録

この記事は参考になりましたか?

net-snmpについて連載記事一覧

もっと読む

この記事の著者

赤松 エイト(エイト)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2938 2008/09/22 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー