SNMP監視でよく使うMIBのOID(インタフェース監視編)

SNMP監視でよく使うMIBのOID(インタフェース監視編)hosiiのメモ帳ネットワーク機器を監視するとき、いの一番に検討する項目はインタフェース監視である。
パケットを正常に転送するという目的を果たせるよう、これは必ず取得しておくべきという項目をまとめてみた。
今回まとめた項目は、SNMP機能を搭載した機器であれば、Ciscoに限らずほぼ全てのベンダで共通して使えるものなので、監視設計を行う際は参考にしてもらえると幸いである。
今回は、SNMP設定を有効にしたVMware ESXi6.0インストールマシンに対して実際にSNMPポーリングを行った結果も掲載している。

インタフェース情報

インタフェース情報の取得でよく使うOIDは以下の通り。構成管理情報として取得しておくと良い。
インタフェースのMIBは、インタフェース数に応じてOID末尾のインデックス番号が用意されているのがミソ。

OID MIBシンボル名 備考
.1.3.6.1.2.1.2.1.0 IF-MIB::ifNumber.0 機器のインタフェース数。
.1.3.6.1.2.1.2.2.1.1.x IF-MIB::ifIndex.x インタフェースごとのインデックス番号。以降のOIDの末尾.xは、ここで取得できるインデックス番号の数だけ存在する。SVIだとか、ループバックインタフェースなど、機器ベンダによってインデックス番号を付与する仕様が異なっており、必ずしも連番になっていない点には注意。
.1.3.6.1.2.1.2.2.1.2.x IF-MIB::ifDescr.x 各インタフェースの概要。(GigabitEthernet 0/0など)
.1.3.6.1.2.1.2.2.1.5.x IF-MIB::ifSpeed.x 各インタフェースの現在のリンク速度。(bps)

snmpwalkでの実際の取得結果は以下の通り。

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifNumber.0
IF-MIB::ifNumber.0 = INTEGER: 3

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifIndex
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: Device vmnic0 at 02:00.0 r8168
IF-MIB::ifDescr.2 = STRING: Traditional Virtual VMware switch: vSwitch0
IF-MIB::ifDescr.3 = STRING: Virtual interface: vmk0 on vswitch vSwitch0 portgroup: Management Network

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifSpeed
IF-MIB::ifSpeed.1 = Gauge32: 1000000000
IF-MIB::ifSpeed.2 = Gauge32: 0
IF-MIB::ifSpeed.3 = Gauge32: 0

インタフェース状態

インタフェース状態は、管理状態(設定)と、実状態の2種類が存在する。
状態の組み合わせで、以下3種類のパターンに分かれる。使わないポートはダウン設定を入れておく設計ポリシーの場合は、3番目の状態になった時点で障害と判断できる。

1.管理状態:Down / 実状態:Down → ポート設定でダウンが指定されている
2.管理状態:Up / 実状態:Up → ポート設定でアップが指定されており、実際にもアップしている
3.管理状態:Up / 実状態:Down → ポート設定でアップが指定されており、何らかの理由でダウンしている

.1.3.6.1.2.1.2.2.1.7.x IF-MIB::ifAdminStatus.x 管理状態(ポート設定)。この項目がDownの場合、手動でポートをシャットダウンしている。返ってくる値は、アップ(1),ダウン(2)、テスト中(3)となる。
.1.3.6.1.2.1.2.2.1.8.x IF-MIB::ifOperStatus.x インタフェースのポート状態。この項目がDownの場合、何らかの理由でポートがDown状態になっている。返ってくる値は、アップ(1),ダウン(2)、テスト中(3)となる。

snmpwalkでの実際の取得結果は以下の通り。

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifAdminStatus
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)
IF-MIB::ifAdminStatus.2 = INTEGER: up(1)
IF-MIB::ifAdminStatus.3 = INTEGER: up(1)

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifOperStatus
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.3 = INTEGER: up(1)

トラフィック情報

インタフェースのカウンタ値を取得するとこで、送受信それぞれのトラフィック情報を取ることができる。
カウンタはバイト単位で送受信のデータ量をカウントしていくので、bps(bit/sec)単位にするにはデータ保存時に以下の計算を行う。
(最新の取得値 – 前回の取得値) * 8 / データ取得間隔(秒)

なお、1000BASE-Tをはじめとしたギガビットイーサネットのインタフェースは、32ビットカウンタのカウンタのifInOctets / ifOutOctetsではカウンタが桁あふれして正常に情報が取得できないことがある。
そのため、64ビットカウンタのifHCInOctets / ifHCOutOctetsが用意されているインタフェースは、同カウンタで値を取った方が良い。

.1.3.6.1.2.1.2.2.1.10.x IF-MIB::ifInOctets 各インタフェースの受信バイト総数。カウンタサイズは32bit。
.1.3.6.1.2.1.2.2.1.16.x IF-MIB::ifOutOctets 各インタフェースの送信バイト総数。カウンタサイズは32bit。
.1.3.6.1.2.1.31.1.1.1.6.x IF-MIB::ifHCInOctets 各インタフェースの受信バイト総数。カウンタサイズは64bit。
.1.3.6.1.2.1.31.1.1.1.10.x IF-MIB::ifHCOutOctets 各インタフェースの送信バイト総数。カウンタサイズは64bit。

snmpwalkでの実際の取得結果は以下の通り。

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifOutOctets
IF-MIB::ifInOctets.1 = Counter32: 1310930696
IF-MIB::ifInOctets.2 = Counter32: 0
IF-MIB::ifInOctets.3 = Counter32: 3142852533

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifOutOctets
IF-MIB::ifOutOctets.1 = Counter32: 2711885612
IF-MIB::ifOutOctets.2 = Counter32: 0
IF-MIB::ifOutOctets.3 = Counter32: 3142855631

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 1310974298
IF-MIB::ifHCInOctets.2 = Counter64: 0
IF-MIB::ifHCInOctets.3 = Counter64: 3142860803

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifHCOutOctets
IF-MIB::ifHCOutOctets.1 = Counter64: 2711889461
IF-MIB::ifHCOutOctets.2 = Counter64: 0
IF-MIB::ifHCOutOctets.3 = Counter64: 0

パケット数情報

パケット数のカウンタ値を取得することで、各種パケット数情報の統計を取得できる。

受信パケットにおいて破棄が発生している場合は、自ポートの帯域以上のパケットを受信し、パケットの破棄が発生している。
送信パケットにおいて破棄が発生している場合は、機器内部で帯域の高いポートから低いポートへパケットが転送され、低帯域ポートがボトルネックとなりパケットの破棄が発生している。
送受信パケット破棄数の統計は計算式で求められる。
今回の取得値 – 前回の取得値

受信パケットにおいてエラーパケットが発生している場合は、自ポートまたは対向ポートとの間でデュプレックスミスマッチなどが発生している。
送受信エラーパケット数の統計は計算式で求められる。
今回の取得値 – 前回の取得値

.1.3.6.1.2.1.2.2.1.13.x IF-MIB::ifInDiscards.x 各インタフェースの受信破棄パケット総数。
.1.3.6.1.2.1.2.2.1.19.x IF-MIB::ifOutDiscards.x 各インタフェースの送信破棄パケット総数。
.1.3.6.1.2.1.2.2.1.14.x IF-MIB::ifInErrors.x 各インタフェースの受信エラーパケット総数。
.1.3.6.1.2.1.2.2.1.20.x IF-MIB::ifOutErrors.x 各インタフェースの送信エラーパケット総数。

snmpwalkでの実際の取得結果は以下の通り。

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifInDiscards
IF-MIB::ifInDiscards.1 = Counter32: 0
IF-MIB::ifInDiscards.2 = Counter32: 0
IF-MIB::ifInDiscards.3 = Counter32: 0

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifOutDiscards
IF-MIB::ifOutDiscards.1 = Counter32: 0
IF-MIB::ifOutDiscards.2 = Counter32: 0
IF-MIB::ifOutDiscards.3 = Counter32: 178

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifInErrors
IF-MIB::ifInErrors.1 = Counter32: 0
IF-MIB::ifInErrors.2 = Counter32: 0
IF-MIB::ifInErrors.3 = Counter32: 0

snmpwalk -v 2c -c <コミュニティ名> <取得対象対象IPアドレス> IF-MIB::ifOutErrors
IF-MIB::ifOutErrors.1 = Counter32: 0
IF-MIB::ifOutErrors.2 = Counter32: 0
IF-MIB::ifOutErrors.3 = Counter32: 178

参考
https://www.cisco.com/c/ja_jp/support/docs/ip/simple-network-management-protocol-snmp/26007-faq-snmpcounter.html

入門SNMP
入門SNMP

posted with amazlet at 17.08.27
ダグラス・R. マウロ ケビン・J. シュミット
オライリー・ジャパン
売り上げランキング: 478,636

SNMP監視でよく使うMIBのOID(インタフェース監視編)」への2件のフィードバック

  1. ピンバック: SNMP監視でよく使うMIBのOID(ネットワーク機器編) | hosiiのメモ帳

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です