[Zabbix4]Zabbix-Serverインストール手順(centos7.5, RDS for MySQL）

# 概要

- Zabbix4.0(LTD)サーバをCentos7.5に導入しました。
- データベースはリモートにあるMySQLです。
- 公式手順だけでは問題が２つ（動作しない＆セキュリティリスク）ありました。この対処方法を共有するのがこの記事の目的です。
- 【問題1】指定したデータベースのURLが設定ファイル～zabbix-server.conf～のDBHostに反映されないためエラー(Zabbixサーバ動作していません)が発生する。[手動で設定](#%EF%BD%84%EF%BD%82%E3%83%9B%E3%82%B9%E3%83%88%E8%A8%AD%E5%AE%9A)します。
- 【問題2】Zabbixをインストールすると既定のURL（/zabbix）で既定のパスワード(zabbix)で管理者アカウント(Admin)が作成されてしまって危険（＝誰でも管理者ログインできてしまう）なので[管理者アカウントのパスワードを修正](#%E7%AE%A1%E7%90%86%E8%80%85%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E5%A4%89%E6%9B%B4)します。

# インストール手順

前提としてhttpdがインストール済であるとします。

## リポジトリURL取得

[公式サイト](https://www.zabbix.com/jp/download)で導入するZabbixバージョンやＯＳ・バージョン、使用するデータベースを選択して、zabbix用リポジトリURLを取得する。

![](https://i.gyazo.com/16e8c4e0b49aa942300bba536924a4a7.png)

## リポジトリインストール

取得したリポジトリをインストールします。以下は Zabbix4、CentOS7、MySQL用のリポジトリです。

```
# rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
```

## Zabbix本体インストール（サーバ、エージェント、MySQLアダプタ）

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

## データベース設定（ユーザ作成、データベース作成、権限付与）

公式サイトでは　all privileges 権限を付与していますが、RDSの場合は設定できないので以下のようにします。([MySQLで提供される権限](https://dev.mysql.com/doc/refman/5.6/ja/privileges-provided.html)のうちインスタンス全体にまたがる権限以外のすべてを付与してます。)

```SQL
# ユーザ作成
CREATE USER 'zabbix'@'%';

# データベース作成
CREATE DATABASE zabbix character set utf8 collate utf8_bin;

# データベースへの全権限付与(all privilegesは設定できない)
GRANT
    SELECT,
    INSERT,
    UPDATE,
    DELETE,
    CREATE,
    DROP,
    REFERENCES,
    INDEX,
    ALTER,
    CREATE TEMPORARY TABLES,
    LOCK TABLES,
    EXECUTE,
    CREATE VIEW,
    SHOW VIEW,
    CREATE ROUTINE,
    ALTER ROUTINE,
    TRIGGER
ON  `zabbix`.* 
TO 'zabbix'@'%'
;

# パスワード設定
SET PASSWORD FOR zabbix = PASSWORD('< password >');
```

## データベース初期化

```
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
```

## データベース設定

サーバ設定ファイル(zabbix_server.conf)に接続設定を記載します。 

### パスワード設定
データベースユーザのパスワードをサーバ設定ファイルに設定します。

```bash
# vi /etc/zabbix/zabbix_server.conf
  DBPassword=< password >
```

### ＤＢホスト設定

ここは公式手順書には記載されていません。（データベースがlocalhostの場合は設定不要（初期値）です）
リモートデータベースを使用するときは設定が必要です。

```bash
# vi /etc/zabbix/zabbix_server.conf
  DBHost=< RDSのエンドポイント >
```


## タイムゾーン設定

Webサーバ設定ファイルでタイムゾーン（Asia/Tokyo）を設定します。

```bash
# vi /etc/httpd/conf.d/zabbix.conf
  # php_value date.timezone ★Europe/Riga★ ← この行を探して値を変更＆コメント外す。
```

## サーバ起動・永続化

```bash
# systemctl restart zabbix-server zabbix-agent httpd
# systemctl enable zabbix-server zabbix-agent httpd
```

# フロントエンド設定

``` http://<server_ip_or_name>/zabbix ``` にアクセスするとフロントエンド（要するに管理画面）の初期化ウィザードが表示されるので手順にしたがって実行します。

![](https://i.gyazo.com/6730d97ffc948d1623be2ec7c09f5bdf.png)

[公式サイト](https://www.zabbix.com/documentation/4.0/manual/installation/install#installing_frontend)にスクリーンショット付きで手順が記載されています.

ここと留意するのはデータベースのホストURL設定くらいですが指定したとしても仕様なのか不具合なのかわかりませんが設定されません。（ので手順終了後に手動で zabbix-server.confの DBHost を設定します。）


## 管理者パスワード変更

本項は公式サイトの手順には記載されていませんが、この手順を実施しないと「**誰でもzabbixサーバに管理者ログインできてしまう**」という問題があります。

なぜなら、URL（/zabbix）もアカウント名（Admin)もパスワード（zabbix)も既定でインストールされてしまうからです。

そのうちWordpressとかのようにインストール時に管理者アカウントやパスワードを設定できるようになる（って、人任せで恐縮ですが・・・）と思いますが、それまでは必須作業です。

具体的な手順は以下の通りです。

### 管理者アカウントでログイン

ユーザ名：**Admin** 、 パスワード:**zabbix** でログインします。

![](https://i.gyazo.com/1108e1c16049889f9b6e1aeaaf097bfa.png)


### ユーザ一覧表示

メインメニューで管理（Admiistration)を選択して サブメニューでユーザ（User)を選択するとユーザ一覧が表示されます。
エイリアス列の Admin をクリックすると編集画面が表示されます。

![](https://i.gyazo.com/07c60d2ca61f863d64e8e13e1694c63e.png)

### パスワード変更

「パスワード変更」というボタンが表示されるのでクリックすると、新パスワード入力域が２つ表示されるので入力して更新します。

![](https://i.gyazo.com/46f4393613e9aded1bed8a3255a111e4.png)


以上でZabbixサーバのインストールと最低限の設定の完了です。