2世代前の 1.4 系から一気に最新の 1.8 系にしたかった統合監視ツール Zabbix はアップグレード時に世代を飛ばせないと言うことで、前回暫定的に 1.4.6 から 1.6.8 にした。今回は 1.6.8 から 1.8.1 にアップグレードするメイン・イベントで、前回同様に ZABBIX-JP サイトドキュメントを参考にしつつ、次の流れで作業を行う。

  1. Zabbix 1.6.8 の DB をバックアップ。
  2. Zabbix を 1.6.8 → 1.8.1 にアップグレード。
  3. 各クライアントの Zabbix エージェントを 1.4.6 → 1.8.1 にアップグレード。
  4. yum リポジトリを設定。


我が家の Zabbix サーバーの環境は、次の通り。環境が異なる場合は、適宜読み変えていただきたい。

  • マシン: VMware ESXi 4.0 上の仮想マシン
  • OS: CentOS 5.4 (x86)
  • 現行 Zabbix: ZABBIX-JP 提供バイナリ (1.6.8-2)
  • DB: MySQL

1. Zabbix 1.6.8 の DB をバックアップ

1.6.8 へのアップグレードが成功して油断していると、痛い目に遭う可能性がある。僕は前回同様 LVM のスナップショットを利用して、MySQL のデータ・ディレクトリを丸ごとコピーしておいた。

2. Zabbix を 1.6.8 → 1.8.1 にアップグレード

ZABBIX-JP のダウンロード・ページから、現時点での CentOS 5 用最新版 Zabbix 1.8.1-1 関連パッケージをダウンロードし、次のように作業する。

# rpm -qa | grep zabbix | sort ← 既存の Zabbix 関連パッケージを確認
zabbix-1.6.8-2.el5.JP
zabbix-agent-1.6.8-2.el5.JP
zabbix-server-1.6.8-2.el5.JP
zabbix-server-mysql-1.6.8-2.el5.JP
zabbix-web-1.6.8-2.el5.JP
zabbix-web-mysql-1.6.8-2.el5.JP

# /etc/init.d/zabbix stop ← Zabbix を停止

# /etc/init.d/zabbix-agent stop ← Zabbix エージェントを停止

# rpm -e \ ← 既存パッケージをアンインストール
zabbix \
zabbix-agent \
zabbix-server \
zabbix-server-mysql \
zabbix-web \
zabbix-web

# rpm -ivh \ ← 必要なパッケージのみインストール
zabbix-1.8.1-1.el5.JP.rpm \
zabbix-agent-1.8.1-1.el5.JP.rpm \
zabbix-server-1.8.1-1.el5.JP.rpm \
zabbix-server-mysql-1.8.1-1.el5.JP.rpm \
zabbix-web-1.8.1-1.el5.JP.rpm \
zabbix-web-mysql-1.8.1-1.el5.JP.rpm

ここで前回同様 DB にパッチを適用することになるが、パッチ・ファイル patch.sql が DB 中の既存インデックスと同名のインデックスを作成しようとするので、一部のインデックスを事前に削除しておかないといけない。必要な作業は、移行ドキュメントにある以下の 11行。

# mysql -uroot -p<PASSWORD> <DBNAME> ← MySQL にログイン

mysql> ALTER TABLE dhosts DROP INDEX dhosts_1; ← 以下、既存インデックスを削除

mysql> ALTER TABLE dservices DROP INDEX dservices_1;

mysql> ALTER TABLE httptest DROP INDEX httptest_2;

mysql> ALTER TABLE httptest DROP INDEX httptest_3;

mysql> ALTER TABLE history_log DROP INDEX history_log_2;

mysql> ALTER TABLE history_text DROP INDEX history_text_2;

mysql> ALTER TABLE actions DROP INDEX actions_1;

mysql> ALTER TABLE escalations DROP INDEX escalations_2;

mysql> ALTER TABLE graphs_items DROP INDEX graphs_items_1;

mysql> ALTER TABLE graphs_items DROP INDEX graphs_items_2;

mysql> ALTER TABLE services DROP INDEX services_1;

mysql> \q ← ログアウト

# cd /usr/share/doc/zabbix-server-1.8.1/dbpatches/1.8/mysql/

# mysql -uroot -p<PASSWORD> <DBNAME> < patch.sql ← DB にパッチを適用

同じ作業を何度かやる可能性があるなら、パッチ・ファイル patch.sql を修正した方が楽だ。パッチ (SQL) のパッチ (PATCH) を作ってもいいし、上記の "ALTER TABLE ~" 行をまとめて patch.sql の冒頭に書いておくだけでもいい。

1.8 系では設定ファイルの書式が大きく変わっているが、最低限必要な設定項目は少ない。とりあえず以下の項目が正しく設定できていれば、動作するはず。

# vi /etc/zabbix/zabbix_server.conf ← Zabbix サーバー用設定ファイルを編集
--- snip ---
PidFile=/var/run/zabbix/zabbix.pid ← デフォルト
LogFile=/var/log/zabbix/zabbix_server.log ← デフォルト
DBName=<DBNAME>
DBUser=<DBUSER>
DBPassword=<PASSWORD>
#ListenIP=127.0.0.1 ← デフォルト。コメント化されている
--- snip ---

# vi /etc/zabbix_agentd.conf ← Zabbix エージェント用設定ファイルを編集
--- snip ---
PidFile=/var/run/zabbix/zabbix_agentd.pid ← デフォルト
LogFile=/var/log/zabbix/zabbix_agentd.log ← デフォルト
Server=<IP_ADDRESS_OF_ZABBIXSERVER>
Hostname=<HOSTNAME>
ListenIP=<IP_ADDRESS> ← 監視 IP アドレスが複数ある場合は "0.0.0.0" を指定
--- snip ---

設定ファイルが準備できたら、Zabbix と Zabbix エージェントを起動し、Web インターフェイスにアクセスする。

# /etc/init.d/zabbix-server start ← Zabbix を起動

# /etc/init.d/zabbix-agent start ← Zabbix エージェントを起動

Web インターフェイスは 1.4 系 → 1.6 系でかなり変わっているが、この 1.8 系でもさらに進化している。個人的に一番感激したのは、Screens で行や列を挿入するのが非常に楽になり、操作性が格段に向上していること。今まで 「やっぱり先頭に 1行追加だ」 とやる場合は、最後に 1行足して全ての行のグラフを 1行ずつ下に移動させ、先頭行に新しいグラフを作成する、苦行のような作業を強いられていた。これがなくなれば、「より見やすく」 「より効率的に」 を目標に、Screens を気軽に改良して行ける。グラフが見やすくなったのもありがたい。

さらに 1.8 系では、CPU 負荷も低くなっているようだ。次のグラフはあまり厳密なものではないが、我が家の Zabbix サーバーを 1.4.6 → 1.6.8 → 1.8.1 とアップグレードした前後の様子。マシン自体は同じだし、監視項目やホスト数は変わっていないので、純粋に Zabbix サーバーとエージェントのアップグレードによる負荷の変化だと思う。


Zabbix サーバーのロード・アベレージ


Zabbix サーバーの CPU 使用率

上の CPU 使用率グラフで 1.6.8 へアップグレード後にほとんどなくなっている緑色の部分は、iowait を表している。我が家の Zabbix サーバーで iowait の原因になる I/O 負荷は DB アクセスぐらいしかないので、1.6 系から DB の使い方が効率的になったと言うことか。

3. 各クライアントの Zabbix エージェントを 1.4.6 → 1.8.1 にアップグレード

1.8 系になった Zabbix サーバーを一通り眺めたら、前回の残りの Zabbix エージェントを 1.8.1 にする。手順は当然のことながら全く同じなので、そちらを参照していただきたい (手抜き)。

4. yum リポジトリを設定

最後に、Zabbix サーバーまたはエージェントをインストールした CentOS で yum リポジトリの設定を行う。zabbix-jp-release-5-3 を新規インストールする場合は問題ないが、*-5-2 には alternatives の設定が壊れるバグがある。*-5-2 をインストール済み、または *-5-2 から *-5-3 にアップグレードしている場合は、一度 zabbix-jp-relase パッケージをアンインストール後に改めて *-5-3 をインストールし直す。

# rpm -q zabbix-jp-release ← zabbix-jp-release の存在を確認
zabbix-jp-release-5-2 ← 5-2 がインストールされている

# rpm -e zabbix-jp-release ← 5-2 以前の zabbix-jp-release は、一旦アンインストール

# rpm -ivh http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp-release-5-3.noarch.rpm ← zabbix-jp-release-5-3 をインストール

# alternatives --display zabbix-jp-release ← 現在の alternatives 設定を確認
zabbix-jp-release - status is auto.
link currently points to /usr/share/zabbix-jp-release/zabbix-jp-1.6.repo ← 1.6 系を参照している
/usr/share/zabbix-jp-release/zabbix-jp-1.1.repo - priority 10
/usr/share/zabbix-jp-release/zabbix-jp-1.4.repo - priority 20
/usr/share/zabbix-jp-release/zabbix-jp-1.6.repo - priority 40
/usr/share/zabbix-jp-release/zabbix-jp-1.8.repo - priority 30
Current `best' version is /usr/share/zabbix-jp-release/zabbix-jp-1.6.repo.

# alternatives --config zabbix-jp-release ← alternatives 設定を確認

There are 4 programs which provide 'zabbix-jp-release'.

Selection Command
-----------------------------------------------
1 /usr/share/zabbix-jp-release/zabbix-jp-1.1.repo
2 /usr/share/zabbix-jp-release/zabbix-jp-1.4.repo
*+ 3 /usr/share/zabbix-jp-release/zabbix-jp-1.6.repo
4 /usr/share/zabbix-jp-release/zabbix-jp-1.8.repo

Enter to keep the current selection[+], or type selection number: 4 ← 1.8 系を選択

# alternatives --display zabbix-jp-release ← alternatives 設定を確認
zabbix-jp-release - status is manual.
link currently points to /usr/share/zabbix-jp-release/zabbix-jp-1.8.repo ← 参照先が 1.8 系に変わった
/usr/share/zabbix-jp-release/zabbix-jp-1.1.repo - priority 10
/usr/share/zabbix-jp-release/zabbix-jp-1.4.repo - priority 20
/usr/share/zabbix-jp-release/zabbix-jp-1.6.repo - priority 40
/usr/share/zabbix-jp-release/zabbix-jp-1.8.repo - priority 30
Current `best' version is /usr/share/zabbix-jp-release/zabbix-jp-1.6.repo.

Comments are closed.