MRTG(Multi Router Traffic Grapher)は、Linuxプラットフォームで広く使用されている監視・統計ツールです。ネットワークリンクのトラフィック負荷を監視するために設計されていますが、高度な拡張性と設定性を備えています。ルーターやスイッチのインターフェースを監視できるだけでなく、Linuxシステム変数を分析することも可能です。通常はSNMP(Simple Network Management Protocol)を使用しますが、MRTGはローカルスクリプトによるデータ入力もサポートしています。データはHTML形式に変換され、PNG形式のグラフも表示されるため、ネットワークを視覚的に表現できます。
SNMPの概要
MRTGのインストールと設定を詳しく説明する前に、MRTGとSNMPがどのように連携するかを理解することが重要です。デフォルトでは、MRTGはSNMPコミュニティ文字列とデバイスのホスト名またはIPアドレスを受け取り、必要な情報を取得します。これは、すべてのSNMP対応デバイスに事前定義された管理情報ベース(MIB)オブジェクトをポーリングすることによって行われます。MIBは基本的に、システム値に対応する変数のデータベースです。基本的な例としては、システム名、インターフェースタイプ、稼働時間などの情報があります。
ほとんどのベンダーは自社製品ライン用のMIBを提供しており、これらはSNMP標準に準拠しています。デバイス側では、SNMPを有効にし、コミュニティストリングを設定する必要があります。こうした設定はベンダーによって異なり、場合によってはデバイスごとに異なります。例えばCisco製品では、設定コマンドsnmp-serverは次のように使用されます:
snmp-server community c1sc0 RO
これは、コミュニティ文字列c1sc0を提供するクエリSNMPツールへの読み取り専用アクセスをCisco IOSに通知します。SNMP文字列はパスワードのように扱い、適切に設定することをお勧めします。HP OpenView、Cisco Works、OpenNMSなどの他のネットワークおよびシステム監視ツールを現在使用している場合は、SNMPが既に設定され、実行されている可能性があります。
Linux も、MRTG にリアルタイムデータを提供するように設定する必要があります。これは、SNMP またはローカルスクリプトを使用して行うことができます。SNMP リクエストを受信するには、snmpd をインストールして設定する必要があります。設定はsnmpd.confファイルで行い、コミュニティ文字列を設定する必要があります。標準的な UCD SNMP 実装の場合、 snmpd.confの行は次のようになります:
com2sec readonly default liNuX42
繰り返しになりますが、SNMPエージェントには読み取り専用アクセスのみを許可している点にご注意ください。読み取り/書き込みアクセスも設定可能ですが、必要ない場合は設定しないでください。読み取り専用アクセスでは、統計情報と設定オプションのみを表示できます。これはセキュリティ上の理由から厳重に監視する必要がありますが、SNMP経由でリモートコマンドの実行を許可することほど危険ではありません。
MRTGのインストールと設定
MRTGは、最近ますます増えているパッケージと同様に、お好みの自動インストーラーでインストールできます。APTでもup2dateでも、通常はそれがシステムにインストールする最も早い方法です。また、ソースコードとRPMディストリビューションは、MRTG.orgのメンテナーサイトから入手できます。MRTGは多くの依存関係があり、最も重要なのはPerl、gd、libpng、zlibです。インストール中に問題が発生した場合は、この点に注意してください。ソースコードのインストールは、標準的なスキームに従って、
tar xpfz mrtg-2.9.18.tar.gz
./configure
make
make installを実行します。
RPMを使ったインストールも簡単です。パッケージ名は異なる場合がありますが、コマンドは
rpm –ivh mrtg-2.9.18.rpmです。
MRTGをシステムにインストールしたら、HTMLとPNGファイルを表示するWebディレクトリを設定する必要があるかもしれません。mkdirコマンドを使って、メインのHTTPパスの下にmrtgというディレクトリを作成し、パーミッションを変更してください。例:
mkdir /var/www/mrtg
chmod 755 /var/www/mrtg
次のステップは、MRTGが使用する設定を作成することです。最も簡単な方法は、cfgmakerを実行し、SNMPコミュニティ文字列とデバイスを指定してテキストファイルに出力することです。例:
cfgmaker [email protected] > /etc/mrtg.cfg
次に、新しいmrtg.cfgファイルを編集し、作業ディレクトリ (MRTG 関連ファイルが保存される場所) へのパスをリストする行を追加します。次のようにします:
WorkDir: /var/www/mrtg
デバイスはIPアドレスまたはホスト名で表すことができる点にご注意ください。また、cfgmakerはバージョンに応じて、コマンドラインで様々なオプションと設定をサポートしています。ただし、最初はデフォルトのオプションを使用するのが最適です。後から設定ファイルを直接変更することも可能です。
基本的な設定ファイルは次のようになります:
Target[192.168.66.72.1]: 1:[email protected]
MaxBytes[192.168.66.72.1]: 1250000
Title[192.168.66.72.1]: RTR2: Ethernet0/0
PageTop[192.168.66.72.1]: <h1>Traffic Analysis for Ethernet0/0</h1>
これらは、MRTG設定ファイルに記述できる数多くのオプションのうちのほんの一部です。最初の値はTargetです。括弧内は、複数のデバイスやインターフェースに個別のオプションを適用するための一意の名前です。次に、実際にデータを提供するもの、つまりこの場合はSNMPを指定します。
次に、 MaxBytesオプションがあります。これは上限値の設定方法であり、パーセンテージ値の基準となるものです。ポーリング対象に応じて、媒体やターゲットによって異なります。次の2つのオプションはHTML用で、記述子として機能します。
ローカルスクリプトは、MRTGに情報を取得する別の手段です。シンプルなものから複雑なものまで、シェルスクリプトやPerlスクリプトなど、様々なスクリプトが存在します。ここでは、 iptablesファイアウォールへの受信パケットのデータをMRTGに提供する、シンプルなシェルスクリプトの作成方法を見ていきます。
まず、スクリプト/usr/local/mrtg/iptables-inを作成します:
#!/bin/bash
IPTABLES=”/sbin/iptables”
UPTIME=”/usr/bin/uptime”
$IPTABLES -nvxL | grep INPUT | awk '{ print $5 }'
$UPTIME | awk '{ print $3, $4, $5 }'
このスクリプトは、 INPUTルールから受け入れたパケット数を取得します。grepを使用してINPUTを含む行を検索し、5番目の値(この場合は処理されたパケット数)のみを出力します。uptimeコマンドは、MRTGが各値間の経過時間を把握し、一定期間にわたってグラフ化できるようにするために使用されています。
mrtg.cfgは次のようになります:
WorkDir: /var/www/mrtg
Target[in_packets]: `/usr/local/mrtg/iptables-in`
MaxBytes[in_packets]: 1500
Title[in_packets]: Inbound packet
PageTop[in_packets]: <h1>Inbound Packet Stats</h1>
これは上記のSNMPの設定と似ていますが、ターゲットをiptables-inという外部スクリプトに指定しています。また、ビットやバイトではなくパケットを扱うため、 MaxBytesの設定はかなり恣意的に設定しています。これはシステムによって異なるため、いくつか異なる値を試してみる必要があるかもしれません。これはかなり単純な例ですが、MRTGで何ができるかを理解してもらえればと思います。コマンドラインで収集できるデータはすべてMRTGにインポートし、リアルタイムでグラフ化できます。
MRTGの実行
MRTGが正常にインストールされたら、システム上で実行できるように設定する必要があります。MRTGは次のように手動で実行できます:
/usr/bin/mrtg /etc/mrtg.cfg
MRTGは実行するたびにログファイルを更新します。最初の2回はすべてのファイルが作成されておらず、エラーが表示される場合があります。これは無視して構いませんが、3回目に何かエラーが表示された場合は、より詳細な調査が必要になる可能性があります。
MRTGはデバイスのポーリングとデータ収集のため、頻繁にプログラムを実行する必要があるため、cronを設定してプログラムを実行することをお勧めします。標準の間隔は5分ですが、必要に応じて変更できます。/etc/crontabに、間隔、実行ユーザー、MRTGへのパス、そしてMRTG.cfgへのパスを次のように記述します。
*/5 * * * * root /usr/bin/mrtg /etc/mrtg.cfg
MRTGの設定と実行が完了したら、Webブラウザからページにアクセスするだけです。複数のデバイスのインデックス作成や自動更新の有効化など、HTMLを手動で調整する必要があるかもしれません。図Aは、完成した製品がどのような出力を行うかを示すサンプルグラフです。
図A |
![]() |
概要
MRTGは、ネットワークリンクとシステム情報を設定可能な期間にわたってグラフ化できる、強力で拡張性の高いツールです。SNMP、ローカルスクリプト、またはその両方を利用することで、MRTGはデバイスを容易に監視できます。傾向、トラフィックの急増、低速期間などは、視覚的な表示によって容易に把握できます。MRTGは優れた形式でこれを実現し、Webブラウザで表示可能なHTMLおよびPNG形式でデータを出力します。MRTGは商用監視ソフトウェアのような高度な機能を備えているわけではありませんが、必要な機能は十分に備えており、ネットワーク監視活動の一部として検討する価値は十分にあります。