2019/07/06

自鯖監視用Zabbixインストール

mstdn.unigiri.net と mattermost.unigiri.net の監視をMackerelからZabbixへ移行した。

構成

1. 各パッケージ インストール

wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb
dpkg -i zabbix-release_4.2-1+bionic_all.deb
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent php-fpm nginx 

2. MySQL セットアップ

{PASSWORD}は任意のパスワードに書き換える。

mysql -uroot -p
{PASSWORD}
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '{PASSWORD}';
mysql> quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
DBPassword={PASSWORD}

3. php-fpm 設定

https://www.zabbix.com/documentation/4.2/manual/installation/install#installing_frontend のDescriptionに従い、 /etc/php/7.2/fpm/php.ini を編集する。

$ cat /etc/php/7.2/fpm/php.ini | grep -e memory_limit -e post_max_size -e upload_max_filesize -e max_execution_time -e max_input_time -e session.auto_start -e mbstring.func_overload -e always_populate_raw_post_data
; max_input_time
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
session.auto_start = 0
mbstring.func_overload = 0

4. 証明書生成

ここではLet’s Encryptを利用した。詳細な説明は略。

systemctl stop nginx
certbot certonly --standalone
systemctl start nginx

5. Nginx 設定

/etc/nginx/sites-available/zabbix へ以下のファイルを設置後、 /etc/nginx/sites-enabled/zabbix としてシンボリックリンクを張る。
{SERVER_NAME}には証明書発行時に使用したドメインを指定する。

server {
        listen 80;
        server_name {SERVER_NAME};
        return 301  https://$server_name$request_uri;

        access_log /var/log/nginx/zabbix/access.log;
        error_log /var/log/nginx/zabbix/error.log;
}

server {
        listen 443;
        ssl on;
        server_name  {SERVER_NAME};
        root   /usr/share/zabbix;

        ssl_prefer_server_ciphers  on;
        ssl_ciphers  'ECDH !aNULL !eNULL !SSLv2 !SSLv3';

        ssl_certificate /etc/letsencrypt/live/{SERVER_NAME}/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/{SERVER_NAME}/privkey.pem;

        access_log /var/log/nginx/zabbix/ssl.access.log;
        error_log /var/log/nginx/zabbix/ssl.error.log;

        location / {
                index  index.html index.htm index.php;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
                include        fastcgi_params;
        }
}

6. Zabbix 設定

/etc/zabbix/zabbix_server.confDBPassword をMySQLセットアップ時のパスワードへ変更。

7. 各サービス起動

systemctl restart mysql zabbix-server zabbix-agent php7.2-fpm nginx

8. Web Console 初期設定

画面で案内された通りに設定。

https://www.zabbix.com/documentation/4.2/manual/quickstart/login

監視対象サーバへzabbix-agentをインストール

Zabbixが乗っているサーバ以外を監視する場合、監視対象にzabbix-agentのインストールが必要。
FirewallやSecurity Groupでアクセス制限を行っている場合は、Zabbixから対象のPort 10050へ疎通可能に設定する。

apt install zabbix-agent
# Server= と ServerActive= へZabbixサーバのIPを設定, HostnameItem= のコメントアウトを解除
vim /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent

ZabbixのAlertをMattermostへ通知する

ネットに情報が乏しかったため記事を書いた。