気持ち監視サーバの負荷が減ったような・・・。
むしろ、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 ) に則り進める。入れ替え時の手順は、以下の通り。
- 既存の zabbix server の停止
- zabbix データベースのバックアップ
- 設定ファイル群のバックアップ ( php.ini 等も )
- 新しい設定ファイル ( zabbix-server.conf 等 ) の確認
- 新しい 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/ にアクセスし、セットアップを継続。
‘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 を精査すること。
UPDATEの記事を参考にさせてもらいましたー