AWSでZabbixを作成する際の注意点

#はじめに
[AWSのEC2とRDSを利用してZabbix4.2を導入する](https://qiita.com/yuichi1992_west/items/6c81a0e69ea9e7e86d83)を参照しながら作成したが、当方が初心者のため一部詳細が書かれていない箇所でどうやったらいいのか戸惑ったり、Macを使っているので一部作業内容が違った。
そのため本項でその点を補足しつつ、説明していきたい。
（すでに作成したため、初めて作成する場合と画像が一部異なる可能性がございますが、ご了承ください。）

#手順
##AWS側の設定
###セキュリティグループの作成
VPC＞セキュリティグループ＞セキュリティグループを作成をクリックする。
<img width="1104" alt="スクリーンショット 2020-08-10 12.23.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/4b8c7879-4b33-7b4d-305e-11804c840a98.png">
セキュリティグループ名、説明を入力する。今回は「security-sg」とする。
VPCは今回デフォルトのものとする。
 
<img width="1039" alt="スクリーンショット 2020-08-10 12.28.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/b1b6f30f-ec08-a645-2260-42aa3f56d820.png">
インバウンドルールやアウトバウンドルールはそのままで「セキュリティグループを作成」を押す。
<img width="1043" alt="スクリーンショット 2020-08-10 12.30.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/58f31082-cec2-2c80-e1c1-6f052a2841d8.png">
セキュリティグループで先ほど作成したものをチェックを入れて、下のインバウンドルールをクリック。画像のようなインバウンドルールになるように「インバウンドルールを編集をクリック」する。（あらかじめ作成しているので、すでに入っている状態ですが、本来はこの時点ではインバウンドルールは空です。）
<img width="820" alt="スクリーンショット 2020-08-10 12.34.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/fa91df71-7089-b196-c8c1-32ffc71421eb.png">
インバウンドルールを編集で、以下のように編集していく。

|タイプ  |ポート範囲 |ソース  |説明|
|---|---|---|---|
|HTTP  |80  |マイIP  |http|
|SSH  |22  |マイIP  |ssh|
|カスタムTCP  |10051  |先ほど作ったセキュリティグループ |Zabbix agent-Zabbix server|
|MYSQL/Aurora  |3306  |先ほど作ったセキュリティグループ  |MySQL|
|カスタムTCP  |10050  |先ほど作ったセキュリティグループ  |Zabbix server-Zabbix agent|
|HTTPS  |443  |マイIP  |https|

追加できたら「ルールの保存」を押す。
(セキュリティグループを作成した直後だと保存できないことがあるため、うまくいかなかったら少し時間をおいてやると保存できる。)

###EC2の作成
EC2>「インスタンスの作成」をクリック。
<img width="820" alt="スクリーンショット 2020-08-10 12.34.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/fca232d7-5501-974b-3f52-6cbe6774002b.png">
「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択する。
<img width="1268" alt="スクリーンショット 2020-08-10 16.38.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/292d48ba-9a45-c2db-efbe-11c1899f73e6.png">
インスタンスタイプを選択。特にこだわりなければ、無料利用枠の対象のものを選ぶ。「次のステップ：インスタンスの詳細の設定」を押す。
<img width="1271" alt="スクリーンショット 2020-08-10 16.39.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/0852967c-d2ec-d926-4b40-4650946244e3.png">
インスタンス数は2、ネットワークはセキュリティルールで設定したVPCを選択。
（今回はデフォルトとする。）「次のステップ：ストレージの追加」ボタンを押す。
<img width="1288" alt="スクリーンショット 2020-08-10 17.35.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/70d78165-35c7-ef9f-8b7b-ef0763a2dc06.png">
特にこだわりがなければデフォルトのままで、「次のステップ：タグの追加」をクリックする。
<img width="1275" alt="スクリーンショット 2020-08-10 17.39.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/e349581e-d67d-92e3-4f1b-65ac40e182aa.png">
タグの追加の必要がなければ、「次の手順：セキュリティグループの設定」を押す。
<img width="1272" alt="スクリーンショット 2020-08-10 17.41.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/9a82f9c5-adda-e438-6ad7-2bbedd243a6e.png">
「既存のセキュリティグループを選択する」で先ほど作成したセキュリティグループを選択し、「確認と作成」を押す。
<img width="1275" alt="スクリーンショット 2020-08-10 17.57.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/b2ff9c78-02b4-03f1-ae42-ab733b768690.png">
インスタンス作成の確認で内容を確認し、「起動」を押す。
<img width="1278" alt="スクリーンショット 2020-08-10 18.15.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/2d959ee2-56d4-862c-16d6-05511491a931.png">
既存のキーペアを選択するか、新しいキーペアを作成する。完了したらインスタンスの作成を押す。
<img width="734" alt="スクリーンショット 2020-08-10 18.17.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/715d8e04-c4e7-4a9c-6063-bac376a49b1c.png">

EC2のインスタンスの画面に戻り、作成できたか確認する。

###RDSの作成
RDS＞データベースの作成を押す。
「データベース作成方法を選択」＞「標準作成」を押す。
<img width="803" alt="スクリーンショット 2020-08-10 18.27.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/18221c8f-afc2-dd52-ecc4-9af73c077346.png">

「エンジンのオプション」から下記の項目を選択する。

エンジンのタイプ : MySQL
バージョン: MySQL 5.7.26

<img width="828" alt="スクリーンショット 2020-08-10 18.28.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/10684c5e-3c0d-eca3-a1e1-ac2237dd1209.png">
「テンプレート」＞「無料利用枠」を押す。
<img width="858" alt="スクリーンショット 2020-08-10 18.28.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/cb10d90c-0ef9-dbf3-0214-ec8a4794eca2.png">
「設定」から下記の項目を入力する。

DBインスタンス識別子 : (AWSコンソール上で表示される名前)
マスターユーザー名 : (MySQLのログインユーザー名)
マスターパスワード : (MySQLのパスワード)
<img width="832" alt="スクリーンショット 2020-08-10 18.34.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/5e41d9f0-a481-62ef-94b9-717dcf6204f8.png">
DB インスタンスサイズはデフォルトの「db.t2.micro」を選択する。（無料利用枠だとdb.t2.microしか選択できないようだ。）
<img width="801" alt="スクリーンショット 2020-08-10 18.36.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/0f041b88-6bd7-e309-55cc-926642562a66.png">
「ストレージ」から下記のように設定する。
・ストレージタイプ：「汎用（SSD)」
・ストレージ割り当て：２０
・ストレージの自動スケーリングを有効にする：チェックを外す
<img width="837" alt="スクリーンショット 2020-08-10 18.37.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/3b92bfdc-fcc1-b6db-b02f-4cb65ef13d0a.png">
「接続」でセキュリティグループで設定したVPCを選択する。（今回はデフォルトを選択する。）
<img width="829" alt="スクリーンショット 2020-08-10 18.43.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/b71da9e1-ceb8-2421-b188-be772192e088.png">
内容を確認し、「データベースの作成」を押す。
<img width="833" alt="スクリーンショット 2020-08-10 18.51.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/96fde3d9-a5a3-5cee-9500-fa1b958f85e9.png">

##Zabbix Server側の設定
今回はMacのterminalでインスタンス接続を行う。

EC2を作成した際に作った鍵の置き場所とEC２のインスタンスの説明でIPv4 パブリックIPを確認して、ssh接続を行う。

```
ssh -i  鍵の置き場所 ec2-user@IPv4 パブリックIP
```

###Zabbixのインストール
yumのパッケージをアップデートする。

```
$ sudo yum -y update
```

永続的にSELinuxを無効化する。

```
$ sudo vi /etc/selinux/config
SELINUX=disabled
$ sudo reboot
(getenforceコマンドでdisabledになったか確認できる。)
```

Zabbix4.2のリポジトリをインストールする。

```
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm
```

zabbix-server-mysql,zabbix-web-mysql,zabbix-web-japanese,zabbix-agentをインストールする。

```
$ sudo yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
```

###MySQLの設定
MySQLクライアントをインストールする。

```
$ sudo yum -y install mysql mysql-devel
```

RDSに接続する。

```
$ sudo mysql -h RDSのエンドポイント -P 3306 -u マスターユーザ名 -p
```

Zabbixのデータベースを作成する。

```
> create database zabbix character set utf8 collate utf8_bin;
```

Zabbixユーザを作成する。

```
> grant all on zabbix.* to zabbix@`%` identified by 'パスワード';
```

MySQLからログアウトする。

```
> quit;
```

Zabbixの初期データを登録する。

```
$ sudo zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -h RDSのエンドポイント -P 3306 -u マスターユーザ名 -p zabbix
```

/etc/zabbix/zabbix_server.confにDB情報を登録する。

```
$ sudo vi /etc/zabbix/zabbix_server.conf
DBHost=RDSのエンドポイント
DBPassword=RDSのパスワード
```

zabbix-serverの起動・自動起動を設定する。

```
$ systemctl start httpd
$ systemctl enable httpd
$ systemctl start zabbix-server
$ systemctl enable zabbix-server
```

###Zabbixの設定
ブラウザにて「http://(インスタンスのIPv4 パブリックIP)/zabbix」に接続する。
「Welcome to Zabbix 4.2」表示されたら、「Next step」を押す。
<img width="656" alt="スクリーンショット 2020-08-10 19.22.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/f4b677d3-a252-7248-434e-e46c541c69d1.png">
以下の画面ですべてOKになってるか、確認する。NGになっている箇所があった場合は表示されるメッセージに従い修正。
私の場合はdata.timezoneでNGになっていたので、[zabbix インストール時のTimezone for PHP is not set. Please set "date.timezone" option in php.ini.](http://comp.senseofwonder.org/2009/05/200905291334.html)の記事を参考にして修正した。
全てOKになったら、「Next Step」を押す。
<img width="659" alt="スクリーンショット 2020-08-10 19.25.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/86ea786f-4c4c-c13b-4e20-d3669b73d258.png">

「Configure DB connection」にて下記の項目を入力し「Next step」を押す。

Database host : (RDSのエンドポイント)
Password : (zabbixユーザのパスワード)
<img width="662" alt="スクリーンショット 2020-08-10 19.30.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/17b3b380-33c9-43ae-54fa-b6d7f113cec0.png">

「Zabbix server details」にてデフォルトのままで「Next step」をクリックする。
<img width="658" alt="スクリーンショット 2020-08-10 19.36.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/34d65d93-7e1c-1dec-7df0-c544b8dad936.png">
「Pre-installation summary」にて正しい設定値であることを確認し、「Next step」を押す。
<img width="663" alt="スクリーンショット 2020-08-10 19.36.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/359d2ca2-44f0-5679-92e7-e291b3c8198f.png">
「Install」にて下記のように表示されたら無事インストールできたので、「Finish」を押す。
<img width="646" alt="スクリーンショット 2020-08-10 19.40.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/bcb14401-f2ee-c457-023f-04e45daa5b26.png">

usernameとpasswordを入力し、ログインする。初期状態で設定されているユーザーは、usernameが「Admin」、Passwordが「zabbix」。
<img width="348" alt="スクリーンショット 2020-08-10 20.50.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/8cf41334-e355-f581-73ee-d49e5f5041b1.png">
ダッシュボードが表示される。
<img width="676" alt="スクリーンショット 2020-08-10 20.52.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/ee11d6ee-7879-b497-6691-51b0ba035755.png">

「Zabbix agent on Zabbix server is unreachable for 5 minutes」の警告を消すためにzabbix-agentを起動する。

```
$ sudo systemctl start zabbix-agent
$ sudo systemctl enable zabbix-agent
```

###Zabbixの日本語化設定
右上のユーザーのマークをクリックし、「ユーザープロファイル: Zabbix Administrator」で言語を日本語に変更。「更新」ボタンを押す。
<img width="1148" alt="スクリーンショット 2020-08-10 20.58.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/29a866f3-4dad-7132-c59a-f09a5e5e1490.png">

##Zabbix Agent側の設定
Zabbix Server側の設定方法を参考にして、2台目のEC2インスタンスにTerminalでログインする。

アップデート可能な全パッケージをアップデートする。

```
$ sudo yum -y update
```

永続的にSELinuxを無効化する。（ちなみに私の場合はzabbix-erverで無効化したら、後はdisabledになっていて特に変更する必要がなかった。）

```
$ sudo vi /etc/selinux/config
SELINUX=disabled
$ sudo reboot
(getenforceコマンドでdisabledになったか確認できる。)
```

Zabbix4.2のリポジトリをインストールする。

```
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm
```

zabbix-agentをインストールする。

```
$ sudo yum install -y zabbix-agent
```

/etc/zabbix/zabbix_agentd.confにZabbix Server側のIPアドレスを入力する。

```
$ sudo vi /etc/zabbix/zabbix_agentd.conf
Server=(Zabbix Server側のIPアドレス)
ServerActive=(Zabbix Server側のIPアドレス)
```

zabbix-agentの起動・自動起動を設定する。

```
$ sudo systemctl start zabbix-agent
$ sudo systemctl enable zabbix-agent
```

###Zabbix(GUI)でZabbix Agentの登録
設定＞ホスト＞ホストの作成を押す。
<img width="1156" alt="スクリーンショット 2020-08-10 21.08.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/f5daabd3-acc1-6ba3-c277-49cfea6302cd.png">

下記の項目を入力し「テンプレート」を押す。

ホスト名 : (分かりやすい名前を入力)
表示名 : (分かりやすい名前を入力)
グループ : Linux servers
IPアドレス : (Zabbix Agent側のIPアドレスを入力)

<img width="1071" alt="スクリーンショット 2020-08-10 21.09.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/1d3a87fd-858b-2e5c-9f5e-d2eb01c2f646.png">
「新規テンプレートをリンク」で「Template OS Linux」を検索し、２つある追加ボタンのうちの上のボタンをクリック。「テンプレートのリンク」に追加されたら、下の「追加」ボタンを押す。
<img width="1064" alt="スクリーンショット 2020-08-10 21.10.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/964eca54-a319-929b-31c5-e34c4f4d7f35.png">
「ホストを追加しました」と表示されたら、監視データ＞グラフを押す。
右上の「グラフ」で「CPU jumps」を選択すると、グラフが表示される。
<img width="1134" alt="スクリーンショット 2020-08-10 21.37.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449478/50483455-9e18-c36f-0793-cae6e10b4144.png">

#エラーが出たら
最初に作成した時、System informationが表示されなかった。
Zabbix Server側の原因の場合下記のようにファイルのメッセージを確認すると原因が特定できる場合がある。

```
vi /var/log/zabbix/zabbix_server.log
```

そうすると私の場合下記のようなメッセージが表示された。

```
 Connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES)
```


Zabbix Serverの設定において`/etc/zabbix/zabbix_server.conf`のDBPasswordに設定したパスワードとMySQLのzabbixデータベースに設定したパスワードがどうやら一致しないようだ。パスワードの不一致が解決せず、結局作り直した。

下記URLに詳しいトラブルシュート等が載せられている。
https://www.atmarkit.co.jp/ait/articles/0909/29/news103_4.html

#注意点のまとめ
・最初にセキュリティグループの基本的な詳細のみ入力して作成し、その後インバウンドルールを追加する。（作成したセキュリティグループを使用できるので、混乱が少なかった。）
・MacとWindowsでssh接続の仕方が違う。
・data.timezoneでNGが出るので、適宜修正する。
・グラフの種類を指定しないと、表示されないので注意。
・Zabbix Server側でエラーが発生したら、`vi /var/log/zabbix/zabbix_server.log`でファイルのメッセージを確認すると良い。