Zabbixを2.0から2.2へアップグレードしてVMware LLDを利用する

インフラ技術

Zabbix 2.2ではVMware監視機能が強化されました。ゲストOSの監視設定を手作業で追加することなく自動で追加してくれるLLD(Low Level Discovery)を利用したかったので、2.0.9からアップグレードすることにしました。

アップグレードの流れ

  1. 稼働中のZabbixサービスを停止
  2. データベースと定義ファイルのバックアップ
  3. リポジトリの変更とyum update
  4. 設定ファイルの差分修正
  5. サービス再起動(DB自動アップグレード)
  6. VMwareテンプレートのインポート

事前準備

# サービス停止
service zabbix-server stop
service zabbix-agent stop

# DBバックアップ
mysqldump --opt --no-autocommit -uroot -p -B ZABBIX_DATABASE_NAME > ~/tmp/zabbix.dump

# 定義ファイルバックアップ
cp -a /etc/zabbix ~/tmp/
cp /etc/yum.repos.d/zabbix.repo ~/tmp/

アップデート実行

# Zabbix 2.2のリポジトリ登録
rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

# enabled=0にして明示的に使う方式にする
sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/zabbix.repo

# アップデート
yum clean all
yum --enablerepo=zabbix update

設定ファイルの修正

2.2で追加された主なオプション:

  • StartVMwareCollectors — VMware監視に必須
  • VMwareFrequency — VMwareデータ取得間隔
  • VMwareCacheSize — VMwareキャッシュサイズ
  • ValueCacheSize — ヒストリ値キャッシュ
  • AllowRoot — root実行の許可

DisableHousekeeping はWeb GUIからの設定に変更されたため、confから削除可能です。

DB自動アップグレードとテンプレート追加

service zabbix-server start
# ログに "database upgrade fully completed" が出力されることを確認

VMwareテンプレートのインポートでエラーが発生する場合、valuemapsレコードが不足していることがあります。以下のSQLで追加します。

INSERT INTO valuemaps (valuemapid, name) values ('13','VMware status');
INSERT INTO valuemaps (valuemapid, name) values ('12','VMware VirtualMachinePowerState');

INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('72','12','0','poweredOff');
INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('73','12','1','poweredOn');
INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('74','12','2','suspended');
INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('75','13','0','gray');
INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('76','13','1','green');
INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('77','13','2','yellow');
INSERT INTO mappings (mappingid, valuemapid, value, newvalue) values ('78','13','3','red');

テンプレートは以下の順でインポートします。

  1. Template_Virt_VMware_Hypervisor
  2. Template_Virt_VMware_Guest
  3. Template_Virt_VMware(依存関係があるため最後)

Related Posts