RRDtool は MRTG(Multi Router Traffic Grapher)の後継ツールとして開発されました。MRTG(Multi Router Traffic Grapher)は、SNMP(Simple Network Management Protocol)エージェントから取得したデータを加工してグラフ化するツールです。監視の対象としている機器に対して SNMP リクエストを送信し、取得したデータをもとに Web ページを作成することが可能です。RRDtool も同様にグラフ化を実現するためのツールですが、RRDTool はラウンドロビンデータベースにデータを蓄積し、そこに格納されたデータを利用します。ラウンドロビンデータベースでは、あらかじめ特定のサイズのデータベースを作成しておき、データが総量に達すると新しいデータで古いデータを上書きしていくことによりデータを更新します。そのため、データベースのサイズが増加することはなく、運用中にメンテナンスを必要としません。また、MRTG はデータの取得、集計、グラフ化といった処理を同時に行うため、かなりのシステムリソースを必要としますが、RRDtool はデータの集計とグラフ化に特化したツールであるため、より高速なデータ処理が期待できます。さらに、MRTG は、複数のマシンの情報を 1 つのグラフに表示することはできませんが、RRDtool は、より柔軟で多彩なグラフ描画機能を持ちあわせています。ただし、RRDtool 自体に情報収集機能はないため、SNMP などからのデータ収集に関しては、snmpget コマンドなどで取得したデータをラウンドロビンデータベースの形式で格納するスクリプトなどを用意する必要があります。
RRDtool でデータのグラフ化を実現するまでには、以下の作業が必要になります。
ラウンドロビンデータベースの作成
ラウンドロビンデータベースの更新
グラフの描画
これらの作業はすべて rrdtool コマンドを利用します。rrdtool の引数に create、update、graph などを渡すことにより、上記の処理を行います。例えば、ローカルシステムの CPU ロードアベレージの情報を格納するラウンドロビンデータベース cpu_load.rrd を作成するには、以下のようなコマンドを実行します。
rrdtool create /var/www/html/sysgraphs/cpu_load.rrd -s 60 \
DS:load1:GAUGE:600:0:U \
DS:load5:GAUGE:600:0:U \
DS:load15:GAUGE:600:0:U \
RRA:AVERAGE:0.5:1:483840 \
RRA:MIN:0.5:1440:1 \
RRA:MAX:0.5:1440:1 \
RRA:MIN:0.5:10080:1 \
RRA:MAX:0.5:10080:1 \
RRA:MIN:0.5:40320:1 \
RRA:MAX:0.5:40320:1 \
RRA:MIN:0.5:483840:1 \
RRA:MAX:0.5:483840:1 |
このように、rrdtool は多数のパラメータを指定して実行する必要があるため、rrdtool コマンドを使いこなすには、深い知識と経験が必要になります。このガイドでは、RRDtool を利用したアプリケーションの 1 つである BGraphs と RRDtool の関係を見ることにより、BGraphs がグラフの描画を行うまでの処理を解説します。rrdtool コマンドの詳細については、RRDtool Web サイトにあるオンラインマニュアル等を参照してください。