【Linux】CentOS9にZabbix7.0を構築する

# ■はじめに
 せっかく[-前回-](https://qiita.com/fuzzzi_iam/items/ce14fb47e816703dd652)Apacheを入れたので、Zabbix7.0を構築していきます。Zabbixにログインが出来てWebフロント画面にたどり着くまでをやっていきます。

# ■Zabbix構築に必要なもの

　・Webサーバー
 　　⇒Apacheを使用。既にインストール済み。
　・PHP
 　　⇒インストールする。
　・Mysqlサーバー
 　　⇒MariaDBをインストールする。

<font color="Blue">※yum(dnf)でインストールしていくので、インターネットにつながっていることが前提。</fron>

# ■Centos側の設定

### ◆SELinuxの無効化
**1．SELinuxの状態を調べる**
```
# getenforce
Enforcing
```
　　⇒エラーとならないこと

**2．有効になっていた場合、無効化する**
　　(1)で有効となっていましたので、無効化します。今回は完全に無効化しますので、confファイルを書き換えていきます。
```
# cd /etc/selinux/
# ll
合計 8
-rw-r--r--. 1 root root 1263 11月  2 14:17 config
-rw-r--r--. 1 root root 2668  8月 17 07:08 semanage.conf
drwxr-xr-x. 5 root root  133 11月  2 14:17 targeted
```
　/etc/selinux/配下にあるconfigファイルをviで編集します。
 viでconfigファイルを開くと、
``` 
 SELINUX=enforcing
```
と記述がありますので、# iでコマンドモードからインサートモードに移行して、これ↑を
```
SELINUX=disabled
```
に書き換え、:wqで保存します。

**3．OS再起動**
以下のコマンドを入力し、OSを再起動します。
```
# reboot
```
<font color="Blue">※再起動しないと設定は反映されません。</front>


**4．SELinuxが無効となったことの確認**
```
# getenforce
Disabled
```
  　　⇒「Disabled」となっていること



### ◆Zabbixの通信ポート開放

**1．以下のコマンドを入力し、ポートを開放する**
```
# firewall-cmd --permanent --add-port={10051/tcp,10050/tcp}
success
```
　　⇒「success」と表示されること

**2．ファイアウォール設定ファイルを再起動する**
```
# firewall-cmd --reload
success
```
　　⇒「success」と表示されること

**3．ポートが開放されたことを確認する**
```
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: cockpit dhcpv6-client http ssh
  ports: 10051/tcp 10050/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
``` 
　　⇒ports:欄に「10051/tcp 10050/tcp」が反映されたこと

# ■PHPのインストール
**1．以下のコマンドを入力し、phpのバージョンを確認する**
```
# yum module list php

CentOS Stream 9 - AppStream
Name      Stream      Profiles                        Summary
php       8.1         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
```
　　⇒エラーとならないこと
　　今回は「php8.2」をインストールしていきます。

**2．以下のコマンドを入力し、php8.2をインストールする**
```
# yum module -y install php:8.2/common
```
　　⇒エラーとならないこと

**3．以下のコマンドを入力し、インストールされたphpのバージョンを確認する**
```
# php -v
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
```
　　⇒phpのバージョンを確認できたこと 

**4．phpの動作確認**
  　Webサーバの/var/www/html配下にxxx.phpファイルを配置して、phpの動作テストをします。
   以下のコマンドを入力し、コマンドの標準出力をファイルに出力します。
```
# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php
```
　　⇒エラーとならないこと
　catコマンドで中身を見てみます。
```
# cat /var/www/html/phpinfo.php
<?php phpinfo(); ?>
```
　　⇒エラーとならないこと

　初期設定では、phpを起動させる「php-fpmサービス」が起動していないので、これを起動させます。
```
# systemctl status php-fpm
○ php-fpm.service - The PHP FastCGI Process Manager
     Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; preset:>
     Active: inactive (dead)
```     
　以下のコマンドを入力し、「php-fpmサービス」を起動する。
```
# systemctl start php-fpm
```
　　⇒エラーとならないこと
　以下のコマンドを入力し、「php-fpmサービス」の状態を確認します。
 ```
# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
     Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; preset:>
     Active: active (running) since Sun 2024-12-01 13:52:31 JST; 2s ago
   Main PID: 1721 (php-fpm)
     Status: "Ready to handle connections"
      Tasks: 6 (limit: 11071)
     Memory: 9.6M
        CPU: 50ms
     CGroup: /system.slice/php-fpm.service
             tq1721 "php-fpm: master process (/etc/php-fpm.conf)"
             tq1722 "php-fpm: pool www"
             tq1723 "php-fpm: pool www"
             tq1724 "php-fpm: pool www"
             tq1725 "php-fpm: pool www"
             mq1726 "php-fpm: pool www"

12月 01 13:52:31 www.testfuziiiiaki.com systemd[1]: Starting The PHP FastCGI Pr>
12月 01 13:52:31 www.testfuziiiiaki.com systemd[1]: Started The PHP FastCGI Pro 
```
　⇒Active:欄が緑文字で<font color="Green">「active (running)」</font>となっていること

**5．Webサーバにアクセスする**
　　Webブラウザに「http://[IPアドレス]/phpinfo.php」を入力し、以下の画面が表示されたら成功。

  ![スクリーンショット 2024-12-01 141722.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/9a780a4a-d66b-3fda-581e-9524dd211c44.png)

<font color="Blue">※上記画面が出ない場合、以下のコマンドを入力し、httpdを再起動してから、再度(5)を実施する。</font>
```
# systemctl restart httpd.service
```

# ■MariaDBのインストール
### ◆インストール
**1．以下のコマンドを入力し、MariaDBをインストールする**
```
# yum install mariadb mariadb-server
```
⇒エラーとならないこと
**2．以下のコマンドを入力し、インストールされたMariaDBのバージョンを確認する**
```
# mariadb --version
mariadb  Ver 15.1 Distrib 10.5.22-MariaDB, for Linux (x86_64) using  EditLine wrapper
```
**3．以下のコマンドを入力し、MariaDBを起動する**
```
# systemctl start mariadb
```
⇒エラーとならないこと
**4．以下のコマンドを入力し、MariaDBの状態を確認する**
```
# systemctl status mariadb
```
⇒Active:欄が緑文字で<font color="Green">「active (running)」</font>となっていること
**5．以下のコマンドを入力し、MariaDBの自動起動をオンにする**
```
# systemctl enable mariadb
```
⇒エラーとならないこと

### ◆文字コードの変更
MariaDBの文字コードを変更するために、mariadb-server.cnfファイルの中の[mysqld]に以下３行を追記する。
```
character-set-server = utf8
collation-server = utf8_bin
skip-character-set-client-handshake
```
まずは、以下のコマンドを入力し、mariadb-server.cnfファイルを開く。
```
# vi /etc/my.cnf.d/mariadb-server.cnf
```
⇒エラーとならないこと

次に、# iでコマンドモードからインサートモードに変更し、[mysqld]に以下のように、上記３行を追記し、:wqで保存する。
```
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
character-set-server = utf8　★追記箇所
collation-server = utf8_bin　★追記箇所
skip-character-set-client-handshake　★追記箇所
```
⇒コマンドラインに戻ること
### ◆設定
**1．以下のコマンドを入力し、対話形式で設定を進めていく**
```
# mysql_secure_installation
```
⇒対話モードに移行すること
```
Enter current password for root (enter for none):　★ENTERを入力する。
Switch to unix_socket authentication [Y/n] 　★ｎを入力する。
Change the root password? [Y/n]　★Yを入力する。
New password:　★DBのPW設定
Re-enter new password:　★↑で入れたPWを入力する。
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を入力する。
```
⇒コマンドラインに戻ること

**2．設定反映のため、以下のコマンドを入力し、MariaDBを再起動する**
```
# systemctl restart mariadb
```
⇒エラーとならないこと

# ■Zabbixのインストール
### ◆インストール
[公式サイト](https://www.zabbix.com/download?zabbix=7.0&os_distribution=red_hat_enterprise_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=apache)の手順に従って、Zabbixをインストールします。
**1．Zabbixリポジトリをインストールする**
すでにEPELによって、Zabbixパッケージがインストールされている場合は、無効化する。
/etc/yum.repos.d/epel.repoを編集して、以下の記述を加える。
```
[epel]
...
excludepkgs=zabbix*
```
とりあえず、↑のファイルがあるか調べます。
```
ll /etc/yum.repos.d/ | grep e				
8 -rw-r--r--. 1 root root 4245 2024/03/21 02:57:43 centos-addons.repo					
4 -rw-r--r--. 1 root root 2600 2024/03/21 02:57:43 centos.repo					
```	
今回は、epeal.repoファイルがなかったので、本手順はスキップします。
以下のコマンドを入力し、Zabbixレポジトリをインストールする。
```
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
```
⇒エラーとならないこと
```
# dnf clean all
```
⇒エラーとならないこと
**2．Zabbixサーバ、フロントエンド、エージェントをインストールする**
以下のコマンドを入力する。
```
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
```
⇒エラーとならないこと
### ◆Zabbix用ユーザの作成
**1．対話モードにて設定を進める**
以下のコマンドを入力する。
```
# mysql -uroot -p
Enter password:　★DBのrootのパスワードを入力する。
```
⇒対話モードに移行すること
以下のコマンドを入力し、設定を進める。
```
# create database zabbix character set utf8mb4 collate utf8mb4_bin;
# create user zabbix@localhost identified by 'XXXXXX';　　★XXXXXXはDBのZabbix用任意のパスワードを入力する。
# grant all privileges on zabbix.* to zabbix@localhost;
# set global log_bin_trust_function_creators = 1;
# quit;
```
⇒エラーとならず、対話モードが終了すること

**2．Zabbix用のDBスキーマと初期データをインポートする**
以下のコマンドを入力する。
```
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password:
```
先ほどのZabbix用パスワードを入力し、[Enter]を押下する。

**3．log_bin_trust_function_creators optionの無効化**

以下のコマンドを入力する。
```
# mysql -uroot -p
Enter password:　★DBのrootのパスワードを入力する。
```
⇒対話モードに移行すること
```
# set global log_bin_trust_function_creators = 0;
quit;
```
⇒エラーとならず、対話モードが終了すること

**4．Zabbixサーバのデータベースを設定する**
以下のファイルをviで開き、
```
# vi /etc/zabbix/zabbix_server.conf
```
以下の記述箇所を編集し、(/DBで検索をかけて、nで下に進んでいくと見つかります。)
```
DBPassword=★DBのZabbix用パスワードを記述する。
```
:wqで保存する。

※初期設定だと、コメントアウトされているので、コメントアウトを外してからパスワードを記述すること。

### ◆Zabbixサーバとエージェントの起動
以下のコマンドを入力し、Zabbixサーバとエージェントを起動する。
```
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
```
⇒エラーとならないこと
以下のコマンドを入力し、Zabbixサーバとエージェントの自動起動をオンにする。
```
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
```
⇒エラーとならないこと
# ■ZabbixWeb管理画面の起動
以下をWebブラウザに入力し、ZabbixWeb管理画面にログインする。
http://[IPアドレス]/zabbix

![スクリーンショット 2024-12-15 104121.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/339287ed-6eec-5c56-4869-c021284bf1d8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/c28cfbc5-34ac-8099-1498-5ef21c6c98cf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/2ddf7fdb-7671-8d9c-5755-83404701d6b6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/188af073-1749-58c1-3150-7312f82dd199.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/0394d3f4-9660-62f0-faf6-398d7da386ef.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761139/aa291eb1-8b62-7bc4-b0d7-95a752daa953.png)



機会があれば、Zabbixを使って色々実験をしてみたいですね。




# ■参考URL
 https://linuc.org/study/column/4489/

 https://qiita.com/sango/items/a08c5b04df7125aaaad3

https://qiita.com/mi_h/items/70e5d85838891850890d