Debian11(bullseye)上のZabbix5.4.12を6.0.5にアップグレードする手順

## はじめに
我が家ではESXi7.0上にDebian11(bullseye)の仮想マシンを構築し、その上でZabbixサーバ及びZabbixプロキシを動作させています。
何気なく最新機能が使いたく、ポイントリリース版の5.4をインストールして使用していました。
先日、Interop Tokyo 2022のZabbixブースに訪れた際、5.4はすでにリミテッドサポートすら2022年3月に終了していることを知りました。
個人使用とはいえ、サポート終了したバージョンを使用し続けるのも良くないなと思い、今回5.4.12から、最新版の6.0.5にアップグレードすることにしました。
備忘録として、その手順を書き残しておきます。
ZabbixServerとZabbixProxyを運用していますが、まずはZabbixServerのアップグレード手順のみ記事にします。
※ZabbixProxyのバージョンはZabbixServerと合わせる必要がありますので、本来同時にアップグレードが必要です。
## 現状のバージョン確認
まずは現状のバージョン確認です。

#### ・OSのバージョン確認
```
# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
```
#### ・Zabbixのバージョン確認
```
# zabbix_server -V
zabbix_server (Zabbix) 5.4.12
```
#### ・ZabbixAgentのバージョン確認
```
# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 5.4.12
```

#### ・MariaDBのバージョン確認
```
# mysql --version
mysql  Ver 15.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper
```

#### ・Apacheのバージョン確認
```
# apachectl -v
Server version: Apache/2.4.53 (Debian)
Server built:   2022-03-14T16:28:35
```

#### ・PHPのバージョン確認
```
# php -v
PHP 7.4.28 (cli) (built: Feb 17 2022 16:17:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies
```

#### ・まとめ
我が家の環境は以下のとおりです。
幸いZabbix6.0の各要求バージョンは満たしているので、ZabbixServerだけのアップグレードで済みそうです。
> ZabbixServer：5.4.12
> ZabbixAgent：5.4.12
> MariaDB：mysql  Ver 15.1 Distrib 10.5.15-MariaDB
> PHP：7.4.28
> Apache：2.4.53

## 事前プロセス停止
事前にZabbixServerとZabbixAgentのプロセスを停止しておきます。
```
# systemctl stop zabbix-server
# systemctl stop zabbix-agent
```

## 事前バックアップ
我が家はESXi上で構築しているので、スナップショットを取得しておけばそれで済むのですが、一応DBや各設定ファイルをバックアップしておきます。

#### ・バックアップ用ディレクトリの作成
```
# mkdir /opt/zabbix-backup_YYYYMMDD
```

#### ・既存のZabbixデータベースのバックアップ
```
# mysqldump -u root -p  zabbix > /opt/zabbix-backup_YYYYMMDD/zabbix.sql
```
※DB名等は適宜読み替えてください。

#### ・構成ファイル、PHPファイル、Zabbixバイナリのバックアップ
```
# cp -pi /etc/zabbix/zabbix_server.conf /opt/zabbix-backup_YYYYMMDD/
# cp -pi /etc/zabbix/zabbix_agentd.conf /opt/zabbix-backup_YYYYMMDD/
# cp -pi /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup_YYYYMMDD/
# cp -piR /usr/share/zabbix/ /opt/zabbix-backup_YYYYMMDD/
# cp -piR /usr/share/doc/zabbix-* /opt/zabbix-backup_YYYYMMDD/
```

## リポジトリ構成パッケージを更新
#### ・現在のリポジトリパッケージをアンインストール
```
# rm -Rf /etc/apt/sources.list.d/zabbix.list
```

#### ・新しいリポジトリ構成パッケージをインストール
```
# wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-1+debian11_all.deb
# dpkg -i zabbix-release_6.0-1+debian11_all.deb
```

ここで、
```
設定ファイル '/etc/apt/sources.list.d/zabbix.list'
 ==> これはインストールしてから (あなたかスクリプトによって) 削除されています。
 ==> パッケージ配布元が更新版を提供しています。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する
 デフォルトでは現在使っている自分のバージョンを残します。
*** zabbix.list (Y/I/N/O/D/Z) [デフォルト=N] ?
```
と聞かれましたが、大きな差分も無さそうなので、**Y**としておきます。

#### ・リポジトリ情報を更新
```
# apt update 
```

ここで、アップグレード可能なパッケージを確認
```
# apt list --upgradable
一覧表示... 完了
zabbix-agent/不明 1:6.0.5-1+debian11 amd64 [1:5.4.12-1+debian11 からアップグレード可]
zabbix-apache-conf/不明 1:6.0.5-1+debian11 all [1:5.4.12-1+debian11 からアップグレード可]
zabbix-frontend-php/不明 1:6.0.5-1+debian11 all [1:5.4.12-1+debian11 からアップグレード可]
zabbix-server-mysql/不明 1:6.0.5-1+debian11 amd64 [1:5.4.12-1+debian11 からアップグレード可]
zabbix-sql-scripts/不明 1:6.0.5-1+debian11 all [1:5.4.12-1+debian11 からアップグレード可]
```

## アップグレード実行
```
# apt full-upgrade
```
ここで各設定ファイルを上書きするか、既存のバージョンを残すかを聞かれるが、すべて**Y**と答えて、後ほど修正を行います。
特に理由はありませんが、そんなにデフォルトから変更している項目も無いので、最新のConfigファイルをインストールして、それを修正することにしました。

## 各設定ファイルの修正
以下のように修正しました。
```
# diff /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.YYYYMMDD
130d129
< DBPassword=zabbix
349d347
< StartVMwareCollectors=1
358d355
< VMwareFrequency=60
367d363
< VMwarePerfFrequency=60
378d373
< VMwareCacheSize=8M
387d381
< VMwareTimeout=10
450d443
< CacheSize=32M
# diff /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.YYYYMMDD
93d92
< AllowKey=system.run[*]
176,177c175
< #Hostname=Zabbix server
< Hostname=ZabbixServerのホスト名
---
> Hostname=Zabbix server
```

## 各Zabbixプロセスを開始
```
# systemctl start zabbix-server
# systemctl start zabbix-agent 
```

## 事後の各バージョン確認
```
# zabbix_server -V
zabbix_server (Zabbix) 6.0.5
Revision 8da3e1f8419 30 May 2022, compilation time: May 30 2022 06:40:36

Copyright (C) 2022 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.1.1k  25 Mar 2021
Running with OpenSSL 1.1.1n  15 Mar 2022
#
#
# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 6.0.5
Revision 8da3e1f8419 30 May 2022, compilation time: May 30 2022 06:40:36

Copyright (C) 2022 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.1.1k  25 Mar 2021
Running with OpenSSL 1.1.1n  15 Mar 2022

```

## 最後に
MariaDBのアップグレード等も不要だったからか、思ったより簡単にZabbixを5.4.12から6.0.5にアップグレードすることができました。

本当は失敗してバックアップからリカバリとかするとスキルも上がって良いのですが、残念ながら？今回はすんなりアップグレードできてしまいました。
まぁ失敗してもスナップショットから戻しちゃうんですけどね。
ESXiはでそういうところサボっちゃうから、便利ではあるけどなかなかスキル上がんないんだよなぁ。
でも便利すぎてもう戻れません。