Cacti 0.8.7i の導入

CactiはRRDToolを使用してWeb上でグラフを作成や管理を行うことが出来るツールで、MRTGなどの他のグラフツールと同様に基本的には数値化できるものであれば何でもグラフ化できるものです。
グラフツールはコマンドライン上から行うとオプション設定がとても面倒だったりするのですが、このCactiを使えばレイアウトなどを初め煩雑な設定もかなり楽に行えるのでとても重宝するのではないかと思います。
ここではCactiのインストールについて困った点などを含めて記載しています。

作成日:2012.02.12
更新日:2012.04.05
前提条件
これを行ったときの構成になります。
■環境
  ・FreeBSD 7.x
  ・RRDTool 1.4.5
  ・NET-SNMP 5.7.4
  ・MySQL 5.1.54
  ・Apache 2.2.17
  ・PHP 5.3.8(+mysqlプラグイン)
  ・Cacti 0.8.7i(PHPスクリプト)
■データベースに関する設定値
  ・データベース名:cacti(※デフォルト)
  ・ユーザー名:cactiuser(※デフォルト)
  ・パスワード:cactiuser(※デフォルト)
■Cactiに関する設定値
  ・CactiのURL:http://test.lipwood.com/cacti/
  ・Cactiの保存先:/usr/local/www/apache22/cacti
※Apache、PHPおよびMySQLのインストールを含む基本的な設定についてはここでは省略しています。
ページのトップへ

インストール
まず、Cacti本体を本家からダウンロードします。ここでは現時点での最新バージョンとなっている"cacti-0.8.7i.tar.gz"をダウンロードしてきます。
ダウンロードしたらそれを解凍した後にブラウザから閲覧出来るディレクトリへコピーします。
もし、FTPなどを使わずにサーバ上で全てやってしまおうと思っている場合は以下のようになります。
(色分け:入力値コマンドラインコメント)
■ファイルの取得
# cd /tmp
# wget http://www.cacti.net/downloads/cacti-0.8.7i.tar.gz
--2012-02-10 17:39:14--  http://www.cacti.net/downloads/cacti-0.8.7i.tar.gz
Resolving www.cacti.net (www.cacti.net)... 209.242.232.5, 173.225.179.10, 140.211.167.231
Connecting to www.cacti.net (www.cacti.net)|209.242.232.5|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2250128 (2.1M) [application/x-gzip]
Saving to: `cacti-0.8.7i.tar.gz'

100%[==================================================>] 2,250,128    317K/s   in 7.9s    

2012-02-10 17:39:22 (277 KB/s) - `cacti-0.8.7i.tar.gz' saved [2250128/2250128]

■圧縮ファイルの解凍と公開先へ移動
# tar -xzf cacti-0.8.7i.tar.gz
# mv ./cacti-0.8.7i /usr/local/www/apache22/cacti

次にCactiで使用するデータベースとそれを使用するユーザーを作成して、そのデータベースにCactiで使用するために必要なテーブルを作成します。
作成するテーブルはCactiをコピーしていたディレクトリ内に「cacti.sql」というファイル名で用意されているのでこれを適用します。
(色分け:入力値コマンドラインコメント)
■mysqlサーバへ接続
# mysql -u root -p
Enter password: パスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 61
Server version: 5.1.54-log FreeBSD port: mysql-server-5.1.54_1

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

■ユーザーの作成(デフォルトの場合)
mysql> GRANT ALL PRIVILEGES ON cacti.* to cactiuser@localhost identified by 'cactiuser';
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

■データベースの作成(デフォルトの場合)
mysql> CREATE DATABASE cacti;
Query OK, 1 row affected (0.00 sec)

mysql> \q
Bye

■テーブルの作成
# cd /usr/local/www/apache22/cacti
# mysql -u cactiuser -p -D cacti < ./cacti.sql
Enter password: パスワードを入力
それが終わったらファイルとディレクトリのパーミッションを変更しますが、Cactiではcronを使用してデータの更新を行うため、そこで指定したユーザーがファイルの作成や更新が行えるようにするためです。
したがって、実行するユーザーがrootだったり専用のユーザーを作って所有者をそれにするといった場合には必要ない作業になります。
(色分け:入力値コマンドラインコメント)
# cd /usr/local/www/apache22/cacti

■ログを保存するディレクトリとファイルのパーミッションの変更
# chmod 777 log
# chmod 777 log/cacti.log

■RRDファイルを保存するためのディレクトリのパーミッションを変更
# chmod 777 rra
ここでインストールに関する作業は終了です。
ページのトップへ

設定
Cactiで使用するデータベースおよびテーブルの作業が終わったら今度はCactiの設定を行います。
まず、データベースに接続するための設定を「include/config.php」で行いますが、デフォルトのままであれば特にこの作業は必要ありません。もし、デフォルトとは違う場合は該当箇所を編集します。
"include/config.php"
(色分け:書換追記コメント)
25:/* make sure these values refect your actual database/host/user/password */
26:$database_type = "mysql"; ← 接続タイプ(基本的にはそのまま)
27:$database_default = "cacti"; ← データベース
28:$database_hostname = "localhost"; ← 接続先(基本的にはそのまま)
29:$database_username = "cactiuser"; ← ユーザー名
30:$database_password = "cactiuser"; ← パスワード
31:$database_port = "3306"; ← MySQLのポート(基本的にはそのまま)
32:$database_ssl = false; ← SSL接続の有無(基本的にはそのまま)
ここまで終わればあとはブラウザ上で行う作業になります。

ブラウザから「http://test.lipwood.com/cacti/」へアクセスすると「http://test.lipwood.com/cacti/install/」へ転送されて以下のような画面が表示されると思います。
ここではインストールやライセンスに関することが書かれていますが、特に作業することは無いので画像内で示しているとおり「NEXT」をクリックして次へ進みます。

ここではインストール方法と「include/config.php」で設定されている値が表示されます。
今回は新規なのでこのまま画像内で示しているとおり「NEXT」をクリックして次へ進みます。

ここでは各プログラムのパスやCactiで使用するログファイルの設定などを行います。
基本的に問題が無ければ各パスの入力欄の下には[OK:FILE FOUND]と表示されると思いますが、もし[ERROR: FILE NOT FOUND]となっていたら確認する必要があります。
問題が無ければ「FINISH」をクリックして終了になります。

ページのトップへ

動作確認
「FINISH」をクリックした後は、以下のようなログイン画面が表示されますので「ユーザ名:admin、パスワード:admin」でログインします。
初回ログイン時は安全のためパスワードの変更を即すメッセージなりますので新しいパスワードを入力します。

ログイン後は以下のような画面になりますので、後はここからグラフの作成や閲覧を行います。

尚、初期の状態で予めいくつかサンプルが設定されていますが、データを記録しているRRDファイルが無いためこの時点ではグラフは表示されません。
Cactiではデータ収集用に「poller.php」と言うスクリプトが用意されているので、まずはこれをコマンドラインから実行してRRDファイルを作成します。
ちなみに、RRDファイルは「rra」ディレクトリ以下に作成されますのでそれがあればグラフ表示ができるようになっていると思います。
(色分け:入力値コマンドラインコメント)
■まずは問題がないかコマンドラインから実行してみる

# php /usr/local/www/apache22/cacti/poller.phpcat: /proc/meminfo: No such file or directory
cat: /proc/meminfo: No such file or directory
OK u:0.01 s:0.00 r:0.14
OK u:0.01 s:0.00 r:0.14
OK u:0.01 s:0.00 r:0.15
OK u:0.01 s:0.00 r:0.15
OK u:0.01 s:0.00 r:0.17
OK u:0.01 s:0.00 r:0.17
OK u:0.01 s:0.00 r:0.18
OK u:0.01 s:0.00 r:0.18
OK u:0.02 s:0.00 r:0.20
OK u:0.02 s:0.00 r:0.20
02/11/2012 01:34:38 AM - SYSTEM STATS: Time:0.3134 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
※FreeBSDでは/proc/meminfoは無いのでエラーとなっています。
 また、poller.phpは予め設定された時間間隔で行うので連続で実行してもデータの更新はされません。
■RRDファイルが作られているか確認
# ls /usr/local/www/apache22/cacti/rra
.htaccess                       localhost_mem_buffers_3.rrd     localhost_mem_swap_4.rrd        localhost_proc_7.rrd
localhost_load_1min_5.rrd       localhost_mem_buffers_8.rrd     localhost_mem_swap_9.rrd        localhost_users_6.rrd

特に問題なければ最後にcronに登録します。
(色分け:入力値コマンドラインコメント)
■cronへ5分間隔で実行するように追加
# ee /etc/crontab

※ファイルの最後に↓これを追加
*/5 * * * * root /usr/local/bin/php /usr/local/www/apache22/cacti/poller.php > /dev/null 2>&1


ページのトップへ

補足&メモ
Cactiではデータ収集用にCronを使うので場合によってはCacti専用のユーザーを作った方が良いかも知れません。その場合はパーミッションと所有者の設定を適切に変更してください。
あと、日本語を使用する場合はCactiはUTF-8になっているためデータベースの文字コードもそれに合わしておかないと文字化けが起こるかもしれません。
また、Cactiの次期バージョンでは言語パックによる多言語化に対応するみたいなので日本語表示による使い勝手の向上がかなり見込めるのではないかと思います。
ページのトップへ

参考にしたサイト