以下の環境でZabbixを導入してみましたが、いくつかハマったことがあったのでメモを残しておきます。
導入した環境
- Ubuntu 22.04
- 導入しようとしたZabbix : 6.2
- MySQL / nginx構成
- 他サービス未導入(OSインストールと初期設定を終えたのみです)
- ドメイン登録済みです。
- ワイルドカードSSL証明書を発行済みです。
導入手順(ハマりポイント込み)
前提
- 全て管理者権限で実施しています。
- パッケージ管理は基本的にaptitudeを利用しています。
- ローカルNWで設定しているのでufwなどは考慮していません。
参考URL
Zabbixレポジトリを追加してインストールします。
aptitude update
aptitude upgrade
wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.2-1+ubuntu22.04_all.deb
aptitude update
aptitude install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
MySQLの初期設定
aptitude install mysql-server
systemctl start mysql
systemctl enable mysql
必要に応じて: mysql_secure_installation
参考 https://level69.net/archives/28557
vi /etc/mysql/mysql.conf.d/mysqld.cnf
追記内容
#末尾に以下を追加
default_authentication_plugin=mysql_native_password
設定後にmysqlサービス再起動
systemctl restart mysql
MySQL rootパスワード設定
mysql -u root -p
# 未設定のためパスワードは不要です
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
#パスワードは任意のものを入力ください
flush privileges;
exit
mysql初期設定
mysql_secure_installation
初期設定内容
Enter password for user root:
# 上記で設定したパスワードを入力します
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No:
# Yを入力してEnter
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
# ポリシーに合わせて0/1/2を入力(ローカル環境のため0としました)
Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) :
# 既に設定しているのでn
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
# anonymousユーザーを削除するためY
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
# rootユーザのリモートログインを禁止するためY
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
# テストDBを削除するためY
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
# 設定を反映するためy
MySQLでZabbix用のユーザーを作成
mysql -uroot -p
# 上記で設定したパスワードを入力します
CREATE DATABASE zabbix character set utf8mb4;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'パスワード';
# 任意のパスワードを設定
GRANT ALL ON redmine.* TO 'zabbix'@'localhost';
flush privileges;
exit
ハマりポイント1:SQL実行時にエラーが出る
ERROR 1419 (HY000) at line 2123: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
と出たので、設定をしておきます。
対処方法
mysql -uroot -p
rootでmysqlにログイン後、以下を実行します。
SHOW VARIABLES LIKE 'log_bin_trust_function_creators';
# OFF を確認
set global log_bin_trust_function_creators=1;
# 設定を有効化
SHOW VARIABLES LIKE 'log_bin_trust_function_creators';
# ONを確認
ハマりポイント2: インポート用SQLが存在しない(正しい手順を後述)
Webサイトの手順によると、
zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
とありますが、該当ディレクトリにmysql用のSQLが存在しません。
対処方法
apt reinstall zabbix-sql-scripts
として、sqlを再インストールします。
updatedb
locate server.sql.gz
→ /usr/share/zabbix-sql-scripts/mysql/server.sql.gz
SQLをインポートします。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
# zabbixのDBパスワードを入力します。
Zabbixの設定を行います。
vi /etc/zabbix/zabbix_server.conf
追記/編集内容
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
nginx用のconfファイルを設定します。
vi /etc/zabbix/nginx.conf
編集内容
listen 443 ssl http2 default_server;
# ポートを443のみで受け付けるようにします。
server_name ドメイン名;
ssl_certificate "/SSL証明書と中間証明書を結合したファイル";
ssl_certificate_key "秘密鍵ファイル";
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA";
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
設定内容を確認します。
nginx -t
# Syntax OKを確認します
設定内容を反映します。
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
セットアップ確認
ブラウザから
https://ドメイン名/setup.php
が表示されれば問題ないです。その後、Next Stepに進んでください。