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