AlmaLinux8(CentOS)でZabbix6.0LTSを試してみる

Zabbix6.0LTSが登場したらしいので、AlmaLinuxでインストール検証してみる。
クラウド上に構築してもよかったが今回はオンプレ仮想環境にて構築を実施。


## 準備
■使用するOS
　AlmaLinux8
■イメージファイル
　AlmaLinux-8.5-x86_64-minimal.iso
　　参考：https://almalinux.org/ja/

■使用するZabbix
　Server:zabbix-server-mysql-6.0.0-1.el8.x86_64.rpm
　Agent:zabbix-agent-6.0.0-1.el8.x86_64.rpm 
　　その他のモジュールも6.0.0-1で統一、Agentは2でも良い
　　また、DBはmysqlを利用する。　

　　参考：https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/



■使用するmysql
　Ver 8.0.26 for Linux on x86_64

■オンプレ環境
　VMWare Workstation 15 Player
　※なんでもいい、仮想マシンスペックはある程度貧弱でも多分動く


## 事前設定
・AlmaLinuxインストール
・dnf update
・Firewalld無効化（検証用の為）

なお今回のZabbixのバージョンでは「zabbix-selinux-policy」が準備されているので、
SELinuxの設定または無効化は不要。やったね！

## インストール開始！
手順をイチからご紹介したいところだが、殆どはZabbix公式サイトに記載がある。
https://www.zabbix.com/jp/download?zabbix=6.0&os_distribution=centos&os_version=8&db=mysql&ws=apache
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/af6c608c-30cb-4fd0-20a7-e898dfa01889.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/b1d118e2-e4a7-bc6b-ae14-5c338c03f7fd.png)



ただ、オンプレで実施していることもありDB周りのインストールも必要となるので、
インストール完了しWebのUIが利用可能になるところまでの一連の手順を記載する。


今回の手順ではdnfを利用してインストールを行うので、まずはリポジトリの登録を行う。
一応リポジトリサイトの中身も確認しておこう。
https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/78e83d86-de44-274b-7321-9037405373b5.png)


下記は参考となるが使いたいバージョンのrpmを指定すべし。

```:Zabbixリポジトリの登録
# rpm -Uvh　https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
# dnf clean all
```


今回は公式の手順に従って下記のモジュールを入れてみる。
・zabbix-server-mysql 
・zabbix-web-mysql 
・zabbix-apache-conf 
・zabbix-sql-scripts 
・zabbix-selinux-policy 
・zabbix-agent

```:Zabbix関連モジュールとmysqlのインストール
# dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
# dnf install -y mysql-server
```

## mysqlのセットアップ
インストールが完了したらまずはmysqlの設定を実施したい。
というところで先んじてサービスの起動と自動起動の設定を入れておく。

```:mysql起動設定
# systemctl start mysqld
# systemctl enable mysqld
```

サービスが無事起動したらセットアップを開始。

```:mysqlのパスワードなどのセキュリティセットアップ
# mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                                                                           file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.

New password:
Re-enter new password:
～～～～～
```
といった感じで対話型で設定が進んでいく。
難しい設定はないが、最初にパスワードのレベル、パスワードの変更を行って、
その後にセキュリティ関係の質問が飛んでくるのでYes or Noで設定していく。
よくわからない場合はすべてYesでもとりあえずは動く。

ちなみに今回のサンプルでは検証用途の為パスワードは<font color=red>password</font>としている。

さて、セキュリティセットアップも完了したのでお次はmysqlの初期設定を実施する。

```:mysql文字コード確認
# mysql -uroot -p
password

mysql > show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8mb3                    |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
```
今回は文字コードとして「utf8mb4」を利用する為、設定値を確認する。
上記のように特に問題なければそのまま次のステップへ。
もし変更が必要なのであれば、mysql-server.cnfをイジってやってくれ。
[mysql]
default-character-set=utf8mb4
とかを追加してやれば多分大丈夫じゃないかな？


さて、ということで文字コードの確認ができたら初期設定を実施する。

```:初期DBとユーザ作成
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
```

これでZabbixというDBの作成とユーザの作成が完了。
あとはZabbixに合った形のスキーマを登録してやる。

```:スキーマ登録
zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
password
```
スキーマ登録は時間がかかるので、コンソールがしばらく応答なくても辛抱してくれ。
ここでCtrl+Cなんて押したらおしまいだ。君は後悔することになるだろう。

ということでスキーマの登録まで無事完了したらmysqlの設定は完了。
続いてZabbixServerの設定を行う。

## ZabbixServer設定
といってもコンフィグを1本かるく書き換えるだけ。
下記の部分を探して書き換える。
DBPasswordは初期だとコメントアウトしているので注意。

```:Zabbix_Server.confの編集
# vi /etc/zabbix/zabbix_server.conf

DBUser=zabbix　※Default
DBPassword=password

```
もちろんZabbix知見者ならご存知の通りだとは思うが、
ServerNameやその他設定もご自由に変更あれ。
とりあえず上記だけで動作としては問題無い。

ちなみに、今回のZabbix6からは（目玉の機能として）HAが標準搭載されている。
そのHAクラスタの設定なども本コンフィグで仕込む必要があるので気になる人は調べてみてくれ。


さて、Config編集が完了したらサービスを起動してみよう。
あとついでに自動起動設定もenableにしておこう。

```:サービス起動
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
```

これでZabbixServerの設定は完了だ。
なおAgentはServerと同居状態であれば特に設定変更なしで動作するので、
今回はAgentについての記載は特に行わない。

## Webインターフェイスから最終設定を実施
さぁここまでくればあと1歩。
サーバのIPアドレス宛に接続をしてみよう。

http://[server_ip_or_name]/zabbix

### Welcometo Zabbix 6.0
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/0706930b-5bfa-d48b-c54f-3b59c651089a.png)

基本的には次へ次へと進んでいく。
まずはPHPの適合の確認画面。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/203f3c23-122e-9153-73ba-fe2058dd1ca2.png)


続いてDBへの接続情報の入力画面となる。
ここで設定したDB・ユーザ名・パスワードを入力する。
※今回の場合は「password」となる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/6005b124-231d-c62a-7a7c-26ec49d8b036.png)


無事にDBへ接続も完了すれば見慣れたログイン画面が出てくるはずだ。
初期設定では
ユーザ:Admin
パスワード:zabbix
となっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/88032149-a3b1-0746-b044-c07bc36422e3.png)



### Congraturation!!!!!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/798830/306e610d-e858-b539-a2d8-6e7537c714ef.png)


以上でインストール全行程は完了となる。
さぁ、遊び倒そう！

## 最後に
今回はとてもベーシックなOSサーバ環境へのインストールを実施してみた。
最近SaaS型の監視サービスがかなり勢力を伸ばしてきている中ではあるが、やはりZabbix職人やコスト観点が強い企業などではまだまだZabbixは現役で生き続けると思う。
そう、ダッシュボードなぞ見ずアラートを受け取るだけの人間はZabbixで十分なのだ。
そしてアプリ屋はAPMを使いたいだろうけどインフラ屋はほぼZabbixで出来ることで満足は出来る。Zabbix万歳！


さて、Zabbix6.0は結構色々な機能が追加されているがその中でも特に「HAクラスタ」に対応したことだと思う。

DB共有型でのフロント複数台構成が取れる。
過去はDB独立型でのアクティブスタンバイ構成などが一般的で同期問題や切り替え問題など、エンタープライズ用途などで冗長化に悩まされていたユーザなどには朗報な機能だと思うのでこのあたりも試していきたい。

ただしフロントエンドに対しての機能としては一部充足されていないと聞いている（VIPなどのもたせ方や切り替わりに関する監視の仕組みなど）ので、このあたりについてはまだまだ設計というものは残っていきそうな気がする。
ただ、一般的なインフラのフロント冗長とあまり変わらないような仕組みでやっとHA構成が実現できそうなところまできたというだけでも十分な気がする。

オンプレ環境よりAWSなどのクラウドでフロントエンド複数＋RDSマルチAZ＋ELBとかで組んで見るのが一番シンプルで有用かもしれない。


ライトなアーキテクチャで実現できるようになったZabbix6.0。今後も期待できそうだ。