dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

SNMPでネットワーク機器のポートのoutboundパケットのドロップ率を大まかに把握する

そこそこの規模のネットワークにおいて、インターネットへ向かうポートには多量のトラフィックが合流してパケットが破棄されてしまうことがある。 とある環境では上りのトラフィックのパケットだけがインターネットへの出口で大量にドロップされていた。 ここではネットワーク機器の物理ポートに対するSNMP監視を用いた大まかなドロップ率の把握方法をメモしておく。

収集が必要な値は主に以下の4つである。ここで、「ifIndex」はインターフェイスのインデックスである。 いずれの値も累計数であり機器をリセットしたり明示的にカウンタをクリアしない限り、値は(広義)単調増加する。 任意の期間の間に発生したパケット数を知りたい場合は測定した2つの時点の値の差分を取らなければならない。 Zabbixでメトリクスを収集している場合は「change per second」などを設定して変化分を保持すると扱いやすい。

OID MIB 説明
1.3.6.1.2.1.2.2.1.17.[ifIndex] ifOutUcastPkts 送信されたユニキャストパケットの累計数
1.3.6.1.2.1.2.2.1.19.[ifIndex] ifOutDiscards エラーパケットを除く、送信時に破棄されたパケット累計数
1.3.6.1.2.1.31.1.1.1.4.[ifIndex] ifOutMulticastPkts 送信されたマルチキャストパケットの累計数
1.3.6.1.2.1.31.1.1.1.13.[ifIndex] ifHCOutBroadcastPkts 送信されたブロードキャストパケットの累計数

値の変化分を \varDeltaで表すことにすると、パケット破棄率の変化  \varDelta \text{DropRate}は次のように表せる。

 \varDelta \text{DropRate} = \frac{\varDelta \text{ifOutDiscards}}{\varDelta \text{ifOutUcastPkts} + \varDelta \text{ifOutDiscards} + \varDelta \text{ifOutMulticastPkts} + \varDelta \text{ifHCOutBroadcastPkts}} \times 100

Zabbixならcalculated itemとして上記のような式を設定しておけばグラフ描画も可能だ。

OIDの詳しい状態が知りたければ、こういったサイトで調べる。 https://oidref.com/1.3.6.1.2.1.2.2.1.19