CentOS7のZabbix5をRocky Linux8のZabbix6へバージョンアップ

#### CentOS7で構築済みのZabbix5を、Zabbix6がリリースされたのを機に、サポート期間の長いRocky Linux8のZabbix6へバージョンアップしてみた。
---
# 環境
* 旧：CentOS7, Apache, PHP7.2, MariaDB, Zabbix5
* 新：Rocky Linux8, Apache, PHP7.4, MariaDB10.5, Zabbix6
OS自体のバージョンアップを行うため、別途新サーバを用意する
 
# 作業の流れ
  １．新サーバの構築(Zabbix5.0)
  ２．旧サーバからDBエクスポートと新サーバに転送
  ３．新サーバでDB dumpファイルインポート
  ４．Zabbix6.0へバージョンアップ
  ５．旧サーバのIPアドレスまたは、FQDNを新サーバに移行

## １. 新サーバ(Rocky Linux 8サーバ)の構築
[Rocky Linux 8](https://rockylinux.org/ja/download "公式Rocky Linuxダウンロードサイト")よりMinimalでRocky Linux8をインストール
※インストール後、システム時間を確認すること。(時間が狂っていてdnf に失敗した事が有った)
　併せてChrony(NTP)の起動も確認しておく
  * **Cronyd 起動確認**
      ```:
      # systemctl status chronyd
      ```

   * **パッケージを最新に更新**
      ```:
      # dnf -y update`
      ```

   * **rsyslogのインストール**
  Minimalインストールでrsyslogがインストールされなかった為
  ※/var/log/message ファイルが見当たらなかったため判明
     <details><summary>詳細</summary>

      ```
      # dnf -y install rsyslog
      # systemctl start rsyslog
      # systemctl enable rsyslog
      ```
     </details>

   * **Apacheインストールと設定変更**
     <details><summary>詳細</summary>

     * インストール
       ```:
       # dnf -y groupinstall web-server
       ```
     * 設定ファイル変更(要点のみ)
       ```# vi /etc/httpd/conf/http.conf 
       ServerName www.itsumomiteru.com:80
       ServerTokens ProductOnly
       ServerSignature off
       Header append X-FRAME-OPTIONS "SAMEORIGIN"
       Header set X-XSS-Protection "1; mode=block"
       Header set X-Content-Type-Options nosniff
       TraceEnable off
       ```
       ```# vi /etc/httpd/conf.d/ssl.conf
       SSLCompression off
       SSLProtocol -all +TLSv1.2 +TLSv1.3
       ```
       
     * phpインストールと設定変更
       * インストール可能なphpモジュール確認
        ```:
        # dnf module list php
        Last metadata expiration check: 3:08:40 ago on Wed 27 Apr 2022 11:55:52 AM JST.
        Rocky Linux 8 - AppStream
        Name     Stream      Profiles                          Summary
        php      7.2 [d]     common [d], devel, minimal        PHP scripting language
        php      7.3         common [d], devel, minimal        PHP scripting language
        php      7.4 [e]     common [d] [i], devel, minimal    PHP scripting language
        
        Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

        ```

     * php7.4以上で最新モジュールインストール
       ```:
       # dnf module -y install php:7.4
       ```
       
     * php.ini編集
       ```# vi /etc/php.ini
       expose_php = Off
       ```
       
     * Apache起動
       ```:
       # httpd -t
	   # systemctl start httpd
	   # systemctl status httpd
	   # systemctl enable httpd
       ```
     </details>

   * **MadiaDBインストール**
     <details><summary>詳細</summary>

     * インストール可能なモジュール確認
       ```:
       # dnf module list mariadb
       Last metadata expiration check: 3:50:41 ago on Wed 27 Apr 2022 11:55:52 AM JST.
       Rocky Linux 8 - AppStream
       Name         Stream        Profiles                           Summary
       mariadb      10.3 [d]      client, galera, server [d]         MariaDB Module
       mariadb      10.5 [e]      client, galera, server [d] [i]     MariaDB Module
        
       Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
       ```
        
     * MariaDB 10.5以上で最新モジュールインストール
       ```:
       # dnf module -y install mariadb:10.5
       ```
        
     * 関連パッケージインストール
       ```:
       # dnf -y install php-mysqlnd php-gd php-xml php-bcmath php-ldap
       ```

     </details>

   * **Zabbix5.0インストール**
     <details><summary>詳細</summary>
       
     * リポジトリインストール
       ```
       # dnf -y install https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
       ```
     * Zabbixパッケージインストール
       ```
       # dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent2 zabbix-get
       ```
        
     * PHP-fpm環境設定
       ``` # vi /etc/php-fpm.d/zabbix.conf
       pm = static 
       php_value[date.timezone] = Asia/Tokyo
       ```

     * PHP-fpm起動
       ```:
       # systemctl start php-fpm
       # systemctl enable php-fpm
       ```
      
     * Zabbixサーバ&エージェント設定
     　※旧サーバの設定を引き継ぐ
      
     </details>

   * **MariaDB Zabbix環境設定**
     <details><summary>詳細</summary>
    
     * MariaDB起動
       ```:
       # systemctl start mariadb
       # systemctl enable mariadb
       ```

     * 初期設定（抜粋)
       ``` :# mysql_secure_installation
       ～
       Enter current password for root (enter for none):    <- 空エンター
       ～
       Switch to unix_socket authentication [Y/n]           <- [Y]
       ～
       Change the root password? [Y/n]                      <- [Y]
       New password:                                        <- MariaDBのrootパスワード入力
       Re-enter new password:                               <- パスワード再入力
       ～
       Remove anonymous users? [Y/n]                        <- [Y]
       ～
       Disallow root login remotely? [Y/n]                  <- [Y]
       ～
       Remove test database and access to it? [Y/n]         <- [Y]
       ～
       Reload privilege tables now? [Y/n]                   <- [Y]
       ```

     * Zabbix用ユーザ作成（抜粋)
       ``` :# mysql -u root -p
       Enter password:                                      <- 上記で設定したMariaDBのパスワード
       MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
          　　　　　　　　　　　　　　　　　　　　　　　　　　  <- 文字コードは、旧システムに合わせる
       MariaDB [(none)]> CREATE USER zabbix@localhost IDENTIFIED BY 'zabbixユーザパスワード';
       MariaDB [(none)]> GRANT ALL ON zabbix.* TO zabbix@localhost;
       mysql> quit;
       ```
   </details>

   * **SELinuxの無効化とファイヤーウォール設定**
     <details><summary>詳細</summary>

     * SELinuxの無効化
       ```:
       # setenforce 0
       ```
       ```:# vi /etc/sysconfig/selinux
       SELINUX=disabled
       ```
     * Firewalld稼働確認
       ```:
       # systemctl status firewalld
       # dnf -y install firewalld
       # systemctl start firewalld
       # systemctl enable firewalld
       ```
     * Firewalld ポート開放
       ```:
       # firewall-cmd --add-service={http,https} --permanent
       # firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent
       # firewall-cmd --reload
       ```
  </detail>

   * **サーバ再起動**

## ２．旧サーバからDBエクスポートと新サーバに転送
  * **旧サーバでZabbixを停止**
    ```:
    # systemctl stop zabbix-agent2 zabbix-server
    ````

  * **DBエクスポート**
    ```:
    # mysqldump -u root -p  zabbix > /tmp/zabbix.sql
    # cd /tmp
    # gzip zabbix.sql
    ```

  * **新サーバに転送**
    ```:
    # scp /tmp/zabbix.sql.gz [新サーバユーザid]@[新サーバIP]:/tmp/
    ````

## ３．新サーバでDB dumpファイルインポート
  * **転送済みdumpファイル解凍**
    ```:
    # gunzip /tmp/zabbix.sql.gz
    ```
  * **解凍したdumpファイルをインポート**
    ```:
    # mysql -u root -p zabbix < /tmp/zabbix.sql
    ```
  * **新サーバでZabbix起動確認**
  ブラウザで新サーバに接続し、初回設定画面が出るので設定を実行
  http://[FQDN or IPアドレス]/zabbix/zabbix.php
    
## ４．Zabbix6.0へバージョンアップ
  * **ZabbixとApache停止**
    ```:
    # systemctl stop zabbix-server zabbix-agent2 httpd php-fpm
    ```
  * **Maria DB停止**
    ```:
    # systemctl stop mariadb
    ```
  * **Zabbix6 リポジトリ更新**
    ```:
    # rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
    ```
  * **Zabbix6 インストール**
  ※dnf installで問題なくバージョンアップされるので、Zabbix5.0をアンインストールする必要はない

    ```;
    # dnf crean all
    # dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent2 zabbix-web-japanese
    ```
  * **Zabbix-getバージョンアップ**
    ```:
    # dnf install -y zabbix-get
    ```
  * **パッケージ確認**
    ```:
    # rpm -qa | grep zabbix | sort
    zabbix-agent2-6.0.3-1.el8.x86_64
    zabbix-apache-conf-6.0.3-1.el8.noarch
    zabbix-get-6.0.3-1.el8.x86_64
    zabbix-release-6.0-1.el8.noarch
    zabbix-server-mysql-6.0.3-1.el8.x86_64
    zabbix-web-6.0.3-1.el8.noarch
    zabbix-web-deps-6.0.3-1.el8.noarch
    zabbix-web-japanese-6.0.3-1.el8.noarch
    zabbix-web-mysql-6.0.3-1.el8.noarch
    #
    ```
  * **Maria DB起動**
    ```:
    # systemctl start mariadb
    ```
  * **Zabbix起動**
    ```:
    # systemctl start zabbix-server zabbix-agent2 httpd php-fpm
    ```
  * **Zabbix動作確認**
    ブラウザで新サーバに接続し、初回設定画面が出るので設定を実行
    http://[FQDN or IPアドレス]/zabbix/zabbix.php
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2643943/7e92b1f3-dd9f-32bf-c1b2-e7249be9e18a.png)
    ダッシュボードの最下部でバージョン情報が確認できる

## ５．旧サーバのIPアドレスまたは、FQDNを新サーバに移行
  * **IPアドレスの移行は、念のため旧サーバのIPアドレス変更とNICインターフェースを停止しておく**
  * **FQDNを移行する場合は、DNSサーバの該当AレコードのIPアドレスを変更する**

## 参考にさせてもらったサイト
  * [技術メモメモ:Zabbix 5.0を6.0にバージョンアップする手順 (MariaDB利用) ](https://tech-mmmm.blogspot.com/2022/03/zabbix-5060-mariadb.html)
  * [CentOS 8 : Zabbix 5.0 : インストール : Server World](https://www.server-world.info/query?os=CentOS_8&p=zabbix50&f=1)