Cacti 0.8.7i から 0.8.8 へアップグレード

Cactiのバグ修正が行われたバージョンである0.8.8がリリースされたので、既存の0.8.7iからアップグレードしてみた時のメモです。

ちなみに0.8.8のChangelogの内容。
【0.8.8のChengelog】
・バグ#0002056:ホストのステータスで使用されるDateTimeクラスが初期化されていなかった(Zero length string != NULL)。
・バグ#0002081:グラフの管理でパターン記号として "/"を使用する場合、検索の表示グラフのタイトルが壊れてしまう。
・バグ#0002132:0.8.7iと将来のリリースでpa.sqlの内容をインクルードする必要がある。
・バグ#0002134:rebuild_poller_cache.phpにpoller_itemテーブルを完全に削除するための--host-idオプションを追加。
・バグ#0002141:cacti.sql内のpoller_outputに対するBTREE PRIMARY KEYが欠けていた。
・バグ#0002146:「Utilities」 -> 「View Lof File」のページでリフレッシュがうまく動作しなかった。
・バグ#0002150:usort_data_query_index()が壊れている問題の修正 -> ホストに対するグラフの並び替えでデータクエリの並び替えオプションが失敗する。
・バグ#0002151:HTMLのフォームを構築する際に'sub_checkbox'の'on_change'パラメータが使用されていなかった。
・バグ#0002152:graphs_new.phpのフィルタに関する問題。
・バグ#0002153:スラッシュを含むパターンの検索ができない。
・バグ#0002156:rrdtoolのコマンドに渡される前に、CDEF文字列がエスケープされない。
・バグ#0002158:表示されるメッセージの文法を一部変更
・バグ#0002165:データソース名でのデータ入力フィールドを使用する(0.8.7iで2079と関連する)
・バグ#0002167:新しいPollerフック「poller_finishing」の追加
・バグ#0002172:structure_rra_paths.phpで無効なデータソースを処理できない。
・バグ#0002174:poller_itemテーブルのhost_idカラムの種別が間違っている
・バグ#0002178:include/global_form.php内のタイプミス: Mimimum -> Minimum
・バグ#0002181:session_unregister関数(functions.php内で使用)は、PHP 5.4では使用できません。
・バグ#0002182:適当な(一意の)インデックスが存在しない場合、ホストのリーフ上でデータクエリからのグラフが表示されない。
・バグ#0002189:適切なグラフのフック。
・バグ#0002191:リフレッシュに関する問題。
・バグ#0002194:データクエリのXMLを変更しても、既存のデータソースに反映されない。
・バグ:cli/api_device.phpの入力値の検証に関する修正。
・バグ:誤ったRRAの情報を挿入するデータソースのテンプレートを関連付けるコマンドラインスクリプトを使用した問題の修正。
・バグ:データソースのページにマイナーな表示の問題を修正。
・バグ:poller_outputテーブル内のカウント項目とマイナー問題を修正。
・バグ:グラフ設定でチェックボックスのチェックを外すことが出来ない。
・バグ:非セッションによって引き起こされるプラグインのライブラリを使用してのマイナーな問題を修正。
・バグ:非テンプレートグラフの保存データの入力にSQLエラーがあったのを修正。
・バグ:パフォーマンスを向上させるためにuser_logインデックスを追加。
・機能:前バージョンまで別で提供されていたプラグインアーキテクテャが今回より統合されています。
・機能:パフォーマンスの向上のために "data_template_data 'テーブルにインデックスが追加されています。


作成日:2012.04.08
更新日:2012.04.15
--------------------------------------------------
2012.04.15 - ・Changelogのバグに関する内容を追記。
--------------------------------------------------
前提条件
これを行ったときの構成になります。
■環境
  ・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のデータベースに関する設定値
  ・データベース名:cacti(※デフォルト)
  ・ユーザー名:cactiuser(※デフォルト)
  ・パスワード:cactiuser(※デフォルト)
■Cactiに関する設定値
  ・CactiのURL:http://test.lipwood.com/cacti/
  ・Cactiの保存先:/usr/local/www/apache22/cacti
※Apache、PHPおよびMySQLのインストールを含む基本的な設定についてはここでは省略しています。
ページのトップへ

前準備とインストール
まず、poller.phpをcronで実行していると思いますのでそれを停止しておきます。
(色分け:入力値コマンドラインコメント)
■cron登録しているpoller.phpを停止する
# ee /etc/crontab

※こんな感じで登録している行をコメントアウト
#*/5 * * * * root /usr/local/bin/php /usr/local/www/apache22/cacti/poller.php > /dev/null 2>&1


■設定を反映するためにcronを再起動
# kill -HUP `cat /var/run/cron.pid`

それから、アップグレードの場合は既に使用しているデータベースを更新するので、失敗したときのためにバックアップを取っておきます。
(色分け:入力値コマンドラインコメント)
■データベースのバックアップ
# mysqldump -uroot -p(__password__) -r cacti087i.sql -l cacti


■データベースを複製してバックアップする場合
# mysqldump -uroot -p(__password__) -r cacti087i.sql -l cacti
# mysql -uroot -p(__password__) -e "CREATE DATABASE cacti087i"
# mysql -uroot -p(__password__) cacti087i < cacti087i.sql
※バックアップ用のデータベースをcacti087iとしています。


ここまで終わったら、あとは本家から"cacti-0.8.8.tar.gz"をダウンロードしてそれをCactiを置いているディレクトリへコピーします。
コマンドライン上で行う場合は以下のようになります。
(色分け:入力値コマンドラインコメント)
■ファイルの取得
# cd /tmp
# wget http://www.cacti.net/downloads/cacti-0.8.8.tar.gz
--2012-04-05 19:45:32--  http://www.cacti.net/downloads/cacti-0.8.8.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: 2272001 (2.2M) [application/x-gzip]
Saving to: `cacti-0.8.8.tar.gz'

100%[==================================================>] 2,272,001   37.9K/s   in 74s     

2012-04-05 19:46:46 (30.1 KB/s) - `cacti-0.8.8.tar.gz' saved [2272001/2272001]

■圧縮ファイルの解凍とディレクトリの上書き
# tar -xzf cacti-0.8.8.tar.gz
# cp -pR /usr/local/www/apache22/cacti /usr/local/www/apache22/cacti.087i
# cp ./cacti-0.8.8/* /usr/local/www/apache22/cacti/*
※一応、念のため旧バージョンのディレクトリをコピーしています。
ここで基本的な作業は終了です。
ページのトップへ

設定
次はCactiの設定を行いますが、PIA版を使ってる場合は0.8.7iの設定ファイルがそのまま使用できますので旧のバージョンから上書きすると良いと思います。
PIA版でないバージョンでも使えることには使えますが設定項目が増えているので設定しておいた方が良いと思います。
"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接続の有無(基本的にはそのまま)
33:

↓「$url_path」変数が追加されています。

34:/*
35:   Edit this to point to the default URL of your Cacti install
36:   ex: if your cacti install as at http://serverip/cacti/ this
37:   would be set to /cacti/
38:*/
39:$url_path = "/cacti/"; ← CactiがあるルートからのURLのパス
40:
41:/* Default session name - Session name must contain alpha characters */
42://$cacti_session_name = "Cacti"; ← セッション名


ここまで終わればあとはブラウザ上で行う作業になります。

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

ここではインストール方法と「include/config.php」で設定されている値が表示されます。
今回はアップグレードなので画像のとおり「Upgrade from cacti 0.8.x」となっていると思いますので「NEXT」をクリックして次へ進みます。

ここでは更新したデータベースの結果が表示されます。
すべて[Success]となっていれば正常に作業が完了しているので「NEXT」をクリックして次へ進みます。

ここでは各プログラムのパスやCactiで使用するログファイルの設定などを行います。
アップグレードの場合、もともと環境は整っているので特に問題はないと思いますが、もし[ERROR: FILE NOT FOUND]となっていたら確認する必要があります。
問題が無ければ「FINISH」をクリックして終了になります。

ページのトップへ

動作確認
「FINISH」をクリックした後は、以下のようなログイン画面が表示されますのでログインして正常に動作するか確認して終了です。
ページのトップへ

補足&メモ
今回は一つ前のバージョンからアップグレードを行ったので特に問題はありませんでしたが、あまり古いバージョンからだと色々と問題が発生するかもしれませんのでくれぐれもデータベースのバックアップは取ってから行った方が良いです。
私は以前、データベースのバックアップをせずに0.8.6hぐらいから0.8.7iへ大幅なアップグレードを行ったときにエラーが発生して大変な目に遭いました。
また、個人的には今回のバージョンで上部右側にある「グラフ設定」でチェックボックスのパラメータをオンにした後にオフにできない問題が改善されていて助かりました(ずっと、どこかの設定が悪いのかと思っていたのでバグだったというのが分かってホッとしました)
ページのトップへ

参考にしたサイト
ページのトップへ