_ [comp] MRTG でネットワークトラフィックの IN と OUT を分ける

MRTG ではネットワークトラフィックの IN と OUT が同一のグラフになっているけど、それを別々にできないか調べてみる。単純に分離するオプションとかはないようなので、MIB を指定して得ることにする。ネットワークモニタリングツールを製作する 第1回 SNMPの仕組みを理解する というページを発見したので参考にしてみる。 まずインターフェイスのチェック。

% snmpwalk -v 1 XXXXXXXX -c XXXXXXXX ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: sit0

% snmpwalk -v 1 XXXXXXXX -c XXXXXXXX ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.XXX.XXX.XXX.XXX = INTEGER: 2

eth0 は 2 のようだ。 受信オクテット数は ifInOctets、送信オクテット数は ifOutOctets で取れるようだ。

% snmpget -v 1 XXXXXXXX -c XXXXXXXX ifInOctets.2 ifOutOctets.2
IF-MIB::ifInOctets.2 = Counter32: 260681632
IF-MIB::ifOutOctets.2 = Counter32: 1059735146

mrtg.cfg には次のように追加。

Target[eth0_in]: ifInOctets.2&ifInOctets.2:XXXXXXXX@XXXXXXXX
Options[eth0_in]: growright
Title[eth0_in]: Traffic Analysis for eth0_in -- XXXXXXXX

Target[eth0_out]: ifOutOctets.2&ifOutOctets.2:XXXXXXXX@XXXXXXXX
Options[eth0_out]: growright
Title[eth0_out]: Traffic Analysis for eth0_out -- XXXXXXXX

これでネットワークトラフィックの IN と OUT を別々のグラフにすることができた。