Zabbix 2.0→2.2にソースからバージョンアップした結果

Zabbix 2.0→2.2にソースからバージョンアップした結果 はてなブックマーク - Zabbix 2.0→2.2にソースからバージョンアップした結果


気持ち監視サーバの負荷が減ったような・・・。
むしろ、Trigger や Event で都度リロードしないのが大きいかな。

■経緯と概要

Zabbix 社が11月12日に公開した Zabbix 2.2 。バージョンアップを試みるものの、配付されているバイナリパッケージは RHEL6 ・Debian 7・Ubuntu 12.04 TLS のみ。

私の環境は、RHEL5 なので、ソースからバージョンアップを試みる事に。「ふぇぇ・・・RHEL5のパッケージがないよぉ・・・」と思っていたけど、なんとかなりました。

手順は、Zabbix 2.0 とほぼ同じ。MySQL のデータベース更新も自動的に行ってくれたので、作業が楽でした。

入れてみた結果は、MySQL のクエリが明らかに現象減少した模様。監視サーバ3台、監視アイテム50個ぐらいの弱小環境でも効果は明か。ただし、housekeper を切っている(2.2デフォルトの挙動)状況なので、もう少し環境を変えてテストしてみたい所。来月には本番で使えるかな?

以下、自分の作業用φ(..)メモメモです。

■バージョンアップ方針

RHEL5 ではパッケージが提供されていないとはいえ、普通にソースからのセットアップには何ら影響が無いはず。RHEL5 をソースから入れた環境があったので、そこをバージョンアップする。ただし、上書きは行わず、何かあったら戻せるように MySQL のバックアップを行っておく。また、セットアップ先も /usr ではなく、/opt/zabbix をセットアップ先に明示する。

作業にあたっては、Zabbix 2.2 向けのドキュメント ( Upgrade notes for 2.2.0 ) で変更点を気にしつつ、アップグレード手順 ( Upgrade procedure ) に則り進める。入れ替え時の手順は、以下の通り。

  1. 既存の zabbix server の停止
  2. zabbix データベースのバックアップ
  3. 設定ファイル群のバックアップ ( php.ini 等も )
  4. 新しい設定ファイル ( zabbix-server.conf 等 ) の確認
  5. 新しい zabbix server の起動

以下、作業は自己責任でお願いします。変更内容を理解した上で作業ください。

■実際の作業手順

PHP のアップグレード

PHP の必要環境が PHP 5.1.6 から 5.3.0 に変更になっている。RHEL5 初期セットアップ時の PHP は 5.1 系なので、そのままでは使う事ができない。RHN では PHP 5.3 系のパッケージが存在しているので、こちらに差し替える。ただし、作業前に既存の PHP は削除しなくてはいけない。

# yum erase php php-common

削除後は、php53 パッケージをセットアップする。

# yum install php53 php53-mysql php53-mbstring \
    php53-gd php53-xml php53-bcmath

Zabbix 2.2 が必要が必要とする PHP モジュールは以上の通り。その他、何か動作させている場合は、環境に応じて追加すること。

新しい PHP を有効にするため、httpd の再起動を行う。

# service httpd stop
# service httpd start

正常稼働したら、ブラウザから phpinfo() 等の情報が表示されるかチェックする。

# echo '<?php phpinfo(); >' > /var/www/html/php53infocheck.html

PHP の各種設定情報が表示されていれば正常。

MySQL の zabbix データベースをバックアップ

mysqldump コマンドを使用し、バックアップを作成。以下は全バックアップ。

$ /usr/bin/mysqldump -u root --default-character-set=utf8 --all-database \
     > /tmp/mysqldump.`date +%Y-%m%d-%H`.sql

バックアップ先の空き容量が十分か留意すること。加えて、Zabbix 本番稼働系であれば、要注意。テーブルがロックされると稼働中の監視に対する支障と、データ容量が膨大になってしまう懸念あり。そこで、ロックをせず、かつ、ヒストリやトレンド情報テーブルは除外してバックアップする方法も検討する。

$ mysqldump -u root -p --default-character-set=utf8 -A --lock-tables=false \
    --ignore-table=zabbix.history --ignore-table=zabbix.history_uint \
    --ignore-table=zabbix.trends --ignore-table=zabbix.trends_uint \
    > /tmp/mysqldump.`date +%Y-%m%d-%H`.sql

zabbix 2.2 は、初回起動時に自動的に 2.0 向けのスキーマを 2.2 に書き換えている模様。以上、いずれかの方法で、とにかくバックアップを残しておくこと。

Zabbix 2.2 のセットアップ

作業にあたり、既存の zabbix_server と zabbix_agentd は停止した。いずれもソースから構築したもの。init スクリプトは用意してなかったので、ps で確認し、どちらも kill しておく。

環境構築は、ソースから ( Installation from sources ) を読みながら進める。

ソースコードを入手し、展開する。

$ wget ‘http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.0/zabbix-2.2.0.tar.gz’
$ tar xvfz zabbix-2.2.0.tar.gz
$ cd zabbix-2.2.0

次に configure は、既存の環境( MySQL や SNMP を使用)にあわせる。ただし、Zabbix 2.2 向けの VM 監視で libxml2 が必要なので、これは追加しておく。また、この環境では、/opt/zabbix 以下にファイルを展開させている(prefix を指定せず、上書きも可能だが、覚悟すること)。

$ ./configure --prefix=/opt/zabbix \
     --enable-server --enable-proxy --enable-agent \
     --with-mysql --with-net-snmp --with-openipmi \
     --with-libcurl --with-libxml2

特にエラーが無ければ、make 、make install をすすめる。

$ make
# make install

ここでもエラーがなければ、/opt/zabbix/ 以下にファイルが展開されている。

# ll /opt/zabbix
合計 20
drwxr-xr-x 2 root root 4096 11月 18 15:27 bin
drwxr-xr-x 6 root root 4096 11月 18 15:27 etc
drwxr-xr-x 2 root root 4096 11月 18 15:27 lib
drwxr-xr-x 2 root root 4096 11月 18 15:27 sbin
drwxr-xr-x 4 root root 4096 11月 18 15:27 share

次に、環境設定を進める。設定ファイルは /opt/zabbix/etc/ 配下に。

# vi /opt/zabbix/etc/zabbix_agentd.conf

Server= で始まる行が、Zabbix サーバ。 IP アドレスで指定すること。また、旧 zabbix_agentd.conf と diff を取って、設定を追記しておくこと。特に UserParameter= の設定転記を忘れがちなので、必ず確認する。

# vi /opt/zabbix/etc/zabbix_server.conf

ここも同様に比較しながら設定をすすめる。自分の場合は、ログファイルのパスを、既存の zabbix 2.0 向けとは別にしておいた。

LogFile=/tmp/zabbix_server22.log

設定ファイルの準備が整ったら、新しい zabbix server を起動する。※起動すると、自動的に zabbix データベースの更新を試みるので注意。引き返すならココが最後。

起動前に、十分なディスクの空き容量が確保されている事を確認(と、ドキュメントに書いてある)、更に、zabbix データベースへの権限が適切かどうか最終確認。

# /opt/zabbix/sbin/zabbix_server

起動後、zabbix server のログファイルを確認する。正常に起動すると、ログには以下のように、データベースの更新中と表示される。

  9467:20131118:170538.059 Starting Zabbix Server. Zabbix 2.2.0 (revision 40163).
  9467:20131118:170538.060 ****** Enabled features ******
  9467:20131118:170538.060 SNMP monitoring:           YES
  9467:20131118:170538.060 IPMI monitoring:           YES
(snip)
  9467:20131118:170538.060 using configuration file: /opt/zabbix/etc/zabbix_server.conf
  9467:20131118:170538.619 current database version (mandatory/optional): 02010000/02010000
  9467:20131118:170538.619 required mandatory version: 02020000
  9467:20131118:170538.619 starting automatic database upgrade
  9467:20131118:170538.620 completed 0% of database upgrade
  9467:20131118:170538.620 completed 1% of database upgrade
  9467:20131118:170538.621 completed 2% of database upgrade
  9467:20131118:170538.622 completed 3% of database upgrade

しばらく眺めていると、以下の様に変換が完了する。

  9467:20131118:170614.273 completed 100% of database upgrade
  9467:20131118:170614.273 database upgrade fully completed

なお、以下のようにエラーが出る場合は、

12476:20131118:160614.290 [Z3001] connection to database ‘zabbix’ failed: [1045] Access denied for user ‘root’@’localhost’ (using password: NO)
12476:20131118:160614.290 Database is down. Reconnecting in 10 seconds.

MySQL 側のデータベースへの接続権限が不適切( ID にあたる DBUser や DBPassword での指定パスワードが間違っている)可能性がある。mysql コンソールから、正常接続できるか確認を行う事。

最後にエージェントを起動します。

# /opt/zabbix/sbin/zabbix_agentd

 

Web インターフェースのセットアップ

セットアップの前に PHP の設定を見直します。PHP を 5.1.6 から 5.3.0 に RPM で入れ替えたので、/etc/php.ini は初期状態です。旧ファイル /etc/php.ini.rpmnew と比較するか、以下ファイルを設置します。

# cat << EOF > /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Tokyo

設置後は httpd の restart を行い、設定を反映させます。

次に、古い zabbbix 2.0 用のファイルが /var/www/html/zabbix にあります。これを別名にして保管しておきます。

# mv /var/www/html/zabbix /var/www/html/zabbix20

ここに新しいファイルを展開します。

$ cd ~/src/zabbix-2.2.0/frontends/php
# mkdir /var/www/html/zabbix
# cp -a . /var/www/html/zabbix

展開後、ブラウザから http://<HOST>/zabbix/ にアクセスし、セットアップを継続。

【 Next >> 】をクリックして次へすすむ。

 

 

 

 

‘2. Check of pre-requisites’ では、PHP の環境変数やモジュールが適切か確認。

警告が出ている場合は、調整して【 Retry 】 を押すこと。

問題がなければ【 Next >> 】をクリック。

 

‘3. Configure DB connection’ は、MySQL データベースへの接続情報を入力。
‘Test connections’ を押し、 ‘OK’ になれば、【Next >>】へ。

 

‘4. Zabbix server details’ では、ホスト名ポート番号、名前(Zabbixの画面上で常に表示される名前)を入力し、【 Next >> 】。

 

 

 

‘5. Pre-Installation summary’ では最終確認。

確認して、問題が無ければ 【Next >>】だが、予め設定ファイル( zabbix.conf.php )を書き出せるようにしておく。 (ファイルを sftp 等で転送しても可。いずれにしろファイルにはパスワードを含むため、取り扱いには十分注意すること)

 

# touch /var/www/html/zabbix/conf/zabbix.conf.php
# chown apache.apache /var/www/html/zabbix/conf/zabbix.conf.php
# chmod 660 /var/www/html/zabbix/conf/zabbix.conf.php

この手順を踏まないと、左図のようにエラーとなるので注意。Retry を押すと、再設置を試みる。

正常に設置後は【 finish 】を押すと作業完了。

あとは、通常通りの zabbix 画面にログインして作業を行う。

 

・残作業:グラフへの日本語対応

日本語環境で使う場合は、そのままではグラフの日本語が文字化けする。解消するためには、日本語フォントをサーバに転送し、Zabbix の調整を行う必要がある。以下 VL Pゴシック体フォントが、サーバ内の ‘/usr/share/fonts/vlgothic/VL-PGothic-Regular.ttf’  にある場合、オリジナルのフォント指定 DejaVuSans を書き換える(合計3行)。

# vi /var/www/html/zabbix/include/defines.inc.php

define('ZBX_FONTPATH', '/usr/share/fonts/vlgothic');
define('ZBX_GRAPH_FONT_NAME', 'VL-PGothic-Regular');

define('ZBX_FONT_NAME', 'VL-PGothic-Regular');

変更後、ブラウザでグラフを表示・再読込すると、日本語フォントが表示される。表示されてない場合は、font ファイルのパス指定が適切かどうか確認を行う。

以上で切り替え完了。必要に応じ /etc/rc.local の自動起動設定を書き換える。

作業後の注意点

zabbix_serverd.conf のデフォルトでは、housekeeper に関する箇所がコメントアウトされているのに注意。環境に応じて、実行タイミング等を調整する必要がある。これは、動かしながら調整の必要あり。

# HousekeepingFrequency=1
# MaxHousekeeperDelete=500

その他、変更点についてはドキュメント Upgarade notes for 2.2.0 を精査すること。

One thought on “Zabbix 2.0→2.2にソースからバージョンアップした結果