Ubuntu で、トラフィックの監視をしたい(MRTG)。

トラフィックの監視は 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つ。

  1. /etc/mrtg.cfg の作成
    # /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]: Traffic Analysis for local-server
    <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 &lt;root@localhost&gt; (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)
      </table>
    </div>
    

    ここで、Cisco の Intelligent Switch である 3560G や 2950 を設定する場合は、2: であってはいけない。3560G の場合はポートが 10101~101252950 の場合は 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]: Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 1)
    <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]: Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 2)
    <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]: Traffic Analysis for Catalyst 3560G (192.168.0.10 / Port 3)
    <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 などと続く)
  2. index.html を作成する
    # indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
  3. /etc/default/snmpd を修正する

    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'