Zabbixを初心者がさわってみた。

# Zabbix(監視システム)
監視サーバーのZabbixを構築してみた。

## 環境
- OpenStack Ocata instance
- OS (Ubuntu16.04) cloud-image

## インストールするもの
- apache2
- php
- php-cgi
- libapache2-mod-php
- php-common
- php-pear
- php-mbstring
- mariadb-server
- zabbix-server-mysql
- zabbix-agent
- zabbix-frontend-php
- php-mysql
- php-gd php-xml-util
- php-mbstring
- php-bcmath
- php-net-socket
- php-gettext

### OpenStack上でインスタンスを上げる
- vcpu : 2
- ram : 4GB
- hdd : 40GB
- image : ubuntu16.04-cloud.qcow2  
---
＃cloud-configの設定  (yml形式)

```
#cloud-config
password: ubuntu
chapasswd: {expire:False}
ssh_pwauth: True
hostname: ubuntu
```
### インストール前準備

```
~# apt -y update
```

### apache2
インストールと設定

```
~# apt -y install apache2
~# ~# vi /etc/apache2/conf-enabled/security.conf
(略)
#25行目
25 ServerTokens Prod
```
サービス再起動

```
~# systemctl restart apache2
```

### PHP
インストールと確認

```
~# apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring
~# a2enconf php7.0-cgi
Conf php7.0-cgi already enabled
```
Apache2 の設定です

```
~# vi /etc/php/7.0/apache2/php.ini
# 912行目：コメント解除しタイムゾーン設定
date.timezone = "Asia/Tokyo"
```
サービス再起動

```
~# systemctl restart apache2
```
PHPの確認

```
~# vi /var/www/html/index.php

<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;">
<?php
      print Date("Y/m/d");
?>
</div>
</body>
</html>
```
curlでの確認

```
~# curl --http1.1 localhost/index.php
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;">
2017/08/24</div>
</body>
</html>
```
日付が表示されているので、多分OK  

### MariaDB
インストールと設定

```
~# apt -y install mariadb-server
~# vi /etc/mysql/mariadb.conf.d/50-server.cnf
~# sed -i "105s/utf8mb4/utf8/g" /etc/mysql/mariadb.conf.d/50-server.cnf  
~# sed -i "106s/collation-server/#collation-server/g" /etc/mysql/mariadb.conf.d/50-server.cnf
~# sed -i "29s/127.0.0.1/0.0.0.0/g" /etc/mysql/mariadb.conf.d/50-server.cnf
~# mysql_secure_installation
```
### Zabbix
インストール

```
~# apt -y install zabbix-server-mysql zabbix-agent zabbix-frontend-php php-mysql php-gd php-xml-util php-mbstring php-bcmath php-net-socket php-gettext
```
データベースの設定

```
~# mysql -u root -p
Enter password:hogehoge

MariaDB [(none)]> create database zabbix;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

~# cd /usr/share/zabbix-server-mysql
/usr/share/zabbix-server-mysql# gunzip *.sql.gz

/usr/share/zabbix-server-mysql# mysql -u root -p zabbix < schema.sql
Enter password:

/usr/share/zabbix-server-mysql# mysql -u root -p zabbix < images.sql
Enter password:

/usr/share/zabbix-server-mysql# mysql -u root -p zabbix < data.sql
Enter password:
```
Zabbix サーバーを設定

```
~# vi /etc/zabbix/zabbix_server.conf

# 82行目：DB名を追記
DBName=zabbix

# 98行目：DBユーザー名を追記
DBUser=zabbix

# 106行目：コメント解除しDBユーザーのパスワードを追記
DBPassword=zabbix

```
Zabbix再起動

```
~# systemctl restart zabbix-server
```
PHP および Apache2 の設定

```
:~# vi /usr/share/zabbix/include/classes/setup/CFrontendSetup.php
# 348行目に追記
# Zabbix初期セットアップ要件で「php always_populate_raw_post_data」が「off」を要求されるが
# Ubuntu16.04 デフォルトの PHP7 では当該オプションは削除されたため初期セットアップが完了できないことへの対処
$current = ini_get('always_populate_raw_post_data');
$current = -1;
return array(

~# vi /etc/php/7.0/apache2/php.ini

# 368行目：Zabbix 要件に変更
max_execution_time = 300

# 378行目：Zabbix 要件に変更
max_input_time = 300

# 656行目：Zabbix 要件に変更
post_max_size = 16M

~# vi /etc/apache2/conf-available/zabbix-frontend-php.conf

# 最終行に追記：Web 管理画面へのアクセス制限(自身のネットワークを指定)
<Directory /usr/share/zabbix>
    Require local
    Require ip 192.168.100.0/24
</Directory>

~# chown -R www-data /etc/zabbix

~# a2enconf zabbix-frontend-php
Enabling conf zabbix-frontend-php.
To activate the new configuration, you need to run:
  service apache2 reload

~# systemctl restart apache2.service
```