cactiのインストール

以前に挫折してそのまま放置していたcactiに再チャレンジ。

cactiを動作させるために必要なソフトウェアは以下のもの。

今回cactiをインストールした機器は、いつものようにSolarisじゃなくてFedraCoreの古いディストリビューションです。Solarisだと、このほかにもzlibやらlibpngやらがPHPから参照されるライブラリとして必要かもしれません。

各ソフトウェアのバージョンにはさほど気を使う必要はないようです。今回は各ソフトウェアの最新バージョンを使いました。

MySQL

まず最初にMySQLをインストールします。
MySQLのダウンロードページから適当な「もの」をダウンロード。昔読んだドキュメントにはパッケージに入っているMySQLは速度や効率など最適化してコンパイル、リンクしているからそっちをインストールしてねって書いてあったような気がします。まぁ、そのあたりは好みだと思います。今回はソースからビルドしました。
最新は5.0.41ですね。今回インストールしたLinux機にはすでにmysqlユーザ、mysqlグループが存在していましたが、それらがない場合は作成してあげる必要があります。

$ tar -zxvf mysql-5.0.41.tar.gz
$ cd mysql-5.0.41
$ ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql
$ make
# make install

初期設定のためにmysql_install_dbを実行します。こいつを実行すると/usr/local/mysql以下にデータやログをためるディレクトリができるので、そのあたりのパーミションも適切に設定します。

# /usr/local/mysql/bin/mysql_install_db
# chown -R root /usr/local/mysql
# chown -R mysql /usr/local/mysql/var
# chgrp -R mysql /usr/local/mysql

MySQLを起動します。

# /usr/local/mysql/bin/mysqld_safe --user=mysql &

MySQLのrootユーザパスワードを変更します。

# /usr/local/mysql/bin/mysqladmin -u root password '変更するパスワード'

このあたりかなり適当に書いています。エラーなど出たらMySQLの参考書を参照してください。

Apacheのインストール

cactiはウェブインタフェイスで各種設定を行うのでウェブサーバが必要です。ウェブサーバとしてApacheをインストールします。

ソースはapacheのページからダウンロード。最新は2.2.4ですね。

$ tar -zxvf httpd-2.2.4.tar.gz
$ cd httpd-2.2.3
$ ./configure --enable-modules=all --enable-mods-shared=all
$ make
# make install

PHPのインストール

続けてPHPをインストールします。多分デフォルトですでに入っていると思いますが、念のため最新をインストール。
ソースはここから入手できます。最新は5.2.2ですね。

$ tar -zvf php-5.2.2.tar.gz
$ cd php-5.2.2
$ ./configure  --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-gd --with-png-dir --enable-mbstring --with-jpeg-dir=/usr --with-zlib-dir=/usr --without-pgsql
$ make
# make install

MySQL,jpeg,zlibなどのインストールディレクトリは自環境に合わせて適当に変えてください。

httpd.confを編集

httpd.confを編集してApacheからPHPが見えるようにします。以下の三行を追加します。場所はどこでもかまわないのですが、似たようなディレクティブがあるところに置いたほうが見栄えがいいでしょう。

LoadModule php5_module        modules/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

それとDirectoryIndexにindex.phpを追加。

DirectoryIndex index.html index.html.var index.php

編集したらapacheを起動。すでに起動していたら再起動。

# /usr/local/apache2/bin/apchectl restart


PHPapacheからみえるかどうか試験します。htdocs以下の適当なディレクトリにこんな内容のファイルをおいて、ブラウザから参照します。

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

// Show just the module information.
// phpinfo(8) yields identical results.
phpinfo(INFO_MODULES);

?>

ブラウザで参照してphpの情報や、モジュールの情報が表示されれば問題なしです。

RRDToolのインストール

RRDToolをインストールします。ここからダウンロードできます。最新版は1.2.23。

$ tar -zxvf rrdtool-1.2.23.tar.gz  
$ cd rrdtool-1.2.23
$ ./configure 
$ make 
# make install

cactiインストール

cactiをインストールします。インストールといっても、展開した物件をapacheのhtdocs以下にコピーするだけ。cactihttpd://www.cacti.netからダウンロードできます。最新は0.8.6jです。

$ tar -zxvf cacti-*.bz2
# cp -pr cacti-0.8.6j /usr/local/apache2/htdocs
# mv /usr/local/apache2/htdocs/cacti-0.8.6j /usr/local/apache2/htdocs/cacti

cactiが使うMySQLテーブルを作成

cactiが収集する情報はMySQLテーブルにストアされるようです。この入れ物を作成します。

# cd /usr/local/apache2/htdocs/cacti
# /usr/local/mysql/bin/mysqladmin -u root -p create cacti
# /usr/local/mysql/bin/mysql -u root -p < cacti.sql cacti
# /usr/local/mysql/bin/mysqladmin -u root -p reload

cactiMySQLを使う際に使用する"cactiuser"を作成します。

# mysql -u root -p
Enter password:(パスワードを入力)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 500
Server version: 5.0.41-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use cacti ;
Database changed
mysql> grant all on cacti.* to cactiuser@localhost identified by 'パスワード' ;
Query OK, 0 rows affected (0.00 sec)

ここで設定するcactiuserのパスワードはこの後でてくる各種設定ファイルで"cactiuser"になっています。F/Wなどで内部から特定の人だけが操作する場合は、cactiuserにしておくと後が多少ラクチンです。

cactiの設定ファイル編集

cacti設定ファイルを編集します。編集するファイルは/usr/local/apache2/htdocs/cacti/include/config.php。このファイルの33行目あたりに上記で設定したMySQLでのcactiuserのパスワードが設定されているので、適当に編集します。

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser"; ←ここを編集する。
$database_port = "3306";

cronの設定

監視対象デバイスの情報を定期的に取得するために、cronを設定します。5分ごとにデータを取得するにはこんな感じ。

*/5 * * * * su - cactiuser -c "/usr/local/bin/php /usr/local/apache2/htdocs/cacti/poller.php" > /dev/null 2>&1

以上でインストールは終了。グラフを書くための設定とか、いくつかトラブルシューティングについても追々書きます。