Zabbix5.0構築メモ(Amazon Linux 2)

# 概要
最近、Zabbixを1から構築することがなかなか無かったので、改めて導入の手順をまとめながらインストールしてみます。
AWSのEC2に5.0系のZabbixを導入する手順となります。

# 環境の決定
どんなサイズのEC2にどのバージョンのソフトウェアを入れていくかを決めます。
[サポート期間とリリースポリシー](https://www.zabbix.com/jp/life_cycle_and_release_policy) にZabbixの各バージョンのサポート期間が掲載されています。

長く運用する場合は、現時点では「LTS(long-term support)」の Zabbix 5.0 にしておくのが良さそうです。
今回は社内で検証のために立てるのですが、Zabbix 5.0 を入れることにします。

導入するバージョンが決まったらシステム要件を確認します。
インストールマニュアルの「2 Requirements」を確認します。
以下は、5.0用のページです。
https://www.zabbix.com/documentation/5.0/en/manual/installation/requirements
（URLのバージョン表記部分を変えると他のバージョンのページも見れます）
「Examples of hardware configuration」の部分でハードウェアの構成例が、「Required software」の部分でDB・Webサーバ・PHPの必須要件が書かれています。

今回は、以下バージョンで構築しました。

```
EC2：Amazon Linux 2 AMI (HVM)、インスタンスタイプはt3.micro（社内検証用のためスペック低め）
Zabbix：5.0.18
Apache：Apache/2.4.51
DB：MariaDB 5.5.68
PHP：7.2.24
```

# Zabbixサーバ構築
## AWSでインスタンスの立ち上げ
- OS、インスタンスタイプを選択します。今回は検証用なのでt3.microですが、普通に監視用として立てるなら少し非力なのでsmall以上がいいと思います。

- ネットワーク、サブネットは各自の環境に合わせて設定します。

- ストレージは今回は検証用なのでデフォルトの8GBのままにします。ちゃんと立てる場合は監視するホスト数と監視データの保持期間にもよりますが、8GBだと少し心もとないので増やすことが多いです。

- セキュリティグループをZabbix用に一つ作ります。Web管理画面にアクセスする環境からのHTTPまたはHTTPSのポートを許可しておくことと、監視対象サーバが決まっている場合はそのサーバからの10051番ポートからのアクセスを許可しておきます。
- キーペアの設定or選択も各自の環境に合わせて設定します。新しくキーを作成した場合はファイルをダウンロードし、しっかり管理しましょう。

## 各ソフトウェアのインストール、設定
IPが割り当てられ、インスタンスが立ち上がってきたらもろもろ設定していきます。
`ssh -i "キーファイルパス" ec2-user@IPアドレス` でアクセスして `sudo su -` しておきます。

タイムゾーン設定

```
# timedatectl set-timezone Asia/Tokyo
```

設定後 `timedatectl` や `date` コマンドで確認します。

### Zabbixの導入と設定
Zabbix LLCのリポジトリを登録します。

```
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all
```

Zabbixサーバとエージェントをインストールします。

```
# yum install -y zabbix-server-mysql zabbix-agent
```

SCLリポジトリを追加します。
公式インストールマニュアルの Red Hat Software Collections を使うやり方だと、rh-php72-php系がうまくはいらなかったので、centos-release-scl-rh を追加しました。

```
# rpm -Uvh http://mirror.centos.org/altarch/7/extras/aarch64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
# rpm -Uvh http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
```

zabbix-frontendリポジトリを有効化します。
`/etc/yum.repos.d/zabbix.repo` を編集し、[zabbix-frontend]ブロックのenabledを1にしておきます。

```
[zabbix-frontend]
enabled=1
```

Zabbixフロントエンドパッケージをインストールします。

```
# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl zabbix-web-japanese
```

### DBのインストール・設定
MariaDBをインストールします。

```
# yum install -y mariadb mariadb-server
# systemctl start mariadb
```

MariaDBの初期設定を進めます。（対話式）

```
# mysql_secure_installation

Enter current password for root (enter for none): 空のままenterを押す
Set root password? [Y/n] Y
New password: (rootユーザのパスワードを設定 )
Re-enter new password: (rootユーザのパスワードを再入力 )
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
```

設定が終わったらアクセスします。

```
# mysql -uroot -p
(先程設定したrootユーザのパスワードを入力 )
```

以下を実施し、Zabbix用のデータベースとユーザーを作成＆権限設定します。

```
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by '{zabbixのDBPasswordを決めて入力}';
grant all privileges on zabbix.* to zabbix@localhost;
quit;
```

初期データを流し込みます。

```
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
(zabbixのDBPassword入力を求められるので入力)
```

Zabbixの設定ファイル `/etc/zabbix/zabbix_server.conf` を更新します。

```
DBPassword={zabbixのDBPasswordを入力}
```

Zabbixのタイムゾーン設定（Zabbix本社のあるラトビアのリガがデフォルトタイムゾーンになってるので東京に変えます）
 `/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf` を編集します。

```
php_value[date.timezone] = Asia/Tokyo
```

すべての設定後、サービス再起動。

```
# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm mariadb
```

自動起動も設定。

```
# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm mariadb
```

WebアクセスしてWeb UI上での設定に進みます。
`http://{IPアドレス}/zabbix/`

![スクリーンショット 2021-12-05 18.37.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128331/77b91b83-69ae-2880-6a5e-482803135324.png)


設定した内容の確認をしていきつつ基本は[Next step]を押していきます。
1箇所、Configure DB connection画面で先程設定した zabbixのDBPassword をPassword欄に入力します。
設定完了後、 Zabbix管理画面に Admin / zabbix でログインします。
（ちゃんと運用する際にはAdminのパスワードも変更しましょう）

左メニューの「User settings」からLanguageを「Japanese(ja_JP)」にすることで日本語表示されます。

![スクリーンショット 2021-12-05 18.36.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128331/edda6460-4232-c6d1-5fde-a6173e10595b.png)


# 監視される側のサーバの設定
ここからはZabbixに監視されるサーバ側の設定になります。

## Zabbixエージェントインストール
Zabbixのyumリポジトリの登録(導入するバージョンはサーバに応じて調整)

```
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.9-1.el7.x86_64.rpm  
```

インストール、起動、自動起動設定

```
# yum install -y zabbix-agent
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
```

監視されるサーバの  `/etc/zabbix/zabbix_agentd.conf` を修正します。

```
Server={ZabbixサーバのIP}
ServerActive={ZabbixサーバのIP}
Hostname={監視されるサーバのホスト名称(Zabbixサーバの管理画面上でも使われる)を記載}
```

エージェントを再起動します。

```
# systemctl restart zabbix-agent
```

## Zabbixサーバの管理画面でホストを登録する
Zabbix管理画面で設定 ＞ ホストから、監視される側のサーバをホスト登録します。


# おまけ
とりあえずZabbixサーバからメール通知をさせておきたい時に、Postfixを利用してGmailにリレーする手順を載せておきます。
※GmailにリレーするためにはGoogleアカウントの [セキュリティ設定](https://myaccount.google.com/security) にて、「安全性の低いアプリのアクセス」を「有効」にしておく必要があるので、本格的に運用する際のやり方としてはおすすめしません。

## postfixの設定
postfix、amazon linux2だとインストールされていると思いますが入っていない場合はyumで入れます。

```
# yum install -y postfix
```

SMTP認証用に以下も導入します。

```
# yum install -y cyrus-sasl-plain cyrus-sasl-md5
```

postfixの起動と自動起動

```
# systemctl start postfix
# systemctl enable postfix
```

`/etc/postfix/main.cf` を編集。以下のように設定。

```
myhostname = localhost
mydomain = localhost
```

また、Gmail用の設定を末尾に追記します。

```
# gmail
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
```

SMTP認証の設定 `/etc/postfix/sasl_password` に以下を記載します。（リレーに使うアカウントを設定）

```
[smtp.gmail.com]:587    {accoount@gmail.com:password}
```

パーミッション調整。

```
# chmod 600 /etc/postfix/sasl_password
```

dbファイルの生成。

```
# postmap hash:/etc/postfix/sasl_password
```

設定を反映します。

```
# systemctl restart postfix
```

テストメールをサーバから送信してみます。

```
# yum install -y mailx
# echo "This is Test Mail." | mail -s "test mail from test server." {自分のメールアドレス}
```

## Zabbix管理画面側の設定
管理 ＞ メディアタイプ ＞ メディアタイプの作成 から、設定したメール送信設定を利用したメディアタイプを追加します。

```
タイプ：メール
SMTPサーバー：localhost
SMTPサーバーポート番号：25
SMTP helo：localhost
送信元メールアドレス：{任意のアドレス}
接続セキュリティ：なし
認証：なし
メッセージフォーマット：プレーンテキスト
```

管理 ＞ メディアタイプの一覧から追加したメディアタイプの行の右側「テスト」を押してテスト送信が可能です。