Zabbix Server 4.0から7.0へバージョンアップ(postgresql)

Zabbix Server 4.0 を 7.0 にバージョンアップします。

なお都合上、データベースについてはすでにZabbix Server 7.0対応のバージョンを利用するかたちでZabbixのバージョンアップをします。

# システム要件

Requirements | Target
--- | ---
CPU/vCPU | 2
Memory | 8 GiB
DB(PostgreSQL) | 13.0-17.X
PHP | 8.0.0 - 8.3.X

https://www.zabbix.com/documentation/7.0/en/manual/installation/requirements




# 環境

Software | Before | After
--- | --- | ---
OS | AlmaLinux release 8.8 | AlmaLinux release 8.8
Zabbix Server | 4.0.50-1 | **7.0.8-release1**
PostgreSQL | 15.10-1 | 15.10-1
httpd | 2.4.37-65 | 2.4.37-65
PHP | 7.2.24-1 | **8.0.30-1**

バージョンアップ前の環境は以下で作成しています。

https://qiita.com/Higemal/items/646ad769a2634e54b3ac


# 流れ
Zabbix Serverのサービスを停止し、バージョンアップを実施、そのあとにバージョンアップに係る変更箇所の確認を行います。

１．バージョンアップ事前準備
２．Zabbix Serverバージョンアップ
３．phpバージョンアップ
４．zabbix.conf再設定
５．zabbixパスワードリセット
６．関連サービス再起動
７．初回ログイン
８．triggerポーティング確認





# 1.バージョンアップ事前準備

バージョンアップ前に関連サービスを停止します。
```
# systemctl stop zabbix-server zabbix-agent httpd php-fpm
```

`zabbix_server.conf`を任意の場所にバックアップしておきます。
```
# cp -p /etc/zabbix/zabbix_server.conf /data/backup/zabbix_server.conf.bak
```

PostgreSQLのデータベースバックアップも実施します。
```
# pg_dump -U zabbix zabbix > /data/backup/pg_dump
```


# 2.Zabbix Serverバージョンアップ

Zabbix7.0向けのリポジトリをダウンロードします。
この処理内で、既存のZabbix4.0のリポジトリが削除されます。
```
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-release-latest.el8.noarch.rpm

更新中 / インストール中...
   1:zabbix-release-7.0-5.el8
整理中 / 削除中...
   2:zabbix-release-4.0-2.el8
```


Zabbix Server 7.0関連のインストールを実施します。
```
# dnf clean all
# dnf install -y zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese zabbix-sql-scripts zabbix-apache-conf

アップグレード済み:
  zabbix-server-pgsql-7.0.8-release1.el8.x86_64
  zabbix-web-7.0.8-release1.el8.noarch
  zabbix-web-pgsql-7.0.8-release1.el8.noarch
インストール済み:
  google-noto-cjk-fonts-common-20230817-1.el8_10.noarch
  google-noto-sans-cjk-ttc-fonts-20230817-1.el8_10.noarch
  zabbix-apache-conf-7.0.8-release1.el8.noarch
  zabbix-sql-scripts-7.0.8-release1.el8.noarch
  zabbix-web-deps-7.0.8-release1.el8.noarch
  zabbix-web-japanese-7.0.8-release1.el8.noarch

完了しました!
```




# 3.phpバージョンアップ

phpについて更新します。
```
# dnf remove -y php

削除しました:
  php-7.2.24-1.module_el8.3.0+2010+7c76a223.x86_64
  php-cli-7.2.24-1.module_el8.3.0+2010+7c76a223.x86_64


# dnf module list php

AlmaLinux 8 - AppStream
Name    Stream          Profiles                        Summary               
php     7.2 [d][e]      common [d], devel, minimal      PHP scripting language
php     7.3             common [d], devel, minimal      PHP scripting language
php     7.4             common [d], devel, minimal      PHP scripting language
php     8.0             common [d], devel, minimal      PHP scripting language
php     8.2             common [d], devel, minimal      PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled


# dnf module reset -y php
# dnf module enable php:8.0 -y
# dnf install -y php

アップグレード済み:
  php-bcmath-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-common-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-fpm-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-gd-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-ldap-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-mbstring-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-pdo-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-pgsql-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-xml-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
インストール済み:
  oniguruma-6.8.2-3.el8.x86_64
  php-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-cli-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64
  php-opcache-8.0.30-1.module_el8.8.0+3655+3335cff6.x86_64

完了しました!
```

:::note warn
本環境では単純更新の実施準備にてエラーが出たため、一旦phpを削除してからインストールする方式を採っています。
```
# dnf module enable php:8.0 -y

オペレーションは、モジュール 'php' ストリーム '7.2' を ストリーム '8.0' へと切り替える結果となります
エラー: 設定オプション module_stream_switch から明示的に有効化されていない限り、モジュールの有効なストリームを切り替えることはできません。
モジュールからインストールされた全てのコンテンツを削除し、'dnf module reset <module_name>' コマンドを使用してリセットすることが推奨されます。モジュールのリセット後、他のストリームをインストール可能です。
```
:::



<br>

phpタイムゾーン設定を実施します。
```
# vi /etc/php-fpm.d/zabbix.conf
--------------------------------------
php_value[date.timezone] = Asia/Tokyo
```



# 4.zabbix.conf再設定
事前にバックアップしておいた`zabbix_server.conf`と、Zabbix Serverバージョンアップ後に配置されてある`zabbix_server.conf`について内容比較し、必要に応じて編集をします。
```
# diff /data/backup/zabbix_server.conf.bak /etc/zabbix/zabbix_server.conf
```

:::note info
本環境では内容差異なきため編集は行っていません。
:::







# 5.zabbixパスワードリセット

ZabbixのAdminユーザパスワードのリセットを実施します。
リセット後のパスワードは`zabbix`です。
```
# psql -U zabbix

=> UPDATE users SET passwd = '$2a$10$ZXIvHAEP2ZM.dLXTm6uPHOMVlARXX7cqjbhM6Fn0cANzkCQBWpMrS' WHERE username = 'Admin';

=> \q
```

:::note info
上記の要因は以下に別記しています。
:::
https://qiita.com/Higemal/items/f02581ca1db6f799e136






# 6.関連サービス再起動

関連サービスの再起動を実施します。
```
systemctl restart zabbix-server zabbix-agent httpd php-fpm
```


# 7.初回ログイン
バージョンアップ前同様、 `http://[IP or FQDN]/zabbix` にアクセスし、初回デフォルトログインを実施します。

>ユーザ：`Admin`
パスワード：`zabbix`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/a2018f91-f1d2-1388-e414-4c4366a750dd.png)

バージョンアップ後のログインが完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/64a99b2f-a6bc-997b-4779-9f632ac81e24.png)




# 8.triggerポーティング確認
Zabbix Server 4.0 から 7.0 へのバージョンアップに伴い以下のような変更が存在します。

・Zabbix Server 5.4：トリガー構文の全面修正
・Zabbix Server 5.4：アプリケーションの廃止(タグへの統合)

https://www.zabbix.com/jp/rn/rn5.4.0

事前に作成しておいたItem/Triggerがどう変化したかを確認します。

:::note info
バージョンアップ中、`zabbix_server.log`に以下のようなアップグレード情報が表示されます。
```
20250126:160730.152 current database version (mandatory/optional): 04000000/04000006
20250126:160730.152 required mandatory version: 07000000
20250126:160730.152 mandatory patches were found
20250126:160730.153 starting automatic database upgrade
20250126:160730.172 completed 0% of database upgrade
20250126:160730.333 completed 1% of database upgrade
20250126:160730.397 completed 2% of database upgrade
・・・
20250126:160741.097 database upgrade fully completed
```
:::



## 8.1 ICMP監視
**■before(4.0)**
Item | Parameter
--- | ---
Name | ICMP ping
Key | icmpping
Application | Status

Trigger | Parameter
--- | ---
Name | Unavailable by ICMP ping
Expression | {Template Module ICMP Ping:icmpping.max(#3)}=0

**■after(7.0)**
Item | Parameter
--- | ---
Name | ICMP ping
Key | icmpping
Tag | Application:Status

Trigger | Parameter
--- | ---
Name | Unavailable by ICMP ping
Expression | max(/Template Module ICMP Ping/icmpping,#3)=0




## 8.2 CPU監視(Zabbixエージェント)
**■before(4.0)**
Item | Parameter
--- | ---
Name | rs_cpu_util
Key | system.cpu.util[all,user,avg1]
Application | Resource

Trigger | Parameter
--- | ---
Name | trigger_CPU_80% {ITEM.VALUE}
Expression | {001_linux_template:system.cpu.util[all,user,avg1].last()}>80

**■after(7.0)**
Item | Parameter
--- | ---
Name | rs_cpu_util
Key | system.cpu.util[all,user,avg1]
Tag | Application:Resource

Trigger | Parameter
--- | ---
Name | trigger_CPU_80% {ITEM.VALUE}
Expression | last(/001_linux_template/system.cpu.util[all,user,avg1])>80




## 8.3 メッセージ監視(Zabbixアクティブエージェント)
**■before(4.0)**
Item | Parameter
--- | ---
Name | logrt_var/log/messages
Key | logrt[/var/log/^messages$,test,,,skip,,,]
Application | Log

Trigger | Parameter
--- | ---
Name | trigger_messages_test {ITEM.VALUE}
Expression | {001_linux_template:logrt[/var/log/^messages$,test,,,skip,,,].regexp(.*)}=1

**■after(7.0)**
Item | Parameter
--- | ---
Name | logrt_var/log/messages
Key | logrt[/var/log/^messages$,test,,,skip,,,]
Tag | Application:Log

Trigger | Parameter
--- | ---
Name | trigger_messages_test {ITEM.VALUE}
Expression | find(/001_linux_template/logrt[/var/log/^messages$,test,,,skip,,,],,"regexp",".*")=1

アプリケーションに関するタグへの統合、またトリガーの記述変更についてバージョンアップ時に行われていることが確認できました。


<br>
<br>


**Itemのbefore(4.0)/After(7.0)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/74bff22f-4885-af9a-9311-ffbb819f992c.png)

**Triggerのbefore(4.0)/After(7.0)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/2ffda61f-1977-e3da-98ed-b3c51a0b55e4.png)


# 参考
https://www.zabbix.com/documentation/7.0/en/manual/installation/requirements

https://www.zabbix.com/documentation/7.0/en/manual/installation/upgrade

https://www.zabbix.com/documentation/7.0/en/manual/installation/upgrade/packages/rhel

https://www.zabbix.com/jp/rn/rn5.4.0

https://qiita.com/Higemal/items/f02581ca1db6f799e136

https://qiita.com/Higemal/items/646ad769a2634e54b3ac