特集
» 2007年05月21日 08時34分 UPDATE

SNMPによるネットワークモニタリング「第2版」:第5回 図解で知るSNMP――MIB情報のすべて (6/8)

[大澤文孝,ITmedia]

 ifTableは、それぞれのインタフェースの詳細を保持したテーブルであり、ifNumberの数だけ要素がある(図6)。interfacesサブツリーに備わる各オブジェクトの意味は、次の表3、表4の通りだ。

fig03_06.gif 図6■interfacesサブツリーの構造

表3■interfacesサブツリー

名称 OID 意味
ifNumber interfaces.1 Integer32 インタフェース数
ifTable interfaces.2 SEQUENCE OF IfEntry IfEntryのテーブル(表4)。ifNumberの数だけ要素が存在する。

表4a■ifTableの配下の構造(IfEntry)インデックス

名称 OID 意味
ifIndex interfaces.2.1.1 InterfaceIndex 「1」「2」…という連番。インスタンスにアクセスする際のインデックス。

表4b■ifTableの配下の構造(IfEntry)オブジェクト

名称 OID 意味
ifDescr interfaces.2.1.2 DisplayString インタフェース名などの概要
ifType interfaces.2.1.3 IANAifType インタフェースの種類
ifMtu interfaces.2.1.4 Integer32 MTUの値
ifSpeed interfaces.2.1.5 Gauge32 通信速度。単位はbps
ifPhysAddress interfaces.2.1.6 PhysAddress 物理アドレス(MACアドレスなど)
ifAdminStatus interfaces.2.1.7 INTEGER 管理者向けのインタフェースの状態。1(有効)、2(無効)、3(テスト中)のいずれか。
ifOperStatus interfaces.2.1.8 INTEGER 操作ステータス。上記の1、2、3、のほか、4(不明)、5(活性化されていない)、6(コンポーネントが提供されていない)、7(下位層がダウンしている)。
ifLastChange interfaces.2.1.9 TimeTicks ifOperStatusが最後に変化したときのsysUpTimeの値。
ifInOctets interfaces.2.1.10 Counter32 受信した総バイト数
ifInUcastPkts interfaces.2.1.11 Counter32 受信したユニキャストパケット数
ifInNUcastPkts interfaces.2.1.12 Counter32 受信した非ユニキャストパケット数。推奨されない。代わりにifMulticastPktsまたはifInBroadcastPktsを使う(これらはifXTable(mib-2.31以下)にある)。
ifInDiscards interfaces.2.1.13 Counter32 破棄された受信パケット数
ifInErrors interfaces.2.1.14 Counter32 受信エラーのパケット数
ifInUnknownProtos interfaces.2.1.15 Counter32 プロトコル不明の受信パケット数
ifOutOctets interfaces.2.1.16 Counter32 送信した総バイト数
ifOutUcastPkts interfaces.2.1.17 Counter32 送信したユニキャストパケット数
ifOutNUcastPkts interfaces.2.1.18 Counter32 送信した非ユニキャストパケット数。推奨されない。代わりにifOutMulticastPktsまたはifOutBroadcastPktsを使う(これらはifXTable(mib-2.31以下)にある)。
ifOutDiscards interfaces.2.1.19 Counter32 破棄された送信パケット数
ifOutErrors interfaces.2.1.20 Counter32 送信エラーのパケット数
ifOutQLen interfaces.2.1.21 Gauge32 送信パケットキューの長さ
ifSpecific interfaces.2.1.22 OBJECT IDENTIFIER インタフェースを利用するために使われるメディア特有のMIBへのリファレンス。ただし推奨されない。

 より詳細なインタフェース情報は、interfacesサブツリーではなく、ifMIBサブツリー(mib-2.31)から取得することもできる(RFC2233を参照)。ここでは、あるインタフェースに対する「送信バイト数」「受信バイト数」を調べて、トラフィックを計測したいとしよう。

 その場合、次の手順をとればよい。

[1]インタフェース名を探す

 インタフェースの情報は、図6に示した通り、表4に示したテーブル形式で格納されている。そこでまずは、取得したいインタフェースのインデックス番号を調べる。

 これには幾つかの方法があるが、一般的なのはインタフェース名を調べることだ。表4に示したように、インタフェース名は、ifDescrが保持している。そこで、次のようにsnmpwalkコマンドを実行して、インタフェース名一覧を得るのだ。


$ snmpwalk -c hogeprivate -v 1 localhost ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: sit0
IF-MIB::ifDescr.3 = STRING: eth0

 上記の例では、「lo」「sit0」「eth0」の3つのインタフェースが搭載されており、インデックス番号は、先頭から順に「1」「2」「3」であることが分かる(もちろん表示される値は、環境によって異なる)。

[2]インタフェースの情報を取得する

 ここでは[1]の結果、eth0に関して調べたいとしよう。つまり、この例ではインデックス番号が3番だ。表4に示したように、受信パケット数はifInOctetsであるから、snmpgetコマンドを使って、


$ snmpget -c hogeprivate -v 1 localhost ifInOctets.3
IF-MIB::ifInOctets.3 = Counter32: 9000663

と取得できる。また同様に、送信パケット数はifOutOctetsであることから、


$ snmpget -c hogeprivate -v 1 localhost ifOutOctets.3
IF-MIB::ifOutOctets.3 = Counter32: 879194

となる。

 ここではinterfacesサブツリーから情報を取得したが、もしIPパケットを対象にしたいのであれば、ipサブツリーからたどるのもよいだろう(関連リンク、IP-MIBを参照)

Copyright© 2012 ITmedia, Inc. All Rights Reserved.

Special

- PR -

Special

- PR -

Special

- PR -