AlmaLinux8へのZabbix5インストール

![AlmaLinux-8.3](https://img.shields.io/badge/AlmaLinux-8.3-yellow) ![Zabbix-5.0.](https://img.shields.io/badge/Zabbix-5.0LTS-yellow)

Zabbixと呼ばれる状態監視ソリューションのAlmaLinux8向け導入メモです。
バックエンドDBにはPostgreSQL、フロントエンドにはApacheまたはNginxを使用する構成です。

## OSのセットアップ
最小インストールしたAlmaLinux8を準備します。
https://qiita.com/SkyLaptor/items/fff86902c94adc6ce167


## データベースのセットアップ
今回はデータベースとしてPostgreSQLを選定しました。Zabbixの互換リスト上ではPostgreSQL v9.2.24以上であればOKの模様です。

### インストール

```shell-session:
# curl -OL https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# rpm -Uvh epel-release-latest-8.noarch.rpm
# wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# rpm -Uvh pgdg-redhat-repo-latest.noarch.rpm
# dnf install epel-release
# dnf module disable postgresql
# dnf config-manager --disable pgdg10 pgdg11 pgdg95 pgdg96
# dnf clean all

# dnf install postgresql12-server-12.4-1PGDG.rhel8.x86_64 postgresql12-odbc
```

### 初期設定

```shell-session:
# su - postgres
postgres$ vim .bash_profile
```

```shell:.bash_profile
export PGDATA
# 以下を追記
export PATH=$PATH:/usr/pgsql-12/bin
```

```shell-session:
postgres$ source .bash_profile
postgres$ initdb --encoding=utf8 --locale=C -D /var/lib/pgsql/12/data
postgres$ exit

# systemctl start postgresql-12
# systemctl enable postgresql-12
```

## フロントエンドのセットアップ
ZabbixでフロントエンドをNginxにする場合、Zabbixセットアップ時に同時インストールされる模様です。


## ZabbixServerのセットアップ

### インストール

```shell-session:
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-agent zabbix-get vlgothic-fonts vlgothic-p-fonts

# sudo -u postgres createuser --pwprompt zabbix
could not change directory to "/root": 許可がありません ※無視してOK
Enter password for new role: 任意のDBパスワード
Enter it again: 任意のDBパスワードもう一度

# sudo -u postgres createdb -O zabbix zabbix
could not change directory to "/root": 許可がありません ※無視してOK

# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
...
INSERT 0 1
COMMIT

# cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.default
# vim /etc/zabbix/zabbix_server.conf
```

```shell:/etc/zabbix/zabbix_server.conf
# DBPassword=
DBPassword=DBパスワード
```

```shell-session:
# cp -p /etc/nginx/conf.d/zabbix.conf /etc/nginx/conf.d/zabbix.conf.default
# vim /etc/nginx/conf.d/zabbix.conf
```

```shell:/etc/nginx/conf.d/zabbix.conf
listen          80;
server_name     サーバーのIP サーバのFQDN;
```

```shell-session:
# cp -p /etc/php-fpm.d/zabbix.conf /etc/php-fpm.d/zabbix.conf.default
# echo "php_value[date.timezone] = Asia/Tokyo" >> /etc/php-fpm.d/zabbix.conf

# rm /etc/alternatives/zabbix-web-font
# ln -s /usr/share/fonts/vlgothic/VL-PGothic-Regular.ttf /etc/alternatives/zabbix-web-font

# systemctl restart zabbix-server zabbix-agent nginx php-fpm
# systemctl enable zabbix-server zabbix-agent nginx php-fpm
```

### 初回セットアップ
Webブラウザで以下
のURLにアクセスし、初回セットアップを開始します。

http://{サーバIP or FQDN}/zabbix.php

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/f93d20c2-7416-8dde-aa97-e7738a04e5c8.png"/>

システム要件チェックでは、NGが無いことを確認します。

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/e8bf9bc0-e11d-f0f1-dcb8-61056841b627.png"/>

`Password`部分にDBパスワードを入力します。他は触れる必要ありません。

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/31a69c1a-866b-7715-7ff8-ad8bccdef220.png"/>

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/a27ba966-9a8c-8bfe-0665-f063c4367947.png"/>

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/3a1b3f57-a6cb-5ea4-d56e-9897ebd7528a.png"/>

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/62d19ef0-413a-3840-d3b4-1d5a1b102c49.png"/>

初期IDは`Admin`、パスワードは`zabbix`です。

<img width="256" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/a8c4ce64-27e9-f34d-4e2a-28fb780e155a.png"/>

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/2421be54-f951-6091-6174-060baf3ac970.png"/>

表示を日本語にします。画面左下の`User settings`をクリック。

<img width="256" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/fca27497-1572-f496-f1e0-96516ace3c04.png"/>

`Language`を`Japanese (ja_JP)`にします。

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/e654fb8c-f52a-ad3c-f981-33e0c229b967.png"/>

日本語表示になりました。

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/6a1f246b-86a9-4f07-3f0a-8ed6a3ca6189.png"/>



### 設定チューニング
このままでも動くのですが、快適に動作するように各種チューニングを施しておきます。

#### PostgreSQL

```shell-session:
# mkdir /etc/systemd/system/postgresql-12.service.d
# vim /etc/systemd/system/postgresql-12.service.d/override.conf
```

```shell:/etc/systemd/system/postgresql-12.service.d/override.conf
[Service]
LimitNOFILE=65536
LimitNPROC=65536
```

```shell-session:
# systemctl daemon-reload
# systemctl restart postgresql-12
```

#### Nginx

```shell-session:
# vim /etc/systemd/system/nginx.service.d/override.conf
```

```shell:/etc/systemd/system/postgresql-12.service.d/override.conf
[Service]
LimitNOFILE=65536
LimitNPROC=65536
```

```shell-session:
# systemctl daemon-reload
# systemctl restart nginx
```

#### PHP

```shell-session:
# vim /etc/php-fpm.d/zabbix.conf
```

```shell:/etc/php-fpm.d/zabbix.conf
php_value[memory_limit] = 1024MB ※環境に合わせて要調整
```

```shell-session:
# systemctl restart zabbix-server zabbix-agent nginx php-fpm
```


## ZabbixAgent対応の監視対象の追加
ZabbixAgentを導入できるOSであれば、非常に多岐に渡る情報を取得できるようになります。ぜひ入れておきましょう。
ここでは、CentOS8最小インストールを対象とします。

### 監視対象へのAgentインストール
```shell-session:
# wget https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# rpm -Uvh zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-agent zabbix-get

# cp -p /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.default
# vim /etc/zabbix/zabbix_agentd.conf
```

```shell:/etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1,ZabbixServerのIPアドレス
#Hostname=Zabbix server　※コメントアウト
```

```shell-session:
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
```

### ZabbixServerへの登録
監視対象にAgentを入れただけではZabbixServerに登録されません。以下の手順で登録します。

ZabbixWebコンソールにログインし、左メニューから`設定`→`ホスト`を選択します。

<img width="256" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/872c7a41-33fa-e169-013f-d48e1b954c98.png"/>

ホスト画面の右上にある`ホストの作成`をクリックします。
<img width="128" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/9afa8196-1329-cbe7-8d73-73308d03cc21.png"/>

`ホスト名`に任意のホスト名、`グループ`は`Linux Servers`、`インタフェース`の`IPアドレス`に対象のIPアドレスを入力します。

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/70e75305-b46f-f27a-23bc-a51294a2062b.png"/>

`新規テンプレートをリンク`にて`Template OS Linux by Zabbix agent`を適用し、`追加`をクリックします。

<img width="512" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/cf83bc93-a1ab-c078-4867-3e93ff4ee022.png"/>

追加して数分経ってから、ホスト一覧にて追加したホストの`エージェントの状態`を確認すると`ZBX`が緑色になります。これで監視対象になりました。

<img width="256" alt="language" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97774/223e1ba0-fff6-8445-5158-cb4502e75340.png"/>




## 参考ページ
* https://www.zabbix.com/jp/download
* https://www.zabbix.com/documentation/5.0/manual/
* https://yum.postgresql.org/repopackages/