連載:監視を自動化するSNMP(3)
MIBの監視対象オブジェクトを分類する
北原静香
2003/4/25
SNMPの動作自体は名前の示すように非常にシンプルですが、アクセス対象であるMIBはお世辞にもシンプルとは言えません(第2回「どのようにしてネットワークを管理するのか?」参照 )。そこで、今回はこのMIBがどのような構造をしているか、また標準MIBの中でも基本であるMIB-2にどのような情報が定義されているかを具体的に解説したいと思います。
3種類の機能を5つのコマンドで実行
SNMPによるネットワークシステムの管理とは「機器の管理情報ベース(MIB:Management Information Base)の情報を取得(または更新)する」ことであるといえます。どのような情報がMIBで管理されているかは機器によって異なりますが、SNMPで管理される機器は必ずMIBを保持しています。
MIBの目的はネットワーク管理における標準的な情報管理構造の確立です。そのため多くのベンダが作成することが予想されるMIBは、定義ルールや値の取得(または更新)方法を規定(*1 )する必要があります。
(*1 )
MIBの定義ルールや値の参照方法として「SMI(Structure of Management Information)」が「RFC1155 」に定義されています。また、MIBの書式は「ASN.1(Abstract
Syntax Notation.1)」という言語が利用され、実際のエンコーディングには、BER(Basic Encoding
Rules)を利用しています。
しかしすべての機器が固有のMIBを持っているというわけではありません。SNMPマネージャは監視対象の機器が実装しているMIBのオブジェクトID(OID)を指定して情報を取得しますが、もし対象機器がすべて異なるMIBを実装してしまうとすべての対象機器のMIBファイルを参照しなければなりません(なぜなら取得するオブジェクトのOIDが分からないからです)。
この問題を解決するため、TCP/IPによるネットワークシステムに接続される機器が実装するべきMIBが標準MIBとしてRFCで定義されています。この標準MIBに対し、ベンダなどが独自に用意したMIBをプライベートMIBや拡張MIBなどと呼んで区別します。
機器の基本的な情報を管理する標準MIBの「MIB-2」
機器の管理する情報は多岐にわたりますが、その中でも最も標準的なMIBとして位置付けられているのが「MIB-2」です。MIB-2は図1 の示すように、MIBのオブジェクトツリーの中ではインターネットサブツリーの下(1.3.6.1.2.1)にあります(オブジェクトツリーに関しては、第2回「どのようにしてネットワークを管理するのか?」参照 )。
図1 オブジェクトのツリー(画面をクリックすると拡大表示します)
MIB-2の解説をする前に、少しだけ歴史的経緯を説明します。最初の標準MIBとしてRFC1156 で定義されたのは「MIB-1」でした。MIB-1では114種類の管理対象オブジェクトを定義していますが、OIDの割り当てを単純で分かりやすいものにするためにこれらを8個のグループ(System、Interface、Address
Translation、IP、ICMP、TCP、UDP、EGP)に分類しています。
その後RFC1213 において、新たに57種類の管理対象オブジェクトを追加した171種類の管理対象オブジェクトを11個のグループに分類したMIB-2が定義され、MIB-1を置き換えました。その後もMIB-2をはじめとする標準MIBは拡張されていますが、RFC1213 に定義されているMIB-2が最も標準的なMIBと呼んで差し支えないでしょう。
1
System
2
Interface
3
Address Translation
4
IP
5
ICMP
6
TCP
7
UDP
8
EGP
9
OIM
10
Transmission
11
SNMP
表1 RFC1213で定義されたMIB-2の監視対象オブジェクトのグループ
●Systemグループ
Systemグループには、機器のシステムに関係する設定が管理されています。このグループのオブジェクトは次のとおりです。
sysDescr
エンティティの情報
sysObjectID
ベンダのOID
sysUpTime
最後に初期化されてからの経過時間
sysContact
ノードの管理者の情報
sysName
ドメイン名
sysLocation
ノードの物理的な位置
sysService
エンティティが提供するサービス
表2 Systemグループ(1.3.6.1.2.1.1)
●Interfaceグループ
Interfaceグループには、機器の保有するハードウェアインターフェイスに関係する設定が管理されています。最初のオブジェクトである「ifNumber」にこの機器が保有するインターフェイス数が格納されており、その数に応じて設定を格納するテーブル行が追加されます。このグループのオブジェクトは次のとおりです。
ifNumber
機器の保持しているインターフェイス数
ifTable
各インターフェイスの設定が格納されたテーブル
ifEntry
テーブルのリスト
ifIndex
インターフェイスのインデックス
ifDescr
このインターフェイスの説明
ifType
インターフェイスタイプ(*2 )
ifMTU
MTUの値
ifSpeed
帯域
ifPhysAddress
物理アドレス
ifAdminStatus
設定状態
ifOperStatus
動作状態
ifLastChange
現在の動作状態に変化した時刻
ifInOctets
受信したすべてのオクテット数
ifInUcastPkts
受信したユニキャストパケット数
ifInNUcastPkts
受信した非ユニキャストパケット数
ifInDiscards
エラー以外の理由で破棄された受信パケット数
ifInErrors
エラーになった受信パケット数
ifInUnknownProts
サポートされていないプロトコルのため破棄された受信パケット数
ifOutOctets
転送したすべてのオクテット数
ifOutUcastPkts
送信したユニキャストパケット数
ifOutNUcastPkts
送信した非ユニキャストパケット数
ifOutDiscards
エラー以外の理由で破棄された送信パケット数
ifOutErrors
エラーになった送信パケット数
ifOutQLen
出力用のキューにためられるパケット数
ifSpecific
追加情報への参照
(*2 )インタ-フェイスタイプのリストは、RFC1213 にあります。
表3 interfaceグループ(1.3.6.1.2.1.2)
(ここをクリックすると別ウィンドウが開きます)
●Address Translationグループ
Address Translationグループは、MIB-1との互換性のために残されていますが、MIB-2では使用していません。このグループのオブジェクトIDは(1.3.6.1.2.1.3)です。
●IPグループ
IP(Internet Protocol)グループには、プロトコルの使用に関する設定が格納されています。このグループのオブジェクトは次のとおりです。
ipForwarding
このエンティティがゲートウェイであるかどうか
ipDefaultTTL
標準のTTL値
ipInRecevies
受信データグラム総数
ipInHdrErrors
ヘッダーのエラーのために破棄した受信データグラム数
ipInAddErrors
無効なIPアドレスのために破棄した受信データグラム数
ipInForw-Datagrams
ほかのエンティティへ転送した受信データグラム数
ipInUnknown-Protos
サポートされていないプロトコルのため破棄された受信データグラム数
ipInDiscards
エラー以外の理由で破棄された受信データグラム数
ipInDelivers
正常に受信したデータグラム数
ipOutRequests
送信データグラム総数
ipOutDiscards
エラー以外の理由で破棄された送信データグラム数
ipOutNoRoutes
経路不明で破棄された送信データグラム数
ipReasm
-Timeout
再構成のためにデータを保持できる時間
ipReasmReqds
再構成を必要としたIPフラグメント数
ipReasmOKs
正常に再構成できたフラグメント数
ipReasmFails
再構成で検出したエラー数
ipFragOKs
正常にフラグメントされたデータグラム数
ipFragFails
フラグメントされずに破棄されたデータグラム数
ipFragCreates
フラグメント作成数
ipAddrTable
IPアドレスに関するテーブル
ipAddrEntry
IPアドレスに関する情報のリスト
ipAdEnt-
Addr
エントリのIPアドレス
ipAdEnt-
IfIndex
インターフェイスのインデックス
ipAdEnt-
NetMask
サブネットマスク
ipAdEnt-BcastAddr
ブロードキャストアドレスの
最下位ビット値
ipAdEnt-Reasm-
MaxSize
処理可能なデータグラムのサイズ
ipRoutingTable
IPルーティングテーブル(現在は未使用)
ipNetTo-MediaTable
IPアドレスから物理アドレスへのマッピングテーブル
ipNetTo-MediaEntry
テーブルのリスト
ipNetToMedia-IfIndex
インターフェイスのインデックス
ipNetToMedia-PhysAddress
物理アドレス
ipNetToMedia-
NetSddress
対応するIPアドレス
ipNetToMedia-
Type
メディアタイプ
ipRouting-Discards
破棄されたルーティング項目数
ipForward
IPの転送テーブル
ipForward-Number
転送テーブルの
エントリ数
ipForward-Table
転送テーブル
ipForward-Entry
テーブルのリスト
ipForward-Dest
あて先のIPアドレス
ipForward-Mask
サブネットマスク
ipForward-Policy
転送ポリシー
ipForward-NextHop
次にルーティ
ングするノードのIPアドレス
ipForward-IfIndex
次にルーティ
ング するローカルインターフェイスのインデックス
ipForward-Type
ルートタイプ
ipForward-Proto
ルートを調査したプロトコル
ipForward-Age
ルートが最後に更新されてからの経過時間
ipForwardInfo
ルーティング
プロトコルの
MIB定義参照
ipForward-NextHopAS
次にルーティン グするAS
(Autonomous System)番号
ipForward-Metric1
ルートの1次メトリック
ipForward-Metric2
ルートの代替メトリック
ipForward-Metric3
ルートの代替メトリック
ipForward-Metric4
ルートの代替メトリック
ipForward-Metric5
ルートの代替メトリック
表4 IPグループ(1.3.6.1.2.1.2)
(ここをクリックすると別ウィンドウが開きます)
●ICMPグループ
ICMP(Internet Control Message Protocol)グループには、ICMPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。
icmpInMsgs
ICMPメッセージの受信総数
icmpInErrors
エラーの発生したICMPメッセージの受信数
icmpInDestUnreachs
Destination
Unreachable(到達不能)の受信数
icmpInTimeExcds
TimeExceeded(時間超過)の受信数
icmpInParmProbs
Parameter Problem(パラメータ異常)の受信数
icmpInSrcQuenchs
Source Quench(送信元の消失)ICMPメッセージの受信数
icmpInRedirects
Redirectの受信数
icmpInEchos
Echo Requestの受信数
icmpInEchosReps
Echo Replyの受信数
icmpInTimestamps
Timestamp Requestの受信数
icmpInTimestampsReps
Timestamp Replyの受信数
icmpInAddMasks
Address Mask
Requestの受信数
icmpInAddMasksReps
Address Mask
Replyの受信数
icmpOutMsgs
ICMPメッセージの送信総数
icmpOutErrors
エラーの発生したICMPメッセージの送信数
icmpOutDestUnreachs
Destination
Unreachable(到達不能)の送信数
icmpOutTimeExcds
TimeExceeded(時間超過)の送信数
icmpOutParmProbs
Parameter Problem(パラメータ異常)の送信数
icmpOutSrcQuenchs
Source Quench(送信元の消失)ICMPメッセージの送信数
icmpOutRedirects
Redirectの送信数
icmpOutEchos
Echo Requestの送信数
icmpOutEchosReps
Echo Replyの送信数
icmpOutTimestamps
Timestamp Requestの送信数
icmpOutTimestampsReps
Timestamp Replyの送信数
icmpOutAddMasks
Address Mask
Requestの送信数
icmpOutAddMasksReps
Address Mask
Replyの送信数
表5 ICMPグループ(1.3.6.1.2.1.5)
(ここをクリックすると別ウィンドウが開きます)
●TCPグループ
TCP(Transmission Control Protocol)グループには、TCPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。
tcpRtoAlgorithm
オクテット再送のアルゴリズム
tcpRtoMin
再送のタイムアウトとして許可される時間の最小値
tcpRtoMax
再送のタイムアウトとして許可される時間の最大値
tcpMaxConn
接続の最大数
tcpActivOpens
接続がCLOSEDからSYN-SENTに移行した回数
tcpPassiveOpens
接続がLISTENからSYN-REVDに移行した回数
tcpAttemptFails
接続の失敗回数
tcpEstabResets
リセット回数
tcpCurrEstab
現在ESTABLISHDまたはCLOSE-WAITの接続数
tcpInSegs
受信セグメント総数
tcpOutSegs
送信セグメント総数
tcpRetransSegs
再送セグメント総数
tcpConnTable
TCP接続に関するテーブル
tcpConnEntry
TCP接続のリスト
tcpConnState
接続のステータス
tcpConnLocalAddress
ローカルの
IPアドレス
tcpConnLocalPort
ローカルの
ポート番号
tcpConnRemAddress
リモートの
IPアドレス
tcpConnRemPort
リモートの
ポート番号
tcpInErrs
エラーになった受信セグメント数
tcpOutRsts
RSTフラグを含んだ送信セグメント数
表6 TCPグループ(1.3.6.1.2.1.6)
(ここをクリックすると別ウィンドウが開きます)
●UDPグループ
UDP(User Datagram Protocol)グループには、UDPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。
udpInDatagrams
データグラムの受信総数
udpNoPorts
受信ポートに対応アプリケーションのなかった受信データグラム数
udpInErrors
上記以外の理由でエラーになった受信データグラム数
udpOutDatagrams
データグラムの送信総数
udpTable
UDPのエンドポイントに関するテーブル
udpEntry
テーブルのリスト
udpLocalAddress
ローカルのIPアドレス
udlLocalPort
ローカルのポート番号
表7 UDPグループ(1.3.6.1.2.1.7)
●EGPグループ
EGP(Exterior Gateway Protocol)グループには、EGPの動作に関する設定が格納されています。EGPはautonomousシステムの通信に使用されるプロトコルで、RFC904 で定義されています。EGPを実装していないシステムでは、このグループのオブジェクトの実装は必須ではありません。このグループのオブジェクトIDは(1.3.6.1.2.1.8)です。
●OIMグループ
OIMグループはCMOT(Common Management Information Protocol over TCP/IP)に関する設定が格納されるグループですが、現在のMIB-2では使用されていません。このグループのOIDは(1.3.6.1.2.1.9)です。
●Transmissionグループ
Transmissionグループには、データ転送に関する設定が格納されています。MIB-2を最初に定義したRFC1213 ではTransmissionグループのオブジェクトが明確に定義されていません。その後RFC1700 でデータ転送に関するオブジェクトのリストが定義されていましたので、興味のある方は参照してください。このグループのOIDは(1.3.6.1.2.1.10)です。
●SNMPグループ
SNMPグループには、SNMPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。
snmpInTooBigs
tooBigエラーの受信数
snmpInNoSuchNames
noSuchNamesエラーの受信数
snmpInBadValues
badValuesエラーの受信数
snmpInReadOnlys
readOnlysエラーの受信数
snmpInGenErrs
genErrsエラーの受信数
snmpInTotalReqVars
リクエストに応答して取り出したオブジェクトの総数
snmpInTotalSetVars
変更されたオブジェクトの総数
snmpInGetRequests
GetRequestの受信数
snmpInGetNexts
GetNextRequestの受信数
snmpInSetRequests
SetRequestの受信数
snmpInGetResponces
GetResponceの受信数
snmpInTraps
Trapの受信数
snmpOutTooBigs
tooBigエラーの送信数
snmpOutNoSuchNames
noSuchNamesエラーの送信数
snmpOutBadValues
badValuesエラーの送信数
----
使用されていないオブジェクト
snmpOutGenErrs
genErrsエラーの送信数
snmpOutGetRequests
GetRequestの送信数
snmpOutGetNexts
GetNextRequestの送信数
snmpOutSetRequests
SetRequestの送信数
snmpOutGetResponces
GetResponceの送信数
snmpOutTraps
Trapの送信数
snmpEnableAuthenTraps
認証失敗トラップの生成の許可
表8 SNMPグループ(1.3.6.1.2.1.11)
「private」サブツリー中の機器固有のオブジェクト
通常ベンダが機器固有の機能を管理するために補完しているMIBは、privateサブツリーのenterprisesグループ以下(図1 参照)にあります。ほかの機器との差別化を図るため、積極的に新しい機能を搭載した機器がリリースされていますが、その多くはプライベートMIBによって独自の管理情報が取得できるようになっています。
これらの追加されたMIBの情報は、各ベンダの提供するMIBファイルを参照することで確認することができるでしょう。
まとめ
この連載ではSNMPによってネットワークシステムを管理する仕組みと、それらの情報の管理構造である管理情報ベース(MIB)について解説しました。ここまでに解説した内容はあくまでもSNMPというプロトコルの概要であり、より本格的にSNMPを理解したいのであれば、やはりRFCなどの多くの資料に目を通す必要があります。
いかがでしたか?
今後もSNMPの需要はさらに高まることが予想されます。この連載が読者の皆さまのSNMPへの理解に少しでも役に立てば幸いです。
ご愛読どうもありがとうございました
TechTargetジャパン
Master of IP Network フォーラム 新着記事
実機では測定できない性能を測定? (2012/2/7) システムの完成前に、達成し得る性能値や必要なサーバリソースを知るには? その解となる「性能シミュレーション技法」を解説
性能チューニング個所の検討 (2012/1/30) アプリのチューニングや環境増強で、どの程度改善が見込める? 今回からは「実際に活用できる性能対策」を解説します
遅いところを直すだけでいいのですか? (2012/1/24) 負荷が集中したときの性能ボトルネックを改善するのに、アプリケーションサーバとDB、どちらを優先すべきでしょう?
cloudfoundry.comを使ってみよう (2012/1/19) VMwareが提供するPaaSプラットフォーム「CloudFoundry」。注目を集めるこの基盤を活用してPaaSを構築!
キャリアアップ