ZABBIXを1.8から2.0にアップデートする


 5 月に ZABBIX がメジャーバージョンアップして 2.0 がリリースされていたが、7 月にリリースされた 2.0.1 が Gentoo Linux でも Portage ツリーに追加されたのでインストールしてみた。

 これまでは Web インターフェイスについては手動インストールしていたが、外部監視用のさくら VPS には Gentoo Linux で使われている webapp-config を使ってインストールしたこともあって、LAN 内の ZABBIX についても webapp-config でアップデートすることにした。

 まず、ZABBIX を更新する。

emerge -uDN zabbix

 更新が完了したら、ZABBIX サーバ・エージェント共にシャットダウンし、DB をバックアップする。マイナーアップデートに追随してきた場合は 2.0 にアップグレードする際のスキーマ更新で結構失敗する可能性があるので、ここでバックアップは取っておいたほうがよさそう。

/etc/init.d/zabbix-agentd stop
/etc/init.d/zabbix-server stop
mysqldump -u root -p[root password] zabbix | xz -9 > /var/tmp/zabbix.dump.xz

 次にスキーマを更新する。

sh upgrade zabbix -p[root password]

 もう 3 〜 4 年ほど連続稼働している自宅環境とさくらの VPS に最近インストールした環境で試したところ、自宅環境では以下のエラーが表示された。

# sh upgrade zabbix -p[root password]
 WARNING: backup your database before performing upgrade

 This is an UNSUPPORTED Zabbix upgrade script from 1.8 to 2.0 for MySQL
 It does the following things:
  1. Updates indexes that might require changes;
  2. Patches the database from 1.8 schema to 2.0 schema;
  3. Adds 'Disabled' and 'Debug' usergroup if any missing;
  4. Checks for hosts not belonging to any group and adds them to one if any found.

 Usage: pass required MySQL parameters to this script (like database, user, password etc).

Continue ? (y/n) y
Patching the database
ERROR 1452 (23000) at line 104: Cannot add or update a child row: a foreign key constraint fails (`zabbix`.<result 2 when explaining filename '#sql-4076_3240'>, CONSTRAINT `c_config_2` FOREIGN KEY (`discovery_groupid`) REFERENCES `groups` (`groupid`))
Failed to patch Zabbix database. Restore from backup

 ZABBIX フォーラムにも上がっている問題だが、とりあえず --force で強制的に処理を継続させれば問題なく動作するらしい。

sh upgrade zabbix -p[root password] --force

 何ら解決にはなっていないが、確かにこれで問題なく動作している。

 この後、必要に応じて /etc/zabbix/zabbix-server.conf などを修正する。うちの環境の場合は ServerPort を指定していたのでエラーとなったが、デフォルト値でも問題ないのでコメントアウトし、ZABBIX サーバとエージェントを起動する。

/etc/init.d/zabbix-agentd start
/etc/init.d/zabbix-server start

 最後に WebUI 部分を更新する。今回は更新ではなく初期インストールとなるので、1.8 時代のファイルをバップアップしてから

webapp-config -U -h zabbix.domain.jp -s apache zabbix 2.0.1

 自宅環境は Apache で動作しているが、さくらの VPS は nginx なので、-s オプションの引数を nginx にすればよい。更新後、ブラウザからアクセスしてみてひと通りアクセスできればok。

ZABBIX 2.0 WebUI
ZABBIX 2.0 WebUI

 いくつか試してみたが、個人的には、1.8 で安定して監視を行えているのなら敢えて 2.0 に上げる必要ないと思う。