KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

Zabbix 6.0 LTS のサーバ(ホスト)を入れ替え手順をまとめる。

登録日 :2024/08/12 19:38
カテゴリ :Linux

VMware 仮想サーバとして RockyLinux 8.8 をインストールし、 Zabbix 6.0 LTS サーバを構築して運用していました。

今回、VMwareが買収されたことに伴い無償版のVMwareの提供が原則なくなってしまいました。
さらにVMwareの脆弱性対策のため、VMware 8 update 3 以上にバージョンアップが必要な状況となりました。調べたところ、VMware 8 は2024/2 以降から無償ダウンロードがなく、有償版のライセンスが必要となるが価格帯が公表されておらず VMware の利用は事実上あきらめるしかないようです。

そこで、RockyLinux 8.8 のZabbix 6.0 LTS サーバを別のマシンに移行するための手順を確認しましたので、忘備録としてまとめました。

0. Zabbixデータベースのバックアップ

Zabbixサーバのデータベースのバックアップを取得します。
まず、Zabbixサーバを停止します。

[root@DNS zabbix]# systemctl stop zabbix-server.service

以下は、mariadbからバックアップを取るスクリプトです。

#!/bin/bash

DATE=$(date +%Y-%m-%d)
DEST="/root/backup/zabbix"

mysqldump --opt --flush-logs --single-transaction --databases zabbix > ${DEST}/zabbix-${DATE}.sql

# rootのパスワードを設定している場合は --passwordオプションを追加する
#mysqldump --password --opt --flush-logs --single-transaction --databases zabbix > ${DEST}/zabbix-${DATE}.sql

コマンドを実行すると日付をつけてバックアップを取得できます。
このテスト環境では、ファイルサイズは27M程度です。データをダンプするサーバに十分な空き容量があることに注意してください。

[root@DNS zabbix]# ./mysqldump.sh
[root@DNS zabbix]# ll
合計 27576
-rwxr-xr-x. 1 root root      272  8 14 13:43 mysqldump.sh
-rw-r--r--. 1 root root 28231563  8 14 13:43 zabbix-2024-08-14.sql
[root@DNS zabbix]#
[root@DNS zabbix]# du -sh zabbix-2024-08-14.sql
27M     zabbix-2024-08-14.sql
[root@DNS zabbix]#

バックアップをしたデータを、移設先サーバに転送します。

[root@DNS zabbix]# scp zabbix-2024-08-14.sql 192.168.56.102:/root/share
root@192.168.56.102's password:
zabbix-2024-08-14.sql                                 100%   27MB  56.7MB/s   00:00
[root@DNS zabbix]#

Zabbixサーバの設定ファイルもバックアップを転送します。

[root@DNS zabbix]# scp /etc/zabbix/zabbix_server.conf 192.168.56.102:/root/share
root@192.168.56.102's password:
zabbix_server.conf                                    100%   26KB   9.9MB/s   00:00
[root@DNS zabbix]#

移設先サーバに転送されたことを確認します。

[root@SambaServer share]# ls -l
合計 27600
-rw-r--r--. 1 root root 28231563  8 14 13:51 zabbix-2024-08-14.sql
-rw-------. 1 root root    26119  8 14 13:57 zabbix_server.conf
[root@SambaServer share]#

1. Zabbixのインストール

新サーバーでのZabbix 6.0 のインストールを行う
インストール手順は以下にも詳細をまとめています。
https://nonoco.believeriver.site/detail_mark/203/

以下、簡易的に手順をまとめます。

# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm

# dnf clean all

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

これでインストールは完了。設定は後で行います。

2. mariadb 10.5のインストール

mariadb10.3をインストールしてから、mariadb10.5にバージョンアップします。
インストールおよびアップグレード方法の詳細はいかにまとめています。
https://nonoco.believeriver.site/detail_mark/204/

以下、簡易的にまとめます。

# dnf install mariadb-server --nobest

# dnf module list mariadb

# dnf module reset mariadb

# dnf module install mariadb:10.5

# dnf module reset mariadb

mariadbのバージョンが10.5になっていることを確認します。

[root@SambaServer share]# mysql -V
mysql  Ver 15.1 Distrib 10.5.22-MariaDB, for Linux (x86_64) using  EditLine wrapper
[root@SambaServer share]#
[root@SambaServer share]# systemctl status mariadb
 mariadb.service - MariaDB 10.5 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: d>
   Active: inactive (dead)
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
[root@SambaServer share]#

3. データベースの復元

旧サーバから転送したバックアップデータを用いて、Zabbixサーバを復元します。
(参考)
Zabbixのデータベース復元方法(4.0 -> 6.0)の方法について詳細をいかにまとめています。
https://nonoco.believeriver.site/detail_mark/230/
※今回は、同じ6.0LTSバージョンでのデータ移行のため、データのフォーマット変換は不要です。

3-1. 新しいサーバでZabbixデータベースの初期化(データベースとアカウント作成)
3-1-1. データベースの設定

データをインポートするためには「innodb_strict_mode」をオフにします。

mariadbをスタートして、「innodb_strict_mode」がデフォルトではONであることを確認します。

[root@SambaServer share]# systemctl start mariadb
[root@SambaServer share]# systemctl status mariadb
 mariadb.service - MariaDB 10.5 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: d>
   Active: active (running) since Wed 2024-08-14 17:16:25 JST; 16s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/

[root@SambaServer share]#
[root@SambaServer share]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'innodb_strict_mode';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | ON    |
+--------------------+-------+
1 row in set (0.001 sec)

MariaDB [(none)]> quit;
Bye
[root@SambaServer share]#

以下の手順でOFFにします。

[root@SambaServer share]# vi /etc/my.cnf.d/mariadb-server.cnf
# This group is only read by MariaDB-10.5 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.5]

#2024.8.14
innodb_strict_mode=0

[root@SambaServer share]#
[root@SambaServer share]# systemctl restart mariadb
[root@SambaServer share]#

innodb_strict_modeが「OFF」になっているかを確認する。

[root@SambaServer share]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'innodb_strict_mode';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | OFF   |
+--------------------+-------+
1 row in set (0.001 sec)

MariaDB [(none)]> quit;
Bye
[root@SambaServer share]#
3-1-2. Zabbixデータベースとユーザアカウント作成

Zabbixデータベースをインポートするための環境を構築します。
以下の手順でZabbixデータベースとアカウントを作成します。

[root@SambaServer share]# mysql -u root -p

MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user zabbix@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;
3-2. データベースのインポート

旧サーバのバックアップデータを確認します。

[root@SambaServer share]# pwd
/root/share
[root@SambaServer share]#
[root@SambaServer share]# ll
合計 27600
-rw-r--r--. 1 root root 28231563  8 14 13:51 zabbix-2024-08-14.sql
-rw-------. 1 root root    26119  8 14 13:57 zabbix_server.conf
[root@SambaServer share]#

バックアップを新しいZabbixデータベースにインポートします。

[root@SambaServer share]# cat zabbix-2024-08-14.sql | mysql -u zabbix -p
Enter password:
[root@SambaServer share]#

※データベースが大きい場合、このインポートに非常に時間がかかるため、pvコマンドを使うと進捗状況が見える化できてよいです。
pvのインストール手順

wget https://www.ivarch.com/programs/sources/pv-1.8.5.tar.gz
tar xzf pv-1.8.5.tar.gz
cd pv-1.8.5
sh ./configure
make
sudo make install

pvを経由したインポート

pv zabbix.sql | mysql -u zabbix -p
56.6GB 1:07:32 [14.3MB/s] [========================>] 100%

4. Zabbixサーバの起動

zabbixサーバを起動して、環境が移行できていることを確認します。

4-1 zabbixの設定ファイルを修正

Zabbixデータベースへアクセスするための設定を記述します。

[root@SambaServer share]# vi /etc/zabbix/zabbix_server.conf
# DBPassword=
DBPassword=password
4-2. Zabbixサーバを起動

自動起動設定は適宜行います。

[root@SambaServer share]# systemctl enable zabbix-server zabbix-agent httpd php-fpm

Zabbixサーバを起動します。

[root@SambaServer share]# systemctl restart zabbix-server zabbix-agent httpd php-fpm

サービスが起動していることを確認します。

[root@SambaServer share]# systemctl status zabbix-server
 zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor pres>
   Active: active (running) since Wed 2024-08-14 17:43:20 JST; 1min 33s ago
  Process: 255738 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=>
 Main PID: 255755 (zabbix_server)
   CGroup: /system.slice/zabbix-server.service

zabbixサーバにアクセスできること、およびデータが適切に移行反映ができるていることを確認します。
ブラウザで以下のようにアクセス(IPアドレスは適宜変更)

http://192.168.56.102/zabbix/

初期画面にアクセスし、Zabbixデータベースのパスワード設定、Zabbixサーバ名(任意)をすると設定完了します。
Zabbixへの初回ログインは、デフォルト設定の場合はアカウント「Admin」・パスワード「zabbix」にて可能です。旧サーバでバックアップを取った内容(MAPやグラフ設定、ログデータなど)が適切に移行できたかを確認します。

※アクセスできない場合は、firewalldの設定を見直してください
(httpを許可する、もしくはfirewalldの無効化する)
httpの許可設定例

[root@localhost ~]# sudo firewall-cmd --add-service=http --zone=public --permanent
success
[root@localhost ~]# sudo firewall-cmd --reload
success
[root@localhost ~]#