MIB
SNMPで管理する情報を、OIDという識別子や型と対応付けて定義した管理情報の集合である。インタフェースの状態、通信量、隣接機器などの値を共通の形式で読み取るために使う。
イマシルちゃんの解説
ネットワーク機器を監視するときは、通信量だけでなくポートの状態なども知りたいよね。
でも、調べる項目を毎回違う呼び方で指定したら扱いにくいんだ。
MIBは、こうした管理項目の識別子やデータの型を定めた情報の集合だよ。
項目にはOIDという番号が付いていて、監視サーバはその番号を指定してSNMPで値を問い合わせるの。
機器から返ってくるのは、その項目の現在の値だよ。
項目の定義と実際の値を分けることで、複数の機器から同じ意味の情報を集めて比べられるんだ。
この解説はわかりやすかったですか?
より深い解説
項目の定義と機器が持つ値
MIBはManagement Information Baseの略である。管理対象のオブジェクトを階層化し、名前、データ型、読み書きの可否、意味などを定義する。MIBの定義ファイルは監視ソフトウェアが情報を解釈するために使う。一方、機器上のSNMPエージェントは、実際の動作状態に応じた管理対象オブジェクトの値を提供する。
監視のたびにMIB全体のファイルをダウンロードするわけではない。監視側のマネージャが必要な項目を指定し、機器側のエージェントが要求された値を返す。
管理項目を一意に指定する
各オブジェクトを識別する番号がOID(Object Identifier)である。ドットで区切った数値列は階層上の位置を表す。同じ種類のポートが複数ある場合は、ポートごとのインスタンスを識別するための添字も付ける。
| 情報の例 | 読み取った値の利用 |
|---|---|
| 機器の稼働時間 | 再起動の発生を検出する |
| インタフェースの運用状態 | ポートが動作中か、リンクが停止しているか判断する |
| インタフェースの送受信オクテット数 | 一定間隔の差分から転送量や使用率を求める |
| LLDPで発見した隣接機器の情報 | どのポートがどの機器につながるか整理する |
カウンターは累積値なので、そのまま毎秒の通信量とは読めない。前回値との差を取得間隔で割り、カウンターの折返しや機器の再起動も確認する。
情報を取得する操作
| SNMPの操作 | 役割 |
|---|---|
| GetRequest | 指定した項目の値を取得する |
| GetNextRequest | 指定した識別子の次にある項目を取得する |
| GetBulkRequest | 複数の項目をまとめて取得する。SNMPv2以降で使える |
| SetRequest | 書込み可能な項目の値を変更する |
定期的な取得はポーリングである。機器が異常などの発生を自発的に知らせるTrapとは方向と契機が異なる。
隣接機器から接続構成を把握する
LLDPは直接隣接する機器同士で装置名やポートなどの情報を交換する。スイッチは受信した隣接情報をLLDP-MIBの管理対象として提供できる。監視サーバが各スイッチへSNMPで問い合わせ、ローカルポートと相手の装置・ポートの対応を集めると、物理的な接続構成を把握しやすくなる。
情報を交換するプロトコルと、集まった情報を監視側が読み取るプロトコルは異なる。未対応機器や情報の期限切れもあるため、取得した表だけで現在の全接続を必ず再現できるとは限らない。