パケットを正常に転送するという目的を果たせるよう、これは必ず取得しておくべきという項目をまとめてみた。
今回まとめた項目は、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
オライリー・ジャパン
売り上げランキング: 478,636
売り上げランキング: 186,659
ピンバック: SNMP監視でよく使うMIBのOID(ネットワーク機器編) | hosiiのメモ帳
lkdyjn