【AWS】AmazonLinuxにてZabbixマネージャー構築(OS側設定)

# はじめに
[【AWS】AmazonLinuxにてZabbixマネージャー構築(AWS側設定)](https://qiita.com/satton6987/items/b527af48e7f751e77714)の続きになります。
AmazonLinuxでのZabbixマネージャーの構築方法についてアウトプットしていきたいと思います。
(今回は、OS設定のみアウトプットとします。)

# 自宅環境

|  項目  |  説明  |
| ---- | ---- |
|  自宅PC　|  Windows10  |
|  ターミナル  |  TeraTerm  |

# 基盤環境

|  項目  |  説明  |
| ---- | ---- |
|  OS  |  Amazon Linux 2 AMI (HVM), SSD Volume Type  |
| Size | t2.large |
|  DB  |  MySQL 5.7.26  |

**※DBはRDSを外付け**
※AWSのベストプラクティスに沿って、作業用IAMユーザーにて作業
(ルートユーザーには多要素認証設定済み)

# 構成図

![Zabbix構築 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/da651eea-1a6d-e24c-7748-83822aa881c7.png)



※RDSの仕様上、AZが2つ必要であるため、サブネットを2つ作成しています。

# 手順

## 準備

- RDS(MySQL 5.7.26)を事前に作成しておく
- Zabbixマネージャーにターミナルソフトにてログインしておく

## OS設定

### (a).ルート権限にスイッチ

```bash
sudo su
```

###(b).アップデート

```bash
yum -y update
```

### (c).ホスト名変更

```bash
hostnamectl set-hostname zbxmgr
```

### (d).NTP確認・設定

#### 「Amazon Time Sync Service」設定確認

①rootユーザーへ移行する。

```bash
[ec2-user@ip-192-168-8-74 ~]$ sudo su
[root@ip-192-168-8-74 ec2-user]#
```

②`chrony`パッケージが存在することを確認

```bash
[root@ip-192-168-8-74 ec2-user]# rpm -qa | grep chrony
chrony-3.2-1.amzn2.0.5.x86_64
[root@ip-192-168-8-74 ec2-user]#
```

③`/etc/chrony.conf`を確認

`server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4`の一文が存在することを確認

```bash
[root@ip-192-168-8-74 ec2-user]# cat /etc/chrony.conf | grep server
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
# Use public servers from the pool.ntp.org project.
[root@ip-192-168-8-74 ec2-user]#
```

④`chronyd`起動&自動起動設定確認

- `chronyd`起動確認

`active (running)`になっていること。

```bash
[root@ip-192-168-8-74 ec2-user]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-06-21 13:48:40 UTC; 9min ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 2699 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 2680 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2687 (chronyd)
   CGroup: /system.slice/chronyd.service
           mq2687 /usr/sbin/chronyd

Jun 21 13:48:40 localhost systemd[1]: Starting NTP client/server...
Jun 21 13:48:40 localhost chronyd[2687]: chronyd version 3.2 starting (+CMDM...)
Jun 21 13:48:40 localhost systemd[1]: Started NTP client/server.
Jun 21 13:48:46 ip-192-168-8-74.ap-northeast-1.compute.internal chronyd[2687]: ...
Hint: Some lines were ellipsized, use -l to show in full.
[root@ip-192-168-8-74 ec2-user]#
```

- `chronyd`自動起動確認

`enabled`になっていること

```bash
[root@ip-192-168-8-74 ec2-user]# systemctl is-enabled chronyd
enabled
[root@ip-192-168-8-74 ec2-user]#
```

⑤時刻同期確認

`chrony`が`169.254.169.123`を使用して時刻を同期させていることを確認。
※`*`になっていれば、時刻同期ができている。

```bash
[root@ip-192-168-8-74 ec2-user]# chronyc sources -v
210 Number of sources = 5

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.123               3   4   377     1  -1396ns[-2259ns] +/-  535us　←　こちらの部分
^- x.ns.gin.ntt.net              2   6   377    40   +382us[ +388us] +/-   72ms
^- ntp-a2.nict.go.jp             1   6   377    39   +549us[ +554us] +/- 1604us
^- li1885-23.members.linode>     2   6   377    39   +615us[ +620us] +/-   28ms
^- ntp.arupaka.net               2   6   255    39  -2267us[-2262us] +/-  103ms
[root@ip-192-168-8-74 ec2-user]#
```
<br>
※こちらでも確認可能です。

```bash
[root@ip-192-168-8-74 ec2-user]# chronyc tracking
Reference ID    : A9FEA97B (169.254.169.123)
Stratum         : 4
Ref time (UTC)  : Sun Jun 21 14:03:54 2020
System time     : 0.000002454 seconds fast of NTP time
Last offset     : +0.000000805 seconds
RMS offset      : 0.000004196 seconds
Frequency       : 12.523 ppm fast
Residual freq   : +0.001 ppm
Skew            : 0.076 ppm
Root delay      : 0.000405045 seconds
Root dispersion : 0.000289323 seconds
Update interval : 16.1 seconds
Leap status     : Normal
[root@ip-192-168-8-74 ec2-user]#
```

#### 日本語設定方法

①事前確認

時刻がUTC表記となっていることを確認

```bash
[root@ip-192-168-8-74 ec2-user]# date
Sun Jun 21 14:05:48 UTC 2020
[root@ip-192-168-8-74 ec2-user]#
```


②インスタンスで使用する時間帯を確認

`Japan`が存在することを確認

```bash
[root@ip-192-168-8-74 ec2-user]# ls /usr/share/zoneinfo/ | grep Japan
Japan
[root@ip-192-168-8-74 ec2-user]#
```

③clockファイルの変更

```bash
vim /etc/sysconfig/clock
```

- 変更前

```bash
[root@ip-192-168-8-74 ec2-user]# cat /etc/sysconfig/clock
ZONE="UTC"
UTC=true
[root@ip-192-168-8-74 ec2-user]#
```

- 変更後

```bash
[root@ip-192-168-8-74 ec2-user]# cat /etc/sysconfig/clock
#ZONE="UTC"
ZONE="Japan"
UTC=true
[root@ip-192-168-8-74 ec2-user]#
```

④時間帯ファイルにシンボリックリンクの作成

インスタンスが現地時間情報を参照する際に、時間帯ファイルを読み込むためシンボリックリンクを貼る。

```bash
[root@ip-192-168-8-74 ec2-user]# ln -sf /usr/share/zoneinfo/Japan /etc/localtime
[root@ip-192-168-8-74 ec2-user]# ll /etc/localtime
lrwxrwxrwx 1 root root 25 Jun 21 23:10 /etc/localtime -> /usr/share/zoneinfo/Japan
[root@ip-192-168-8-74 ec2-user]#
```


###(e).SELinux無効化確認

```bash
[root@ip-192-168-5-129 ec2-user]# getenforce
Disabled
[root@ip-192-168-5-129 ec2-user]#
```

###(f).再起動

```bash
reboot
```

###(g).時間確認

日本時間になっていること。

```bash
[ec2-user@ip-192-168-8-74 ~]$ date
Sun Jun 21 23:12:15 JST 2020
[ec2-user@ip-192-168-8-74 ~]$
```

## Zabbixパッケージインストール

###(a).Zabbix4.2のリポジトリをインストール

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

###(b).Zabbix4.2関連のパッケージをインストール

```bash
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
```

###(c).`php.ini`のタイムゾーン設定

- 事前ファイルバックアップ

```bash
cp -p /etc/php.ini /etc/php.ini_20200624
```
<br>
- 設定ファイル編集

```bash
vim /etc/php.ini
```

※878行目付近になります。

**変更前**

```bash
;date.timezone =
```

**変更後**

```bash
date.timezone = Asia/Tokyo
```
<br>
- `diff`にてバックアップファイルと比較

```bash
[root@zbxmgr ec2-user]# diff /etc/php.ini /etc/php.ini_20200624
878c878
< date.timezone = Asia/Tokyo
---
> ;date.timezone =
[root@zbxmgr ec2-user]#
```

## MySQLインストール・設定

### (a).MySQLクライアントのインストール

```bash
yum -y install mysql mysql-devel
```

**※既にインストール済みであれば不要**

### (b).RDSへ接続

```bash
mysql -h RDSのエンドポイント -P 3306 -u ユーザ名 -p
```

**実行例**

```bash
[root@zbxmgr ec2-user]# mysql -h test-zabbix-1.cfwpl4233294.ap-northeast-1.rds.amazonaws.com -P 3306 -u zabbix -p
Enter password:　← RDS作成時に設定したパスワードを入力
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 28
Server version: 5.7.26-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>
```
### (c).Zabbixデータベース/Zabbixユーザーの作成

- Zabbixのデータベースを作成

```bash
MySQL [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]>
```

- Zabbixのユーザーの作成

```bash
grant all on zabbix.* to <DBのユーザー>@`%` identified by '<DBのパスワード>';
```

**実行例)**

```bash
MySQL [(none)]> grant all on zabbix.* to zabbix@`%` identified by 'P@ssw0rd';
Query OK, 0 rows affected, 1 warning (0.00 sec)

MySQL [(none)]>
```

- MySQLから抜ける

```bash
MySQL [(none)]> quit;
Bye
[root@zbxmgr ec2-user]#
```

### (d).Zabbixの初期データを登録する。

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

**実行例)**

```bash
[root@zbxmgr ec2-user]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -h test-zabbix-1.cfwpl4233294.ap-northeast-1.rds.amazonaws.com -P 3306 -u zabbix -p zabbix
Enter password: ←「Zabbixユーザーの作成」で設定したパスワード
[root@zbxmgr ec2-user]#
```

### (e).DB情報登録

- ファイルバックアップ

```bash
cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf_20200624
```

- ファイル修正

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

- `diff`にて比較

```bash
[root@zbxmgr ec2-user]# diff /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf_20200624
91c91
< DBHost= test-zabbix-1.cfwplijf9ni4.ap-northeast-1.rds.amazonaws.com
---
> # DBHost=localhost
124c124
< DBPassword=P@ssw0rd
---
> # DBPassword=
[root@zbxmgr ec2-user]#
```


### (f).zabbix-server/httpdの起動・自動起動

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

## Zabbix Agent起動・自動起動設定

```bash
systemctl start zabbix-agent
systemctl enable zabbix-agent
```

## ZabbixのGUI接続

### (a)ブラウザにて「http://(インスタンスのパブリックIP)/zabbix」へ接続

下記の画面が表示されることを確認。「Next Step」をクリック。

![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/ff1ea6d8-d3c6-2bf5-b787-b7d0eff2c405.jpeg)

### (b)Check of pre-requisites

![2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/9b2a8b88-80d2-ac3d-d9bf-0058ec7ed8de.jpeg)

### (c)DB情報入力

赤枠に必要な情報を入力

|  項目  |  設定値  |
| ---- | ---- |
|  Database host　|  RDSのエンドポイント  |
|  User  |  DBのユーザー  |
|  Password  |  DBのパスワード  |

※DBのユーザー/DBのパスワードは**「(c).Zabbixデータベース/Zabbixユーザーの作成」**で設定したもの

![4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/afa19150-990c-9ae0-c71a-f3687b0c18a8.jpeg)

### (d)　Zabbix server details

そのまま「Next step」をクリック

![5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/0185878b-9283-65bd-b1c0-9a4062665292.jpeg)

### (e) Pre-installation summary

そのまま「Next step」をクリック

![6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/ad386165-4daa-49df-b13e-7c8266274535.jpeg)

### (f) インストール完了画面

下記のような画面が表示されることを確認。「Finish」をクリック。

![7.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/ed482902-feb3-3d36-53d7-c6f69359d2f2.jpeg)

### (g) ログイン画面

下記情報を入力し、Sign-in実施

|  項目  |  設定値  |
| ---- | ---- |
|  初期ユーザ　|  Admin  |
|  初期パスワード|  zabbix  |


![9.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/5cb3ad1b-0f21-7484-64a3-3a818964057e.jpeg)

### (h) Zabbix管理画面表示確認

下記画面が表示されることを確認。

![10.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/19455c55-5984-6912-4e92-95c7deb6c2af.jpeg)

# 備考

今回はOS設定のみアウトプットしました。
時間を作って、AWS側設定/Zabbix監視設定もアウトプットしたいと思います。
(私のブログにZabbix構築総集編も作成する予定です。)

# 参考
[【AWS】AmazonLinuxのNTP設定確認&日本語時刻設定方法](https://qiita.com/satton6987/items/a20bcb9f983d474588b5)
[zabbix インストール時のTimezone for PHP is not set. Please set "date.timezone" option in php.ini.](http://comp.senseofwonder.org/2009/05/200905291334.html)