サーバ管理のお供といえばZabbix。ただ、長いこと運用をやっていると保守的な思考になってしまい、最新版が出たからといってホイホイとアップデートする気にはならなくなる。自分の環境で使っているZabbixも、ずっと長いこと3.0系のままで何年も使っていてほったらかしになっていた。
ところが、先日さくらのクラウドの運用チームの監視システムを見たら、長いこと2.4系や3.0系だったのが4.0にアップグレードされていた。それだけでなく、そのダッシュボードがかっこいいこと! ちょっとしびれてしまったので、さっそく自分のZabbixも4.0にアップデートすることにした。
さて、Zabbixのアップデートに躊躇するのには理由がある。実は以前、3.0へのアップデートのときに、データベースの変換をするステップで失敗したことがあったのだ。原因は判然としないのだが、変換後に起動すると設定がめちゃくちゃになっていて動かないとか、何度トライしても正常に変換できず、結局古いデータを全部捨ててゼロからやり直したのだ。4.0にするにあたって、同じようにやり直しになったりしたら面倒だ。
だがクラウドチームのダッシュボードがかっこよかったので、今回仮に失敗してもやり直す価値はあるかもしれない。それにもしかしたら成功するかも? ということで挑戦してみることにした。
以下の手順の前提だが、本家リポジトリを利用したyumインストールをベースにしている。一応、自分の場合はサーバを丸ごとバックアップしてから試しているので失敗しても戻れるようにしている。読者の皆さんも自己責任でどうぞ。
念のためバックアップ
まずは現環境をバックアップする。どの程度バックアップするかはお好みに合わせていただければと思う。自分の場合、現行のZabbixサーバはクラウドなので、ボタンひとつでサーバのディスクイメージをバックアップコピーできる。
それから、/etc/zabbixを丸ごとコピーしておく。これはconfファイルを予防的に保管するために行う。
cp -rp /etc/zabbix /root/zabbix-backup
アップデート開始
続いてアップデートを始める。サーバではzabbix-serverとzabbix-agentが動作しているので、これを止める。
systemctl stop zabbix-server zabbix-agent
次に新しいリポジトリをダウンロードしてインストールする。
yum install https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
次のようにしてアップグレードする。
yum clean all # 2019-06-07 追記 yum upgrade zabbix-server zabbix-agent
これで、まずはコードのアップデートが完了する。
confの見直し
アップデート完了直後は、新しいconfファイルは .rpmnew という拡張子で置いてあるので、これを古いconfファイルとマージしなければならない。古いファイルは元の名前でそのまま置いてあるので、こんな風にしてやるとよい。
cd /etc/zabbix mv zabbix_server.conf zabbix_server.conf.old mv zabbix_server.conf.rpmnew zabbix_server.conf diff -u zabbix_server.conf.old zabbix_server.conf
差分を見ながら、新しいconfファイルを修正する。とはいえ、修正ポイントはそれほど多くないと思う。
- Hostname
- Server
- ServerActive
ぐらいなものだろうか。他にサイト特有の設定があるのなら、diffで明らかになると思うので設定を引き継いでほしい。zabbix_agent.confについても同様に設定を引き継ぐ。
mv zabbix_agentd.conf zabbix_agentd.conf.old mv zabbix_agentd.conf.rpmnew zabbix_agentd.conf diff -u zabbix_agentd.conf.old zabbix_agentd.conf
起動とチェック
完了したら再起動する。なんか、再インストールのときにdisabledになっているっぽいので念のためにenableにするほうがいいようだ。
systemctl start zabbix-server zabbix-agent systemctl enable zabbix-server zabbix-agent
起動時にエラーがないか確認する。
systemctl status -l zabbix-server zabbix-proxy tail -f /var/log/zabbix/zabbix_server.log tail -f /var/log/zabbix/zabbix_agent.log
tail -f の場合は、しばらくログを眺めてエラーが出ていないかを確認する。
最後に、ZabbixのWebサイトにアクセスし、きちんと画面が表示されているかを確認できたらOKだ。
おわりに
これまで失敗ばかりだったZabbixのアップデートが、今回うまくいった理由が何なのかはわからない。これまでも概ね同じような手順でやってきているので失敗する理由も成功する理由も分からない。まあ、成功したのでこれ以上追及はしないのだが。
今のところプライベートのZabbixサーバの負荷状況は上記のスナップショットの通りであるが、参考までにさくらのクラウドの1つのゾーンを監視しているサーバは Number of items 90278 (enabled)、Required server performance 684.77 だった。文字通り桁違いだ。