AlmaLinux9.5にZabbix7をインストールしていく

# はじめに
こんばんは、いつもさぼり気味の男 amaebiです！
今回は、自宅サーバーにZabbixをインストールしていきます。
ほぼ公式の手順通りに進めていきます。

# 手順
今回はタイトルにもある通り、以下のOSバージョンにZabbixをインストールしていきます。
OSバージョン : **AlmaLinux 9.5 (Teal Serval)**

公式のインストール手順サイトに行きます。

https://www.zabbix.com/jp/download?utm_campaign=whatsnew_72&utm_source=website&utm_medium=header

**Zabbix Packages**を選択し、以下のプラットフォームで進めていきます。
※好みによって、プラットフォームの内容を変えてください。
![A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/df9e5dc5-fd1e-4601-8773-e8b25b5d4835.png)

### Zabbixリポジトリのインストール
yumパッケージをアップデートします。
※アップデート不要なパッケージが存在する場合は個別に対応してください。
```
# yum update
```
EPELパッケージを使用して、Zabbixをインストールしていきます。
`/etc/yum.repos.d/epel.repo`ファイルを確認します。
```
# ls -la /etc/yum.repos.d
```
`epel.repo`ファイルが存在していなかったため、`epel-release`をインストールしていきます。
```
# yum list installed | grep  epel-release
# yum install epel-release
```
`epel.repo`ファイルが確認できたため、バックアップを取得して内容を書き換えます。
```
# ls -la /etc/yum.repos.d
# mkdir -v /etc/yum.repos.d/.backup
# cp -ipv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/.backup/epel.repo.`date +%Y%m%d`
# ls -la /etc/yum.repos.d/.backup
```
EPELを使用してインストールできるようにするため、`/etc/yum.repos.d/epel.repo`ファイルを書き換えます。
```
# vi /etc/yum.repos.d/epel.repo
```
差分を確認していきます。
```
# diff -U0 /etc/yum.repos.d/.backup/epel.repo.<対象ファイルの日付> /etc/yum.repos.d/epel.repo 
--- /etc/yum.repos.d/.backup/epel.repo.<対象ファイルの日付> 2024-12-03 08:57:02.000000000 +0900
+++ /etc/yum.repos.d/epel.repo  2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -10,0 +11 @@
+excludepkgs=zabbix*
# 
```
`/etc/yum.repos.d/epel.repo`ファイルの内容が書き換わっていることを確認できたら、zabbixリポジトリをインストールしていきます。
```
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
# dnf clean all
```

### Zabbixサーバー、フロントエンド、エージェントのインストール
Zabbixサーバー、フロントエンド、エージェントをインストールします。
```
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
```

### 初期データベースの作成
Zabbix用のMySQLをインストールし、起動させます。
(今回のMySQLバージョンは "MySQL 8.0.41" です)
```
# dnf install mysql-server
# systemctl start mysqld
# systemctl enable mysqld
# systemctl status mysqld
```
rootユーザーでMySQLにログインします。
```
# mysql -u root -p
Enter password:　←パスワードを設定していないため、何も入力せずにEnter
mysql> 
```
MySQLにログイン後、以下のコマンドを実行します。
```:データベース名 zabbix を作成
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> show databases;
```
```:ユーザー zabbix を作成
mysql> create user zabbix@localhost identified by '<パスワード>';
mysql> select user, host from mysql.user;
```
```:ユーザー zabbix にデータベース zabbix の全権限を付与
mysql> grant all privileges on zabbix.* to zabbix@localhost;
```
```:MySQLにスキーマとデータをインポートするため、log_bin_trust_function_creatorsを一時的に開放
mysql> set global log_bin_trust_function_creators = 1;
mysql> show variables like 'log_bin_trust_function_creators';
mysql> quit;
```
zabbix serverとhostのスキーマとデータを先ほど作成したデータベース zabbix にインポートしていきます。
```
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
Enter password: ←データベースユーザー zabbix のパスワードが要求されます。
#
```
インポートが完了したため、`log_bin_trust_function_creators`を無効にします。
```
# mysql -u root -p
mysql> set global log_bin_trust_function_creators = 0;
mysql> show variables like 'log_bin_trust_function_creators';
mysql> quit;
```

### Zabbixサーバー用のデータべース構築
`/etc/zabbix/zabbix_server.conf`を書き換えます。
```:バックアップ
# ls -la /etc/zabbix
# mkdir -v /etc/zabbix/.backup
# ls -la /etc/zabbix/.backup
# cp -ipv /etc/zabbix/zabbix_server.conf /etc/zabbix/.backup/zabbix_server.conf.`date +%Y%m%d`
# ls- la /etc/zabbix/.backup
```
```:/etc/zabbix/zabbix_server.conf書き換え、差分チェック
# vi /etc/zabbix/zabbix_server.conf
# diff -U0 /etc/zabbix/.backup/zabbix_server.conf.<対象ファイルの日付> /etc/zabbix/zabbix_server.conf 
--- /etc/zabbix/.backup/zabbix_server.conf.<対象ファイルの日付>     2025-02-24 18:12:09.000000000 +0900
+++ /etc/zabbix/zabbix_server.conf      2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -132,0 +133,2 @@
+DBPassword=<データベースユーザーパスワード>
+
# 
```

### zabbixサーバー及びzabbixエージェント起動
最後にzabbixサーバーとzabbixエージェントを起動します。
```
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
```

<details><summary><strong><font color="Red">トラブルシューティング</font></strong></summary>

`http://<zabbixサーバーのIPアドレス>/zabbix`で内容を確認した際、以下のようにタイムアウトを起こしました。
![B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/a8549ba9-21da-46a3-80b5-9df726879442.png)

原因を調査するため、`/var/log/httpd/error_log`を確認します。
```
# tail -F /var/log/httpd/error_log
~~以下省略~~
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
~~以下省略~~
```
ServerNameが指定していないためのエラーなので、`/etc/httpd/conf/httpd.conf`のServerNameを指定します。
```
# ls -la /etc/httpd/conf
# mkdir -v /etc/httpd/conf/.backup
# ls -la /etc/httpd/conf
# cp -ipv /etc/httpd/conf/httpd.conf /etc/httpd/conf/.backup/httpd.conf.`date +%Y%m%d`
# vi /etc/httpd/conf/httpd.conf
# diff -U0 /etc/httpd/conf/.backup/httpd.conf.<対象ファイルの日付> /etc/httpd/conf/httpd.conf 
--- /etc/httpd/conf/.backup/httpd.conf.<対象ファイルの日付> 2025-01-22 06:19:11.000000000 +0900
+++ /etc/httpd/conf/httpd.conf  2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -101,0 +102,2 @@
+ServerName <zabbixサーバーのIPアドレス>:80
+
# 
```
apacheを再起動します。
```
# systemctl restart httpd
```
これでもサイトが確認できませんでした。
事前にSELinuxは無効化していたため、次はAlmaLinuxのfirewallを確認します。
※皆さんはSELinuxを無効化しないようにしましょう！
```
# firewall-cmd --state
running
#
```

firewallが起動していたので、80ポートだけを開放します。
```
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload
```
firewallを再起動後、再度`http://<zabbixサーバーのIPアドレス>/zabbix`でアクセスすると、無事zabbixのセットアップページを確認することができました。
![C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/bf036c23-c85a-48de-8fd8-848888877d64.png)

</details>

### セットアップ
webブラウザを開き、`http://<zabbixサーバーのIPアドレス>/zabbix`でzabbixサーバーにアクセスします。

これからzabbixのセットアップと行きたいところなんですが...
言語設定で日本語が選べないため、いろいろと設定していきます。
![D.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/b635bb99-b04b-41b1-89c4-7c029517d8b6.png)

現在の言語設定を確認していきます。
```
# localectl 
System Locale: LANG=C.UTF-8
    VC Keymap: jp
   X11 Layout: jp
#
```
日本語設定になっていないため、以下のパッケージをインストールしていきます。
```
# dnf install glibc-locale-source glibc-langpack-ja zabbix-web-japanese
```
以下のパッケージをインストール後、日本語設定を行っていきます。
```
# ls -la /etc | grep locale
# mkdir -v /etc/.backup ←事前に.backupファイルを作成していたため、スキップ
# cp -ipv /etc/locale.conf /etc/.backup/locale.conf.`date +%Y%m%d`
# localectl set-locale LANG=ja_JP.utf8
# diff -U0 /etc/.backup/locale.conf.20250310 /etc/locale.conf
```
設定が完了したら、サーバーを再起動します。
```
# reboot
```
再起動後、再度zabbixサーバーにアクセスし、言語設定を見てみると日本語を選択できるようになりました。
![E.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/9c8ec96a-0b3b-47e5-84ec-8061afe9afbe.png)

そのまま、日本語を選択し、**次のステップ**をクリックします。
![F.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/4144321d-bc77-48ba-87ea-ceafa0700090.png)

全ての前提条件が**OK**になっていることを確認できたら、**次のステップ**をクリックします。
![G.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/83ad0922-3343-43fa-a71a-21f2252fd17e.png)

データベース接続設定では、データベースポートとデータベースユーザーのパスワードを入力してから、**次のステップ**をクリックします。
![H.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/57614116-b5a6-488c-bf3e-e1e1e5d5f793.png)

zabbixサーバー名、タイムゾーン、テーマを決めたら、**次のステップ**をクリックします。
(zabbixサーバー名とテーマはお好みで決めてください:relaxed:)
![I.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/d87fb41d-d333-494b-be10-da808b1a5893.png)

設定パラメータを確認後、問題がなければ**次のステップ**をクリックします。
![J.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/0f378091-34ad-437c-ba69-7ae48730ddf0.png)

すべてが完了したら、終了を押します。
![K.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/8638ac2c-2eda-4f91-957d-f083715986e2.png)

Zabbixサーバーのログイン画面が出てくるため、ユーザー名とパスワードを入力してサインインします。
初期ユーザー名とパスワードは以下の通りです。
- ユーザー名 : Admin
- パスワード : zabbix

![L.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/a9dae97d-db1c-48b5-8d17-672bbe3bdb41.png)

無事ダッシュボードにログインできました。
![M.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3765414/56b35eef-e273-4ddf-bc1c-a25176c05553.png)

# 最後に
公式ドキュメントを参考に作業を進めていましたが、至る所でエラーとの勝負だったため結構勉強になりました。
このzabbixサーバーを使用して、遊び尽くしたいと思います。


# 参考資料
- [Download and install Zabbix](https://www.zabbix.com/jp/download?utm_campaign=whatsnew_72&utm_source=website&utm_medium=header)
- [Zabbix7.0LTSをAlmaLinux9にインストール](https://qiita.com/itohdaigo/items/9db576adc386b6871961)
- [Zabbixサーバの言語設定に新しい言語を追加する](https://qiita.com/owl149haye/items/ba9dd4dac52cc8f44092)
- [Zabbix6.4 を AlmaLinux 9 にインストール(MySQL) サーバ/エージェント](https://qiita.com/murachi1208/items/3c0dab0f90b3ba992b06)