トラフィックの監視は MRTG を使う。Ubuntu の場合は、とりあえず以下のパッケージをインストールしておけばよいと思う。
# apt-get install mrtg
# apt-get install mrtg-contrib
# apt-get install mrtg-ping-probe
# apt-get install mrtg-rrd
# apt-get install mrtgutils
# apt-get snmp
# apt-get install apache2
設定のポイントは、1. /etc/mrtg.cfg の作成、2. index.html の作成、3. snmpd.conf の修正の 3つ。
# /usr/bin/cfgmaker --no-down private@localhost
private@localhost は、MRTG が動作しているマシン自身のトラフィックを測定する。もし監視対象がリモートのマシン(例えば IP アドレスが 192.168.0.2)で、SNMP のコミュニティ名が public だとすると、
# /usr/bin/cfgmaker --no-down public@192.168.0.2
以下は、/etc/mrtg.cfg の設定例。MRTG は、デフォルトだとグラフの時間軸で左の方が最新のグラフとなるので、それを逆にする場合は growright オプションをつける。また、ビット/秒 の単位にしたい場合は、bits もつける。LAN のスピードが 100Mbps の場合は MaxBytes オプションを 12500000 とする。
なお、Options[_] にある [_] とは何だろう?これは、以下の設定で共通に作用するもので、グローバル変数みたいなもの。
# for Debian
WorkDir: /var/www/mrtg
### Global Defaults
Options[_]: growright, bits
MaxBytes[_]: 12500000
EnableIPv6: no
### Interface 2 - 2: の 2は、eth0 を表す
Target[localhost_2]: 2:private@localhost:
SetEnv[localhost_2]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="eth0"
Title[localhost_2]: Traffic Analysis for dcl-proxy
PageTop[localhost_2]: <h1>Traffic Analysis for local-server</h1>
<div id="sysdetails">
<table>
<tr>
<td>System:</td>
<td>local-server (configure /etc/snmp/snmpd.local.conf)</td>
</tr>
<tr><td>Maintainer:</td><td>Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)</td></tr>
<tr><td>Description:</td><td>eth0 </td></tr>
<tr><td>ifType:</td><td>ethernetCsmacd (6)</td></tr>
<tr><td>ifName:</td><td>eth0</td></tr>
<tr><td>Max Speed:</td><td>12500.0 kBytes/s</td></tr>
<tr><td>Ip:</td><td>192.168.0.2 (local-server
youdomain.com)</td></tr>
</table>
</div>
ここで、Cisco の Intelligent Switch である 3560G や 2950 を設定する場合は、2: であってはいけない。3560G の場合はポートが 10101~10125、2950 の場合は 10000~10048 なので注意すること。以下、上の /etc/mrtg.cfg の中に引き続き付け加える。
#--------------------------------------------------------
Target[192.168.0.10.1]: 10101:public@192.168.0.10:::::2
Title[192.168.0.10.1]: Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 1)
PageTop[192.168.0.10.1]: <h1>Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 1)</h1>
<div id="sysdetails">
<table>
<tr><td>IP:</td><td>192.168.0.10</td></tr>
<tr><td>Port:</td><td>1</td></tr>
</table>
</div>
#--------------------------------------------------------
Target[192.168.0.10.2]: 10102:public@192.168.0.10:::::2
Title[192.168.0.10.2]: Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 2)
PageTop[192.168.0.10.2]: <h1>Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 2)</h1>
<div id="sysdetails">
<table>
<tr><td>IP:</td><td>192.168.0.10</td></tr>
<tr><td>Port:</td><td>2</td></tr>
</table>
</div>
#--------------------------------------------------------
Target[192.168.0.10.3]: 10103:public@192.168.0.10:::::2
Title[192.168.0.10.3]: Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 3)
PageTop[192.168.0.10.3]: <h1>Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 3)</h1>
<div id="sysdetails">
<table>
<tr><td>IP:</td><td>192.168.0.10</td></tr>
<tr><td>Port:</td><td>3</td></tr>
</table>
</div>
(以下、10104:public@192.168.0.10:::::2 などと続く)
# indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
Ubuntu の場合、127.0.0.1 とある行で、自マシンしか SNMP のアクセスを許さなくなってしまっている。リモートから監視させるのにはいらんセキュリティだ。
# SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'