AWSのEC2とRDS(MySQL8)を使ってZabbix4を構築

AWSのEC2とRDS(MySQL8)を使ってZabbix4を構築:


AWSのEC2とRDS(Mysql8)を使ってZabbix4を構築


構築目的と背景

AWSの初心者がAWSに触れる機会として何か構築しようと考えました。

前職の研修でZABBIXの構築経験があり、丁度ZABBIXとMysqlが新しいバージョンがリリースされ

話題になっていたので今回の内容となりました。

せっかくのAWSなので、RDSを使ったDB外だしをしてみようと思います。

※素人なので考慮漏れがあるかもしれませんのでご指摘いただけると幸いです。


構築する構成



構成.PNG



構築手順

AWS上にVPC、Elastic IP、EC2インスタンスの準備工程は省略します。


* 1 EC2へZabbixインストール

sshを用いてEC2へログイン頂き、root権限で以下を実行して下さい。

1 Install Repository with MySQL database
rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2 Install Zabbix server, frontend, agent
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent


* 2 RDSの準備 ※失敗編

1 セキュリティグループにてDB用のものを作成。

MYSQLのサービスをZabbix構築するEC2のlocal IPもしくは

 EC2のセキュリティグループに対して許可。

2 RDSのメニューからインスタンスを作成、上記セキュリティグループと

 バージョンを8.0.11以外全部デフォルトで構築。

3 DBにログイン(EC2から以下のコマンド実行)
mysql -uroot -p -h RDSのエンドポイント

 PWを聞かれるのでRDS構築時に設定したPW入力
mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';

↑ここでエラー

MySQL8からgrantではユーザ作成ができないらしい・・・

MySQL8.0ではGRANT文でユーザを作らせない(代わりにロールがある)

Zabbix4.0+MySQL8.0の構築

仕方がないのでユーザ作成と権限付与を分けて実行
create user 'zabbix'@'%' identified by 'password';
grant all privileges on zabbix.* to zabbix@'%';
Query OK, 0 rows affected (0.10 sec)

mysql上での操作は完了したので、以下実行
mysql> quit;

mysql内にZABBIX用のDBは作成したけれど、中身が空っぽなので

必要なデータをDBに入力
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix -h RDSのエンドポイント


* 3 Zabbixのコンフィグ修正

1 zabbix_server.conf

バックアップをとっておき、
cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.backup

以下の項目を修正

・DBHost=RDSのエンドポイント

・DBPassword=password

2 zabbix.conf

バックアップをとっておき、
cp -p /etc/httpd/conf.d/zabbix.conf /etc/httpd/conf.d/zabbix.conf.backup

以下を追加
php_value date.timezone Asia/Tokyo

3 zabbixの起動と自動起動設定
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd

4 ZABBIXをwebページから初期設定

URL:http://EC2のグローバルIPアドレス/zabbix


7.png




8.png


すべてOKになっているはず
10.png


database hostをRDSのエンドポイントへ

passwordもmysqlで設定したZABBIXのパスワード

すると・・・


17-1.png



* 2 RDSの準備 ※成功編


エラーの原因

どうやらMysql 8からセキュリティやら文字コードまわりの変更が

あったらしく、MYSQLのオプションを変更しないといけないらしい。
MySQL 8.0にアップデート!注意すべき点

AWSのRDSメニューからパラメータグループを選択し、

パラメータグループの作成。

作成された後、以下の項目を変更

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

1 RDSのメニューからインスタンスを作成。

失敗編で作成したDBのセキュリティグループとバージョンを8.0.11、DBのパラメータグループを上記で作成したものを選択して作成。

2 DBにログイン(EC2から以下のコマンド実行)
mysql -uroot -p -h RDSのエンドポイント

 PWを聞かれるのでRDS構築時に設定したPW入力
mysql> create database zabbix character set utf8 collate utf8_bin;

ユーザ作成と権限付与を分けて実行
create user 'zabbix'@'%' identified by 'password';
grant all privileges on zabbix.* to zabbix@'%';
Query OK, 0 rows affected (0.10 sec)

mysql上での操作は完了したので、以下実行
mysql> quit;

mysql内にZABBIX用のDBは作成したけれど、中身が空っぽなので

必要なデータをDBに入力
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix -h RDSのエンドポイント


* 3 Zabbixのコンフィグを再度修正

1 zabbix_server.conf

以下の項目を修正

・DBHost=RDSのエンドポイント(二つ目のRDS)

・DBPassword=password

2 zabbix.conf.php

/etc/zabbix/web/zabbix.conf.phpが存在すれば
rm /etc/zabbix/web/zabbix.conf.phpにて削除

存在しなければ、次へ。

3 ZABBIXをwebページから初期設定

URL:http://EC2のグローバルIPアドレス/zabbix

4初期設定後、ログイン画面

ID:Admin

PW:zabbix

ログインし、Zabbix server is runningがYesになって入れば

構築は完了です。


躓いたポイント

・MYSQLのコマンドを叩く際に-h RDSのエンドポイントのオプションが

必要

・MYSQLのユーザにDBの権限付与がzabbix公式手順でいけない

・MYSQL8のオプション変更が必要

・MYSQLのユーザ'%'の意味


感想

躓きポイントをまとめたら、ZABBIX関係ありませんでした。

記事の入力に2時間超えていて、頭の整理とアウトプットに

こんなに時間を要するとは思ってませんでした。

AWSのサービスに限らず、今後も何かしら構築できればと考えています。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)