Humanity

Edit the world by your favorite way

Cacti 0.8.7g -> 0.8.7i アップグレード

経緯

Cactiは小難しいけど多機能なRRDToolをブラウザから操作できるようにしてくれるフロントエンドツール
もともと監視のために導入したんじゃなくて、
pingの到達率とかをグラフに描いてくれるツールないかなー*1と探してた。
その後で監視にも使えるしついでに監視やろうとか邪道な入り方*2をした。


そんなこんなでCacti入れたものの、これはRRDToolのフロントエンドなのでグラフ描いてくれるだけ。
なのでアラート飛ばすにはPlugin Archtectureというパッチを当てないといけない。
で、patchコマンドで当てると失敗する*3し、めんどくせーと思ってたら
どうやらパッチ済みバージョンが公式サイトから出てるようだ。
ついでなので最新版インストールするか。(今ここ)

手順

ダウンロード

/usr/local/src/ にダウンロードしたtarballとか置いておくとよい(個人的なルール)

# cd /usr/local/src/
# wget http://www.cacti.net/downloads/cacti-0.8.7i-PIA-3.1.tar.gz
Apache停止

一応。

# service apache2 stop
バックアップ

MySQLのバックアップ

# mysqldump -l --add-drop-table cacti -p >mysql.cacti # パスワード入力するとmysql.cactiにバックアップされる

Cactiディレクトリのバックアップ

# cd /usr/share/cacti/
# mv site site-0.8.7g

公式ドキュメントによると
resourceディレクトリとscriptsディレクトリもバックアップ(というか新しいバージョンのcactiディレクトリに移動)
した方がいいらしいけど、自分は特にこのディレクトリいじってないので飛ばした。
scriptsディレクトリはスクリプトを置いておくとcactiから呼べるんだろうか。
resourceディレクトリはわからん。
どっちもバージョンが新しくなってスクリプトがちょこっと修正されてたりしたので
特にコピーしなかった。

インストール

各バージョンごとのディレクトリを/usr/share/cacti/に置いて、
/usr/share/cacti/siteからは使用バージョンのディレクトリにsymlinkを貼る。

新しいバージョンだとバージョンごとのディレクトリの中に
cliディレクトリとかresourceディレクトリがあるけど
古いバージョンだと/usr/share/cacti/の下に置かれてる。
問題なさそうなのでそのままにしておく。

# cd /usr/local/src
# tar xzf cacti-0.8.7i-PIA-3.1.tar.gz
# cd /usr/share/cacti
# mv site site-0.8.7g
# mv /usr/local/src/cacti-0.8.7i-PIA-3.1 site-0.8.7i
# ln -s site-0.8.7i site

まだこれだけでは動かない。
tarballのデフォルト設定だとMySQLのID,パスワードとかがinclude/config.phpに書かれてないので。

設定

Debianでapt-get install cactiした状況だと
/usr/share/cacti/site/にCactiの*.phpファイルが置かれてて、
/etc/apache2/conf.d/cacti.confが/etc/cacti/apache.confのsymlinkだったりする。
そしてそのapache.confにはAlias /cacti /usr/share/cacti/siteとか
/usr/share/cacti/site用のディレクティブが書かれてるのでhttp://hoge/cacti/でアクセスできるようになってる。
図にするとこんな感じ。

/etc/apache2/conf.d/cacti.conf -> /etc/cacti/apache.conf
/etc/cacti/
  + apache.conf # Apache用の設定ファイル
  + debian.php  # MySQLアカウント情報など
/usr/share/cacti/site/include/config.php # require('/etc/cacti/debian.php')

なのでとりあえずやる事としては、
/etc/cacti/debian.phpMySQLのID,パスワードが載せられてるから
これをinclude/config.phpからrequire()する。
以下は変更箇所。

root@cacti:/usr/share/cacti/site# diff -u include/config.php{.bak,}

--- include/config.php.bak      2012-03-10 21:49:06.674566118 +0900
+++ include/config.php  2012-03-10 21:45:31.626903132 +0900
@@ -24,19 +24,20 @@

 /* make sure these values refect your actual database/host/user/password */
 $database_type = "mysql";
-$database_default = "cacti";
-$database_hostname = "localhost";
-$database_username = "cactiuser";
-$database_password = "cactiuser";
-$database_port = "3306";
-$database_ssl = false;
+#$database_default = "cacti";
+#$database_hostname = "localhost";
+#$database_username = "cactiuser";
+#$database_password = "cactiuser";
+#$database_port = "3306";
+#$database_ssl = false;
+require('/etc/cacti/debian.php');

 /*
    Edit this to point to the default URL of your Cacti install
    ex: if your cacti install as at http://serverip/cacti/ this
    would be set to /cacti/
 */
-$url_path = "/";
+$url_path = "/cacti/";

 /* Default session name - Session name must contain alpha characters */
 $cacti_session_name = "Cacti";

上記のように$url_pathも変更する必要がある。
apt-get install cactiしたやつだとhttp://hoge/cacti/でアクセスできるようになってるはずなので。

プラグイン導入

プラグインの導入は次の記事で。

参考URL

ぶっちゃけ加筆しまくってよくわからんくなったので公式ドキュメント見た方が速いよ。
公式ドキュメント

*1:「グラフを描いてくれる」というのが手段でなく目的なあたり完璧な自己満足

*2:ある意味正道かもしれない

*3:今思えばこれはinclude/config.phpを修正しわすれただけのような気がする。PHPとか前のバイトでちょこっと触っただけだったのでPHPアプリの> ↪よくあるディレクトリ構成とか忘れてた