Help us understand the problem. What is going on with this article?

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の準備 ※成功編

エラーの原因

どうやらMySQL8からセキュリティやら文字コードまわりの変更が
あったらしく、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のサービスに限らず、今後も何かしら構築できればと考えています。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away