テックブログ

【実体験】Zabbix 4.0 → 5.0移行のために取り組んだ事

ネットアシスト開発部のy-kinjoです。今回は弊社内で利用しているメインのサーバー・サービス監視基盤であるZabbixを、4.0 LTSから5.0 LTSへ移行した際に取り組んだ事を紹介していきたいと思います。

移行目的

長年利用してきた4.0から5.0へは以下の目的で移行を検討いたしました。

  • Zabbix 4.0 LTSの延長サポート期間終了が2023年10月をもって終了するため、セキュリティ上の修正が行われなくなる。
  • より新しいZabbixで対応した、Dockerコンテナ環境などの様々な監視対象に対する対応を可能にしていきたい。

また、今年正式リリースされた6.0 LTSへの移行も検討しましたが、以下の理由から一旦5.0への移行判断となりました。

  • Zabbix 6.0ではアイテム名の位置マクロが完全に廃止される。現在利用しているZabbix 4.0も元々はZabbix 3.0であったものを移行したものであり、位置マクロを利用したテンプレートがそれなりの数存在している状態。一旦5.0の状態でテンプレート修正を実行し様子を見たほうが無難である。
  • 現在Zabbix Serverを導入しているCentOS 7.x環境向けリポジトリにZabbix Server 6.0とフロントエンドが用意されておらず、OSそのものの再構築と移行が必要となる。
  • Zabbix 6.0ではCentOS 6.x環境向けリポジトリにZabbix Proxyが用意されておらず、CentOS 6.x環境でZabbix Proxyを利用しているお客様に対する対応が5.0以上に難しい可能性が有った。
  • Zabbix 6.0ではPSKによる通信暗号化設定UIに変更があり、別途鍵ファイルの管理方法を見直す必要があった。

そのため今回は十分に目的を満たせるZabbix 5.0への移行を行い、Zabbix 6.0への移行はCentOS 7.xサポート終了である2024年6月、または(OS側の移行を先に行ったうえで)Zabbix 5.0の延長サポート終了となる2025年5月に向けて別途検討していく形となります。

移行検証と事前準備

動作検証はインストールと最低限の動作のみを確認する検証環境で検証を行い、更に監視テンプレートなど本番と同様の物を用意しているステージング環境で監視の動作確認を行いました。バージョン間の差異の確認に関してはZabbix 4.0、4.2、4.4、5.0の公式ドキュメントに記載の各バージョンで行われた変更点、要件の変化、アップグレード手順などをチェックしています。

また、将来的な6.0移行も視野に入れる為、5.2、5.4、6.0の公式ドキュメントも同様に確認を行っています。

事前検証ではパッケージ入れ替えを行う際にフロントエンド側で依存関係の問題が出る事象を確認したため、 zabbix-web と zabbix-web-mysql はあらかじめ rpm -e を利用してあらかじめアンインストールしておく手順としました。

また、Zabbix 5.0そのものの動作確認以外に、併せて以下の対応を行いました。

  • 検証環境とステージング環境DB側のMariaDB 10.3から10.5への移行。これはMariaDB側のサポート期間によるものと、将来的にZabbix 6.0への移行を行う際にZabbix 6.0のMariaDB要件が10.5以上となる事によるものです。
  • 本番環境含め圧縮テーブルの利用を廃止。一部テーブルの行フォーマットで圧縮形式(ROW_FORMAT=COMPRESSED)を利用していましたが、この形式はMariaDB 10.6で廃止となるため今回あらかじめ変更を行っております。
  • 本番環境含め複数あるZabbixのうち、一部の環境でデフォルト文字コード設定に差異が見受けられたため、utf8(utf8mb3)形式で統一を行いました。
  • Zabbix Web APIを利用してアイテム名位置マクロを修正するスクリプトの用意。
  • Zabbix Proxyを導入している環境に対してZabbix Proxy 5.0へ入れ替えるためのAnsibleプレイブックの用意。
  • より完全な形でデータを元に戻すことができるバックアップ手法として、mysqldumpからmariabackup(xtrabackupのMariaDB版のような物)に切り替え。バックアップによる切り戻しも実際に検証。

本番移行

ここまでの検証と事前対応が終わり、移行当日に本番環境の移行を行います。

  • 用意済みのZabbix Proxy入れ替えAnsibleのドライラン動作確認。
  • 本番環境と本番環境DBのバックアップ取得。
  • Zabbixリポジトリを5.0の物に入れ替え。
  • 全ホストグループを対象にしたメンテナンス期間を設定。
  • yumでパッケージを入れ替えZabbix 5.0を導入。その際依存関係のエラーが出る zabbix-web と zabbix-web-mysql はあらかじめ rpm -e を利用してあらかじめアンインストールしておく。
  • パッケージ入れ替えの過程でZabbixフロントエンドのApache向け設定ファイルがファイル名変更により退避されてしまうため、このファイル名を手動で元に戻す。
  • Zabbix Serverを起動。ログファイルからDBに対して5.0移行マイグレーションが正常に行われていることを確認する。
  • 移行に伴い必要になる浮動小数点に関するDB修正スクリプトを実行。
  • 上記浮動小数点修正に関連するフロントエンド設定ファイルの調整($DB[‘DOUBLE_IEEE754’] = true; を追加)。php-fpmやApacheを再起動。
  • 一旦Zabbix Serverを停止し、DBのバージョンアップを実施しMariaDB 10.5に切り替え。切り替え後に再度Zabbix Serverを起動。
  • Zabbix Proxy入れ替えAnsibleの実行。
  • 全てのホストグループを対象にしたメンテナンス設定を解除。

※アイテム名位置マクロの修正スクリプトは後日実行しました。
※5.0移行に伴い追加可能になった新しい監視について、Zabbixの公式リポジトリからテンプレートを後日導入しました。

移行結果と今後について

上記手順により、大きな問題や長時間のダウンタイムを伴う事無くZabbix 5.0の移行を実施する事が出来ました。やはりシステム移行においては事前の変更点や差異の確認、事前に実施出来る手順と当日実施する手順、後日対応可能な手順の洗い出しと分離、問題が起きた場合の切り戻し手順確立が重要だと感じました。その点Zabbixは公式ドキュメントが充実しており、そこをしっかり読み込んでいれば概ね大きな問題は無く移行が可能かと思います。今後はZabbix 5.0移行に伴い可能になった新しいサービス監視と保守への対応を進め、新たな価値の提供が出来るよう今後も取り組んでまいります。

※Zabbixはラトビア共和国にあるZabbix LLCの商標です。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください