RRDtool+Cacti †
説明 †
代表的なサーバ監視ツール MRTG に変わる、より柔軟な描画が出来る RRDtool と、そのフロントエンドして Web ベースで管理を行える Cacti の組み合わせ。
Cacti は高機能で柔軟な設定が行えるため初回導入時には手間が掛かるが、一度導入してしまえば監視対象の増設等にすぐさま対応できる。
入手 †
それぞれの公式サイトより最新版を入手。
RRDtool ダウンロードページ
Cacti ダウンロードページ
必要環境 †
Cacti の必要環境として以下の条件がある。
- RRDTool 1.0.49 or 1.2.x or greater
- MySQL 3.23 or greater, 4.0.20d or greater highly recommended for advanced features
- PHP 4.1 or greater, 4.3.6 or greater highly recommended for advanced features
この他に Apache? 等の Web サーバが稼動している事と Net-SNMP 等の SNMP エージェントが監視対象サーバにインストールされている必要がある。
ここでは一台のホストだけで管理/監視とするものとし、Net-SNMP, Apache?, PHP, MYSQL はすでにインストールされているものとする。
インストール †
最初に RRDtool をインストールし、その後 Cacti のインストールと設定を行う。
RRDtool のインストール †
- 必要なライブラリを揃える
RRDtool が描画する際に様々なライブラリを必要とする。
これらに関しては OS のパッケージ管理システム(ports, apt-get, rpm)を利用してインストールしておく。
・zlib
・libpng-config
・freetype
・libart_lgpl
- 取得したアーカイブを展開しインストールする
$ tar xvzf rrdtool-1.2.12.tar.gz
$ cd rrdtool-1.2.12
$ configure --prefix=/usr/local/rrdtool-1.2.12
$ make
$ sudo make install
- シンボリックリンクを張る
$ sudo ln -s /usr/local/rrdtool-1.2.12 /usr/local/rrdtool
※RRDtool のビルドに失敗する場合
なお、パッケージシステムを利用してインストールしたライブラリが古く、rrdtool のビルドに失敗する場合がある。
その場合は、RRDtool build ページにあるように、各ライブラリを /tmp 以下等の一時ディレクトリ以下にスタティックライブラリの形でインストールし、その後 rrdtool をビルドすると良い。
- RRDtool をビルドするディレクトリを宣言しておく
BUILD_DIR="作業用一時ディレクトリ"
mkdir -p 作業用一時ディレクトリ
- zlib コンパイル
cd $BUILD_DIR
wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/zlib-1.2.2.tar.gz
tar zxf zlib-1.2.2.tar.gz
cd zlib-1.2.2
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install
- libpng-config コンパイル
cd $BUILD_DIR
wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/libpng-1.2.8-config.tar.gz
tar zxvf libpng-1.2.8-config.tar.gz
cd libpng-1.2.8-config
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
zlib に関しては大概 OS にインストールされているので、その場合は CPPFLAGS と LDFLAGS をセットせずにビルドする
- freetype ビルド
cd $BUILD_DIR
wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/freetype-2.1.9.tar.gz
tar zxvf freetype-2.1.9.tar.gz
cd freetype-2.1.9
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
- libart_lgpl ビルド
cd $BUILD_DIR
wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
- ranlib の実行
BSD系(mac os10)は、ranlib コマンドを実行する。GNU/Linux や Solaris は必要なし。
$ ranlib $BUILD_DIR/lb/lib/*.a
- rrdtool のビルドとインストール
インストールしたライブラリへの環境変数をセットしてからビルド〜インストールする
IR=-I$BUILD_DIR/lb/include
CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
LDFLAGS="-L$BUILD_DIR/lb/lib"
CFLAGS=-O3
export CPPFLAGS LDFLAGS CFLAGS
$ ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl
$ make clean
$ make
$ sudo make install
- 一時ディレクトリ(ライブラリ)の掃除
$ rm -fr $BUILD_DIR
Cacti のインストール †
- アーカイブの展開(インストール)
Cacti は PHP スクリプトであるので、展開した先がそのまま設置(インストール)先となる。実際の設置場所は任意の場所で問題無いが、Apache などの Web サーバから参照出来る事が条件になる。
また監視先の SNMP エージェントから取得したデータ(Cacti から呼び出す RDDtool が生成するラウンドロビンデータ)とログを設置先配下のディレクトリに書き込む。
設置場所については以下の3パターンが上げられるが、どのパターンにおいても Web サーバの設定とパーミッションをそれぞれ適切なものにする事。
- Cacti 専用ユーザディレクトリ
専用ユーザを*1 Unix アカウントとして作成し、そのユーザのディレクトリ配下にインストール。
root で Cacti ユーザを作成した後にホームディレクトリにアーカイブを展開。
$ groupadd cacti
# useradd -g cacti -d /dev/null -M -s /sbin/nologin
# tar xvzf cacti-0.8.6h.tar.gz -C /home/cacti
# chown -R Cacti:Cacti /home/Cacti
・Apache の設定
httpd.conf に下記を追加。allow 行でローカルホストからとプライベートネットからのみアクセスを許可。
Alias /cacti/ /home/cacti/
<Directory /usr/share/cacti>
Options None
order deny,allow
deny from all
allow from 127.0.0.1 192.168.0.0/24
</Directory>
- 個人ユーザディレクトリ
レンタルサーバ等を利用している場合、個人ユーザの Web スペース(大概は ~/public_html)配下にインストール。
# tar xvzf cacti-0.8.6h.tar.gz -C ~/public_htmo/cacti
- Web サーバ実行者のディレクトリ
Web サーバプロセス(Apache)の実行者(大概の場合は httpd)用に設定している公開用ディレクトリ配下にインストール。
# tar xvzf cacti-0.8.6h.tar.gz -C /home/httpd/public_html/cacti
# chown -R httpd:httpd /home/httpd/public_html/cacti
※実際にデータが書き込まれるのは、cacti/rrs と cacti/log の2つのディレクトリのみである。設定の仕方によってはもっと凝ったディレクトリ構成&パーミッションにも出来る。
- Cacti 用の DB 作成
MYSQL の DB 上に cacti 専用の DB を作成する。
すでにある DB に追加する場合はこの項目は飛ばしてよい。
$ mysqladmin -u root -p create Cacti
- Cacti DB の初期化
作成した Cacti DB に cacti/cacti.sql をインポートする
$ cd /home/httpd/cacti
$ mysql -u root -p Cacti < ./cacti.sql
- DB の権限設定
localhostからアクセスするユーザ cacti に Cacti DB に対して必要な権限を与える。
$ mysql -p -u root -D mysql -e "GRANT SELECT, INSERT, DELETE, UPDATE, CREATE, ALTER, DROP, INDEX ON Cacti.* TO cacti@localhost IDENTIFIED BY 'パスワード';"
$ mysql -p -u root -D mysql -e "flush privileges;"
- DB アクセス用ファイルの編集
cacti 設定ファイル (cacti/include/config.php) に上記で設定したユーザやパスワードを設定する。
$database_type = "mysql";
$database_default = "Cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "パスワード";
$database_port = "3306";
設定した環境に合わせてそれぞれの値を編集する。
- 設定の確認
作成した DB へ設定した内容に基づきアクセス出来るかどうかを確認する。
$ mysql -u cacti -p Cacti
mysql> SHOW TABLES;
mysql> SELECT * FROM version;
mysql> \q
- 設定ファイルのパーミッション変更
設定ファイル内に平文でパスワードを書く為、他人に読まれないようにパーミッションを変更しておく。*2
$ chmod 600 cacti/include/config.php
- Web サーバに設定を反映させる
インストールパターン1のように新しい Web スペースにインストールした場合は、公開用の設定を加え設定を反映させる。
$ sudo /usr/local/apache/bin/apachectl graceful
Cacti の初期設定 †
これ以降、Cacti の設定はブラウザ上から行う。
- Cacti にアクセス
ブラウザで Cacti インストール URL にアクセスする。
- インストールタイプの設定
"New Install" を選択
- パスの設定
Cacti が使用する各コマンドパスの設定を行う。
[NOT FOUND] と表示されているものを適切に変更した後、"Finish" を押す。
- ログイン
初期パスワード admin, admin を入力後、admin ユーザのパスワードを変更する。
- 基本設定の設定と確認
"console" 画面のメニューの Configuration - Settings をクリックし、画面上部に表示されるタブから各設定の設定と確認を行う。
最初に設定した核コマンドへのパス、使用する SNMP のバージョン、ロギング、基本的な監視設定の他、グラフのエクスポートやユーザ認証方式の設定等を行える。簡単な英語なので目を通し、適切な値を設定する。
サーバ監視の設定 †
関連プログラム †
参考資料 †