Ubuntu16.04にてZabbixインストール

Zabbixは3.0でUbuntu16.04をサポートしてからか
PHP7で動作します。
また、さらに高速化のためにnginx+php-fpmに変更と
opcacheに手を入れてます。
DBサーバは別のサーバで動かす前提になっております。

#OS
##apt
sudo apt-get update
sudo apt-get dist-upgrade
sudo vi /etc/sysctl.conf
+ vm.swappiness=1
+ vm.overcommit_ratio=99
+ vm.overcommit_memory=2

sudo apt-get clean
sudo shutdown -r 0

#MySQL
私は公式のMySQLを使う人なので
cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.5-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.5-1_all.deb
OKを選択

#MySQLのインストール(この作業のみMySQL serverにて実施)
sudo apt-get update
sudo apt-get install mysql-community-server
mysql -uroot -p
mysql> create database zabbix;
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'パスワード文字列';
mysql> exit
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
- bind-address   = 127.0.0.1
+ #bind-address   = 127.0.0.1
sudo /etc/init.d/mysql restart

#Zabbixインストール
wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.0-1+xenial_all.deb
sudo apt-get update


sudo apt-get install zabbix-server-mysql zabbix-frontend-php
途中MySQLのROOTのパスワードを一時的に入れます。
aptで足りないPHPパッケージをインストール
sudo apt-get install php7.0-bcmath php7.0-mbstring php7.0-xml

MySQLを普通はローカルに置かないので削除します。
sudo apt-get remove --purge mysql-community-server
#Zabbix設定
sudo vi /etc/zabbix/apache.conf
+ php_value date.timezone Asia/Tokyo

sudo service apache2 restart
sudo vi /etc/zabbix/zabbix_server.conf
+ DBHost=xxx.xxx.xxx.xxx
+ DBPassword=xxx

#日本語周りインストール
sudo apt-get install fonts-vlgothic
sudo apt-get install language-pack-ja-base language-pack-ja

#SQLの流し込み(Zabbix server側だけ)
対象ファイルは/usr/share/doc/zabbix-server-mysql/create.sql.gz
見つからない場合は
sudo find / -name create.sql.gz
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -hIPアドレス -p zabbix
IPアドレスにはMySQLサーバのIPアドレスを入れる

sudo /etc/init.d/zabbix-server restart

http://xxx.xxx.xxx.xxx/zabbix にアクセスできることを確認

Apacheの停止
sudo service apache2 stop
公式nginxレポジトリからインストールできますが作業が増えるのでデフォルトを仕様。HTTP2対応も必要ないですし。
sudo apt-get install nginx
sudo apt-get install php7.0-fpm
設定なしでもデフォルトで動作するのだが動作が把握しやすいよう9000ポート待受
sudo vi /etc/php/7.0/fpm/pool.d/www.conf

```
- listen = /run/php/php7.0-fpm.sock
+ listen = 127.0.0.1:9000
```

sudo vi /etc/php/7.0/fpm/php.ini

```
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
always_populate_raw_post_data = -1
date.timezone = Asia/Tokyo
```

sudo /etc/init.d/php7.0-fpm start
sudo rm -rf /etc/nginx/sites-available/default
これをしないとデフォルトを読みに行く。a2dissiteでも可。
sudo vi /etc/nginx/conf.d/zabbix.conf

```
server {
        listen       80;
        #server_name xxx.xxx.xxx.xxx;

        root        /usr/share/;
        index       index.html index.php;
        access_log  /var/log/nginx/access.log;
        error_log   /var/log/nginx/error.log error;

        location ~ \.php {
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
```
sudo /etc/init.d/nginx start

##zabbix-agentのインストール
sudo apt-get install zabbix-agent

Zabbixは自動気筒登録されないようなので
```
sudo systemctl enable zabbix-server.service
sudo systemctl enable zabbix-agent.service
sudo systemctl list-unit-files  -t service
```

動作確認
http://xxx.xxx.xxx.xxx/zabbix

#opcacheのチューニング
opcacheが入っていることを確認します
dpkg -l | grep opcache
デフォルトの設定ではtimestampsがONならキャッシュが2秒
revalidate_freqを0にするとキャッシュしなくなります。
※コード最適化があるのでopcache.enableは有効にするべきです
php -i | grep opcache.enable
php -i | grep opcache.validate_timestamps
php -i | grep opcache.revalidate_freq
sudo vi /etc/php/7.0/fpm/conf.d/10-opcache.ini
+ opcache.revalidate_freq=0
sudo /etc/init.d/php7.0-fpm restart
設定を確認します
php -i | grep opcache.enable
php -i | grep opcache.validate_timestamps
php -i | grep opcache.revalidate_freq