bonding interfaceの速度のSNMP MIBがおかしい

cactiでbond0(1Gbps mode=1 1Gbpsのeth0/eth1)のグラフを取ると上限が10Mbpsになっていた。snmpwalkの応答を見てみると、max 10Mbpsで返ってきている。

IF-MIB::ifSpeed.6 = Gauge32: 10000000

ナズェ…と思ってmanualとかを見ていると仕様っぽい。

まずは書いてある通りman snmpd.conf を読む。

Interfaces Group
  interface NAME TYPE SPEED
    can be used to provide appropriate type and speed settings for  interfaces
    where  the  agent  fails  to  determine  this  information  correctly.
    TYPE  is  a  type value as given in the IANAifType-MIB, 
    and can be specified numerically or by name (assuming this MIB is loaded).

ふむ。次にIANAifType-MIBを調べる。

(/usr/share/snmp/mibs/IANAifType-MIB.txt に同じのがあるはず)

NICethernetだからIANAifTypeの項目のethernetCsmacd(6) というところが該当するのでsnmpd.conf には

interface bond0 6 1000000000
interface bond1 6 2000000000

等と設定すれば良さそうだ。(速度はbondingのmodeや束ねるnic数によって適宜設定する)
TYPEは適当に設定しても速度の値は設定されるけど、IF-MIB::ifType が異なるものに設定されてしまうはず。

cacti

snmpdを直したらcactiの管理画面でspeedが設定した値(上の例なら1Gbps) になっていることを確認。ただし、一度10Mbps用でグラフを作成してしまっている場合は、Graph Listから一旦削除して再作成する必要がある。

追記

コメントで指摘いただいたように、削除しなくてもrrdtool のdumpとrestoreで修正できるようです。