2014年1月28日火曜日

Zabbixを1.8から2.2にアップグレードしたときのメモ

■背景
Zabbixがあまりにも古かったのでアップグレードしました
バージョンは 1.8 から 2.2 にアップグレードしました
残念ながら今回既存のデータは引き継げませんでした
やり方によっては引き継げるようで、1.8 -> 2.0 -> 2.2 という順番でアップグレードすればできるみたいです
既存のデータが引き継げていないので正直新しくインストールしているやり方と全く同じですが、既存のZabbix環境をアップグレードするための方法となります
また、今回新しいバージョンのインストールはyumからでなくソースコードから実施しました

■環境
CentOS 5.10 (64bit)
Zabbix 1.8.15 -> 2.2.1
php 5.3.3
MySQL 5.5.32 (ニフティクラウドRDB)
※古いZabbix、phpは共にyumでインストール

■アップグレード方法
0. 事前準備
service zabbix-server stop
service zabbix-agent stop
  事前にプロセスは停止しておきましょう

1. zabbix-server, zabbix-agent のアップグレード
cd /var/tmp
wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.1/zabbix-2.2.1.tar.gz?r=http%3A%2F%2Fwww.zabbix.com%2Fjp%2Fdownload.php&ts=1390818737&use_mirror=jaist
  ダウンロードできない場合は http://www.zabbix.com/jp/download.php から最新の安定版のパッケージをダウンロードしてください
tar xvzf zabbix-2.2.1.tar.gz
cd zabbix-2.2.1
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
  「--with-hogehoge」という感じで指定すると様々な追加パッケージを同時にインストールすることができるようです
  詳細は「./configure --help」で確認できます、今回は公式ドキュメントにあるMySQLを使ってzabbixを使用するためのオプションで指定しました
  「Now run 'make install'」と出れば configure は完了です
make
make install
zabbix_agentd -V
zabbix_server -V
  「Zabbix server v2.2.1 (revision 40808) (09 December 2013)」と表示されればインストール完了です
  上記バイナリファイルは/usr/local/sbin/配下にインストールされています

2. zabbixのバージョンを切り替える
cd /usr/sbin
  yumでインストールした場合はバイナリファイルは/usr/sbinにあります
mv zabbix_agentd zabbix_agentd_1.8.15
mv zabbix_server_mysql zabbix_server_mysql_1.8.15
mv zabbix_agent zabbix_agent_1.8.15
ln -nfs /usr/local/sbin/zabbix_server zabbix_server
ln -s /usr/local/sbin/zabbix_agent zabbix_agent
ln -s /usr/local/sbin/zabbix_agentd zabbix_agentd

3. 新規DBへの移行
mysqldump -u username -p zabbix -h hostname > zabbix_backup.dmp
  念のため1.8時代の情報はdumpしておきます
mysql -u username -p zabbix -h hostname
mysql> drop database zabbix;
mysql> create database zabbix;
cd /var/tmp
cd zabbix-2.2.1/database/mysql
mysql -u username -p zabbix -h hostname < schema.sql
mysql -u username -p zabbix -h hostname < images.sql
mysql -u username -p zabbix -h hostname < data.sql
  順番は schema.sql -> images.sql -> data.sql の順番でやる必要があります(外部キー制約の関係上)
  data.sqlでデフォルトテンプレートやデフォルトユーザをINSERTします

4. UI更新
cd /usr/share
  yumでインストールした場合のUIは/usr/share/zabbixにあります
mv zabbix zabbix_1.8.15
  既存のUIのソースは念のためバックアップしておきます
cd /var/tmp
cd zabbix-2.2.1/frontends/
cp -r php/ /usr/share/zabbix_2.2.1
cd /usr/share
ln -s zabbix_2.2.1/ zabbix

5. 各種起動
service zabbix-server start
service zabbix-agentd start
service httpd start
tailf /var/log/zabbix/zabbix_server.log
  念のためログを確認してエラーが出ていないことを確認します

6. WebUIでセットアップ
http://hostname/zabbix/setup.php にアクセスしてzabbixのセットアップを実施します

セットアップの最後で zabbix.conf.php を /usr/share/zabbix_2.2.1/conf/zabbix.conf.php に作成しようとします
うまく作成できない場合はフォルダの権限を変更してみてください(権限はzabbix:zabbixでやってください)
それでもダメな場合は「Download configuration file」から手動でダウンロードしサーバに配置してください
配置後に「retry」するとOKになると思います

残念ながら既存環境の移行はできませんでしたが、同一サーバ上での zabbix のアップグレードは行えたのでよしとしましょう

■参考サイト

■Tips
makeするための環境等もともと整っている環境で実施したのでその辺のインストール手順は省略しています

ユーザやグループの追加も既存のzabbix:zabbixを使用しています

2.2.1からDBの自動マイグレート機能がついており、それにより既存のデータを簡単に引き継げるようになったのですが、1.8から2.2で自動マイグレート機能を使用しようとすると起動時に「Cannot upgrade database: the database must correspond to version 2.0 or later. Exiting ...」というエラーが出てマイグレートできません
冒頭にも記載しましたが、2.2.1のDB自動マイグレート機能を使用したい場合は一度 1.8 -> 2.0 のアップグレードを実施したあとで 2.0 -> 2.2 のアップグレードも実施する必要があります

WebUIで「Database error: Error connecting to database [Too many connections]」が表示される場合はMySQLの max_connections の値を30以上にしてみてください
どうやらzabbixのWebUIからは毎回30弱のDBコネクションを張るようなのでそれ以下の設定だと上記エラーが出るようです

0 件のコメント:

コメントを投稿