Zabbix 5.0をインストールして監視サーバを構築する(CentOS7.9 +  PostgreSQL + Apache)

まっさらなサーバにZabbix 5.0をインストールする手順について記載します。
なお、インストール時にインターネット接続可能なことが前提条件となります。

＃基本的にはZabbix公式のインストール手順に従って作成します。

https://www.zabbix.com/jp/download?zabbix=5.0&os_distribution=red_hat_enterprise_linux&os_version=7&db=postgresql&ws=apache

項目 | 内容
--- | ---
OS | CentOS 7.9
Zabbix | 5.0 LTS
Database | PostgreSQL 9.2
Apaceh | 7.2


#1.selinux無効化
まずはselinuxを無効化します。

```text:selinux無効化
# setenforce 0
# getenforce 
Permissive

# vi /etc/selinux/config

-----
SELINUX=enforcing
↓
SELINUX=disabled
-----
```

</br>
</br>

#2.firewalld無効化
firewalldを無効化し、自動起動も無効化します。

```text:selinux無効化
# systemctl stop firewalld
# systemctl disable firewalld
```

</br>
</br>

#3.Zabbixインストール
Zabbixのインストールを行います。
公式インストール手順に従い、repositoryを追加してZabbix Server,Zabbix Agentをインストールします。
なお公式手順に追加して、zabbix agentは1だけでなく2もinstallしています。

```text:zabbix_install①
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all

# yum install zabbix-server-pgsql zabbix-agent zabbix-agent2.x86_64
《中略》
=====================================================================================
 Package                  アーキテクチャー    バージョン      リポジトリー      容量
=====================================================================================
インストール中:
 zabbix-agent             x86_64              5.0.14-1.el7    zabbix           460 k
 zabbix-server-pgsql      x86_64              5.0.14-1.el7    zabbix           3.1 M
 zabbix-agent2            x86_64              5.0.14-1.el7    zabbix           5.6 M

《中略》
```

</br>
</br>

#4.Zabbixフロントエンドインストール
続いて、フロントエンドのインストールを行います。

```text:zabbix_install②
# yum-config-manager --enable rhel-server-rhscl-7-rpms
読み込んだプラグイン:fastestmirror
```

>なお、以下エラーが出る場合は追加でyum-utulsをインストールします。
>
```text:zabbix_install_error
># yum-config-manager --enable rhel-server-rhscl-7-rpms
>-bash: yum-config-manager: コマンドが見つかりません
>```

>
```text:zabbix_install_error_respond
# yum -y install yum-utils
《中略》
==================================================================================
 Package             アーキテクチャー   バージョン           リポジトリー    容量
==================================================================================
インストール中:
 yum-utils           noarch             1.1.31-54.el7_8      base           122 k
 《中略》
```
>https://akamist.com/blog/archives/942



その後、リポジトリファイルを編集します。

```text:repofile_edit
# vi /etc/yum.repos.d/zabbix.repo

-----
[zabbix-frontend]
...
enabled=1
...
-----
```

ここで、フロントファイルのインストール前に、`centos-release-scl`をインストールします。
こちらは、フロントファイルの依存性パッケージとして`php72`系が必要となりますが、centos標準リポジトリでは提供されていないため、CentOS Software Collectionsを利用できるようにしておきます。

```text:scl_install
# yum install centos-release-scl
《中略》
===================================================================================
 Package              アーキテクチャー    バージョン         リポジトリー     容量
===================================================================================
インストール中:
 centos-release-scl   noarch              2-3.el7.centos     extras           12 k

《中略》
```

そして、公式インストール手順に従って、インストールに移ります。
また、追加で以下もインストールしておきます。日本語表示用のパッケージになります。
`zabbix-web-japanese.noarch `

```text:frontfile_install
# yum install zabbix-web-pgsql-scl zabbix-apache-conf-scl zabbix-web-japanese.noarch 
《中略》
===================================================================================
 Package                  アーキテクチャー   バージョン     リポジトリー      容量
===================================================================================
インストール中:
 zabbix-apache-conf-scl   noarch             5.0.14-1.el7   zabbix-frontend   15 k
 zabbix-web-pgsql-scl     noarch             5.0.14-1.el7   zabbix-frontend   14 k
 zabbix-web-japanese      noarch             5.0.14-1.el7   zabbix-frontend   14 k

《中略》
```

>なお、上述のcentos-release-sclをインストールしない場合、フロントエンドのインストール時に以下エラーがでます。
>
```text:frontfile_install_error
# yum install zabbix-web-pgsql-scl zabbix-apache-conf-scl
《中略》
===================================================================================
 Package                  アーキテクチャー   バージョン     リポジトリー      容量
===================================================================================
インストール中:
 zabbix-apache-conf-scl   noarch             5.0.14-1.el7   zabbix-frontend   15 k
 zabbix-web-pgsql-scl     noarch             5.0.14-1.el7   zabbix-frontend   14 k
《中略》
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-xml
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-mbstring
エラー: パッケージ: zabbix-web-pgsql-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-pgsql
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-bcmath
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-fpm
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-gd
エラー: パッケージ: zabbix-web-deps-scl-5.0.14-1.el7.noarch (zabbix-frontend)
             要求: rh-php72-php-ldap
《中略》
```

</br>
</br>

#5.databaseインストール
zabbixは監視設定および取得情報を保存するために、外部databaseを利用します。oracle等も利用できますが、一般的なものはmysqlやpostgresqlとなりますため、今回はpostgresqlを利用します。

https://www.zabbix.com/documentation/5.0/manual/installation/requirements


なお、postgresqlのバージョンについてはCentOS標準リポジトリのバージョンである9.2を利用しています。ただし、このバージョン9.2は相当古いものとなりますため、必要に応じて新しいバージョンのpostgresqlを導入すること検討したほうがよいでしょう。

https://qiita.com/Higemal/items/21a1c5b0c436a403af45

それではインストールを行います。

```text:postgresql_install
# yum install -y postgresql*
《中略》
======================================================================================
 Package                   アーキテクチャー   バージョン         リポジトリー     容量
======================================================================================
インストール中:
 postgresql                x86_64             9.2.24-7.el7_9     updates        3.0 M
 postgresql-contrib        x86_64             9.2.24-7.el7_9     updates        553 k
 postgresql-devel          x86_64             9.2.24-7.el7_9     updates        952 k
 postgresql-docs           x86_64             9.2.24-7.el7_9     updates        6.9 M
 postgresql-jdbc           noarch             9.2.1002-8.el7_8   updates        453 k
 postgresql-jdbc-javadoc   noarch             9.2.1002-8.el7_8   updates         88 k
 postgresql-odbc           x86_64             09.03.0100-2.el7   base           273 k
 postgresql-plperl         x86_64             9.2.24-7.el7_9     updates         84 k
 postgresql-plpython       x86_64             9.2.24-7.el7_9     updates         97 k
 postgresql-pltcl          x86_64             9.2.24-7.el7_9     updates         60 k
 postgresql-server         x86_64             9.2.24-7.el7_9     updates        3.8 M
 postgresql-static         x86_64             9.2.24-7.el7_9     updates         95 k
 postgresql-test           x86_64             9.2.24-7.el7_9     updates        1.8 M
 postgresql-upgrade        x86_64             9.2.24-7.el7_9     updates        2.3 M

《中略》
```

</br>
続いてinit処理とサービス起動を行います。
init処理のオプションを指定していないので、この場合はデータベース系ディレクトリが`/var/lib/pgsql/data`配下に作成されます。容量等の関係でディレクトリを変更する必要がある場合はpostgresqlのマニュアルを参照してinit処理を実行してください。

```text:postgresql_init
# postgresql-setup initdb
Initializing database ... OK

# systemctl start postgresql
# systemctl enable postgresql
```

</br>
</br>

#6.databaseセットアップ
databaseのセットアップとして、zabbixがdatabaseを利用する際のユーザとデータベースを作成します。

まずはユーザを作成します。
ユーザ名はzabbixです。`--pwpronpt`オプションをつけているため、ユーザ作成時にパスワードも設定します。

```text:postgresql_init
# sudo -u postgres createuser --pwprompt zabbix
Enter password for new role: 
Enter it again: 
```

</br>
続いて、zabbix用データベースを作成します。データべース名およびデータベースオーナー名をzabbixとしてデータベース作成を行います。

```text:postgresql_init
# sudo -u postgres createdb -O zabbix zabbix
```

</br>
その次に、作成したzabbixユーザがdatabaseにアクセスできるよう、アクセス許可設定を行います。
アクセス許可設定ファイルの`/var/lib/pgsql/data/pg_hba.conf`ファイルを設定変更します。

```text:pg_hba.conf_edit
vi /var/lib/pgsql/data/pg_hba.conf

-----
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident

↓
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     md5
# IPv4 local connections:
#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            md5
-----
```

</br>
その後、postgresqlを再起動して設定を反映します。

```text:postgresql_restart
#systemctl restart postgresql
```

>または、以下のコマンドを実行してpostgrsqlの再起動なしに設定だけを反映します。
>
```text:postgresql_reflect
sudo -u postgres pg_ctl reload -D /var/lib/pgsql/data/
```

</br>
その後、以下コマンドを発行し、zabbix用のデータベース・テーブル等を作成します。

```text:database_create
# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
```
</br>
</br>

#8.zabbix serverコンフィグ設定
zabbix serverのコンフィグ設定を行います。
必要となるのはdatabaseのzabbixユーザ用パスワードの設定になります。

```text:zabbix_server.conf_edit
# vi /etc/zabbix/zabbix_server.conf

-----
DBPassword=password
-----
```

</br>
</br>

#9.phpセットアップ
web GUIとして利用するphpの設定を行います。
コンフィグファイル内のtimezoneの設定を変更します。

```text:php_conf_edit
# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

-----
; php_value[date.timezone] = Europe/Riga
↓
php_value[date.timezone] = Asia/Tokyo
-----
```

</br>
</br>

#10.サービス起動、自動起動設定
CUIとしては最後の作業として、以下のサービスの起動及び自動起動設定を行います。

・zabbix-server
・zabbix-agent
・httpd
・rh-php72-php-fpm

```text:services_setup
# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
```

</br>
</br>

#11.Web GUIセットアップ
以後、webブラウザからセットアップを行います。
ブラウザを起動し、`http://[IPアドレス]/zabbix/`にアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/e68875c8-379e-2da6-2627-64f9c11fbe6c.png)




続いて、要求条項を満たしているかを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/a21024c0-2d04-d0ed-d59f-ce7e27f9f418.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/f58f80fc-980c-4e60-a0b5-607155e3b131.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/68fe42bd-51ae-8de6-5c40-2b34d9a7493b.png)

続いて、DB接続設定を投入します。
以下についてはデフォルトから変更を行います。

項目 | 設定 | デフォルト
--- | --- | ---
Database host | 127.0.0.1 | localhost
Password | [設定したパスワード] | [空白]
Database TLS encryption | □ | ☑

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/c60c2a5c-5d08-8619-6148-31d843078ddb.png)

zabbix serverの設定となりますが、ここは特に入力不要となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/79a2296f-879b-698b-ffb7-d1bb6cf41ef0.png)

インストールサマリを確認し、[Next step]を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/35b09125-ef5c-59ea-06c9-0a44ae86ee37.png)

インストールが完了しますので、[Finish]を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/cb9e5912-da69-3e7c-9553-fb72056f0263.png)

zabbix serverのログイン画面となります。初期ログイン情報は以下となります。

項目 | 設定
--- | ---
Username | Admin
Password | zabbix

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/cef10e00-105b-5a2b-7623-536c60bedc64.png)

コンソール画面が開きました。
これにてインストールは完了となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/367c02af-dcdb-83dc-10c5-c1c1d82aeee1.png)

</br>
</br>

#参考
https://www.zabbix.com/documentation/5.0/manual

https://www.zabbix.com/jp/requirements

https://www.zabbix.com/jp/download?zabbix=5.0&os_distribution=red_hat_enterprise_linux&os_version=7&db=postgresql&ws=apache

https://t-dilemma.info/install-zabbix50-on-centos7-by-yum/

https://qiita.com/Higemal/items/99fcda6f598f672cac29