Webインタフェースでマシンを監視する4つの方法 2ページ

collectd

 collectdプロジェクトの目的は、システムの情報を定期的に収集することにある。tarballにはこうした情報を解析するためのWebインタフェースが含まれているが、同プロジェクトはこのインタフェースを最低限の機能しか持たないサンプルと位置づけており、collectdで集めた情報を処理するWebインタフェースを探している人のためにCactiのようなほかのプロジェクトを紹介している。

 collectdには、Debian EtchとFedora 9の各パッケージのほか、openSUSEの1-Clickインストール用パッケージが用意されている。C言語で書かれ、デーモンとして動作するcollectdは、アプリケーションとしてのオーバヘッドが小さく、高頻度のロギングを行ってもシステムに大きな負荷がかからない。

 collectdパッケージのインストール時には、プラグインパッケージもチェックしておくとよい。collectdの大きな強みとして、データベース、UPS、システムパラメータ全般、NFSのような各種サーバのパフォーマンスなど、さまざまなシステム情報の監視機能が各種プラグインによってサポートされる点が挙げられる。一方で、こうしたプラグインの存在にパッケージャは手を焼いている。openSUSEの場合はplugins-allパッケージさえインストールすればよいが、Fedora 9ではパッケージ化されているバージョン(4.4.x)が古すぎてPostgreSQL用プラグインが含まれていない。さらに、Network UPS Tools(NUT)プラグインは、Debian、openSUSE、Fedoraのどのパッケージにも収録されていない。

 今のところ、こうした問題に対する最も単純な解決策は、ソースからcollectdをビルドし、必要なプラグインについて設定を行うことだ。この記事を書いている段階でパッケージングされていないプラグインのうち、必要になりそうなものとして、NUT、netlink、postgresql、iptablesがある。collectdのインストールは、例によって「./configure; make; sudo make install」で行う。ただし、コンパイル対象のプラグインを指定する場合は、configureの部分がもっと長くなる。以下に、インストールの手順と私が選択したプラグインをコマンド列として示しておく。ここでは、contribディレクトリのinit.d起動ファイルを使っているほか、個人用のprefixによって一部のパスを変更して、collectdのインストール先を1つのディレクトリツリーに収めている。また、Fedora 9のlibnetlinkライブラリを取得するために、iproute2のコピーも作成している。

$ cd ./collectd-4.5.1
$ ./configure --prefix=/usr/local/collectd \
  --with-perl-bindings=INSTALLDIRS=vendor \
  --without-libiptc --disable-ascent --disable-static \
   --enable-postgresql --enable-mysql --enable-sensors \
   --enable-email --enable-apache --enable-perl \
   --enable-unixsock --enable-ipmi --enable-cpu --enable-nut \
   --enable-xmms --enable-notify_email  --enable-notify_desktop \
   --disable-ipmi --with-libnetlink=/usr/local/collectd/iproute2-2.6.26
$ make
...
$ sudo make install

$ su
# install -m 700 contrib/fedora/init.d-collectd /etc/init.d/collectd
# vi /etc/init.d/collectd
...
CONFIG=/usr/local/collectd/etc/collectd.conf
...
   daemon /usr/local/collectd/sbin/collectd -C "$CONFIG"
# chkconfig collectd on

 今後、オプションのcollectdプラグインのパッケージ化が進めば、わざわざソースからビルドしなくても好みのビルドをインストールできるようになるだろう。

 collectdを起動する前に、「etc/collectd.conf」を参照して、有効になっているプラグインとそれらのオプションの設定に問題がないことを確認しておこう。この設定ファイルでは、いくつかのグローバルオプションの定義のあとに、collectdで使用するプラグインを指定する「LoadPlugin」行が続き、各プラグインの設定は<Plugin foo>...</Plugin>の部分に記述されている。また、rrdtoolプラグインが有効になっているか、各種データの保存先となる既存のディレクトリがDataDirパラメータに設定されているかもチェックする。

 有効なプラグインとそれらのオプションの設定を確認したら、rootで「service collectd status」と実行してcollectdを起動する。

 collectdによる収集データを参照するには、付属のWebインタフェースか、Cactiのような別のプログラムをインストールする必要がある。collectdに付属する簡単なCGIスクリプトをインストールする手順と、このスクリプトを動作させたときのスクリーンショットを以下に示す。

# yum install rrdtool-perl
# cp contrib/collection.conf  /etc/
# vi /etc/collection.conf
datadir: "/var/lib/collectd/rrd/"
libdir: "/usr/local/collectd/lib/collectd/"
# cp collection.cgi /var/www/cgi-bin/
# chgrp apache /var/www/cgi-bin/collection.cgi

collectd1_thumb.png
collectd

 collectdのデータをKDEデスクトップ上に表示したい場合は、kcollectdの利用を検討するとよい。誕生して間もないプロジェクトだが、すでに有用性が認められている。また、生成されたRRDtoolファイルはCactiでも利用できる。ただし、非常に長々とした設定をグラフ別に行う必要がある。

 collectdの主眼はあくまでシステム監視の機能にあり、付属のWebインタフェースは人寄せのためのサンプルでしかない。また、C言語で書かれたデーモンなので、システム側のオーバヘッドを最小限に抑えて実行することができる。

次はCacti