Zabbix 3.2をCentOS 7にインストールする

Zabbixを本番運用するために、CentOS 7へとインストールします。
簡易的にするために、MySQLもすべて同じEC2上にインストールします。

# 環境
* CentOS Linux release 7.2.1511 (Core)  
* Zabbix: 3.2.1
* MySQL: 5.7.16

# 各種下準備

## タイムゾーンの変更

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

## 必要パッケージのインストール

```
yum install -y wget
```

## MySQLのインストール

[ここ](https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html)を参考に適宜インストールします。
以下、参考として書いておきます。

```
cd /var/tmp
wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
yum localinstall mysql57-community-release-el7-9.noarch.rpm 
yum install mysql-community-server

# 起動
service mysqld start

# パスワードの確認
grep "temporary password" /var/log/mysqld.log

# 設定
mysql_secure_installation

# ログインの確認
mysql -uroot -p
```

つぎに文字コードを設定します。正しく設定しないと日本語を含んだ設定をZabbixで行おうとするとエラーになります。
以下を ```/etc/my.cnf``` に追加します。その後、再起動します。

```
[client]
default-character-set = utf8

[mysqld]

init-connect='SET NAMES utf8'
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci

[mysql]
default-character-set = utf8
```


# Zabbixのインストール

## パッケージのインストールとデータ作成

```
# リポジトリのインストール
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

# MySQL用にインストール
yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese 

# MySQLにzabbixデータベースを作成しておく
mysql -uroot -p -e 'create database zabbix'

# データベースがutf8で作られているか確認
mysql> SHOW CREATE DATABASE zabbix;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| zabbix   | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

# 初期データの作成
zcat /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz | mysql -uroot -p zabbix
```

## Zabbixの設定

サーバ側のMySQL用設定を編集する。なおパスワードなどは適宜かえる。

```
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=root
DBPassword=zabbix
```

PHP側のタイムゾーンを変える

```
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone "Asia/Tokyo"
```

デフォルトでは ```http://example.com/zabbix``` でアクセスされるが、 ```http://example.com/``` でアクセスさせるために以下の設定を行う

```
vi /etc/httpd/conf.d/zabbix.conf
Alias / /usr/share/zabbix/
```

## Zabbixサーバを起動と自動起動設定

```
systemctl start zabbix-server
systemctl enable zabbix-server
systemctl restart httpd
systemctl enable zabbix-agent.service
```

## Zabbix UI側での設定

http://example.com/ にアクセス後、以下のような画面がでれば正しくインストールできている。
Next stepでつぎに進み、各種設定する。
なお初期アカウントとパスワードはAdmin/zabbixである。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/db31cc38-74fb-c93d-3a2f-31ffbd7955b1.png)


## Zabbixエージェントのインストール、起動、自動起動設定

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

上記の後、Zabbixサーバ側のWeb UIの[設定]=>[ホスト]で該当ステータスを有効にする。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/d2d62329-1a52-1c4a-c1d5-ce552d08c564.png)

しばらくすると、以下のように監視できていることがわかる。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/3bcff492-c225-c5f6-6382-501c2de11ff7.png)

# Slack通知の設定

以下を参考に行う。 ```/usr/lib/zabbix/alertscripts/``` にスクリプトを配置する

* http://qiita.com/wapa5pow/items/2327561493015a833c97

# その他設定

以下はMacでのやり方だが、CentOSでも多少異なるだけで、設定可能。

* [Zabbix 3.2で障害時にSlack通知させる](http://qiita.com/wapa5pow/items/2327561493015a833c97)
* [Zabbix 3.2でServer <=> Agentを暗号化する](http://qiita.com/wapa5pow/items/10dcf5099ca35ec14117)


# エラー対処

## cannot recreate Zabbix semaphores for IPC keyのエラーがでてZabbixエージェントが起動しない

以下を参考に解決できる。
* http://qphoney.hatenadiary.com/entry/2011/11/10/165704

## Zabbix server is not running: the information displayed may not be currentのエラーがWeb UIで出る。

以下を参考に解決できる。
* http://qiita.com/atanaka7/items/294a639effdb804cfdaa

```
setsebool -P httpd_can_connect_zabbix on
setsebool -P zabbix_can_network on
```

## Lack of free swap space on ... の警告が出る

swapが無いため出るが、必要ない場合はオフにする。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/b9e59971-82bc-aeaa-38a4-26bddf6aa837.png)

## 追記: ALBを入れてSSL通信し、HTTPで接続に来た場合はHTTPSにリダイレクトする

以下を想定する

```
User ==> ALB:443 ==> Zabbix:80
```

Apacheの設定ファイルに以下を追記すればよい。その後、Apacheを再起動する

```
vi /etc/httpd/conf.d/zabbix.conf 

以下を追記する
# force https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]
```

## 追記: サーバのホスト名を変える場合は以下

```
hostnamectl set-hostname zabbix.example.com
```


# 参考
* http://dev.classmethod.jp/cloud/amazon-linux-zabbix2-4/
* https://www.zabbix.com/documentation/3.2/manual/installation/install
* http://qiita.com/snaka/items/a291423d6ceac9f091a7
* http://qiita.com/ritukiii/items/08df5be6d50871124aaf