はじめに
こんばんは、いつもさぼり気味の男 amaebiです!
今回は、自宅サーバーにZabbixをインストールしていきます。
ほぼ公式の手順通りに進めていきます。
手順
今回はタイトルにもある通り、以下のOSバージョンにZabbixをインストールしていきます。
OSバージョン : AlmaLinux 9.5 (Teal Serval)
公式のインストール手順サイトに行きます。
Zabbix Packagesを選択し、以下のプラットフォームで進めていきます。
※好みによって、プラットフォームの内容を変えてください。
Zabbixリポジトリのインストール
yumパッケージをアップデートします。
※アップデート不要なパッケージが存在する場合は個別に対応してください。
# yum update
EPELパッケージを使用して、Zabbixをインストールしていきます。
/etc/yum.repos.d/epel.repo
ファイルを確認します。
# ls -la /etc/yum.repos.d
epel.repo
ファイルが存在していなかったため、epel-release
をインストールしていきます。
# yum list installed | grep epel-release
# yum install epel-release
epel.repo
ファイルが確認できたため、バックアップを取得して内容を書き換えます。
# ls -la /etc/yum.repos.d
# mkdir -v /etc/yum.repos.d/.backup
# cp -ipv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/.backup/epel.repo.`date +%Y%m%d`
# ls -la /etc/yum.repos.d/.backup
EPELを使用してインストールできるようにするため、/etc/yum.repos.d/epel.repo
ファイルを書き換えます。
# vi /etc/yum.repos.d/epel.repo
差分を確認していきます。
# diff -U0 /etc/yum.repos.d/.backup/epel.repo.<対象ファイルの日付> /etc/yum.repos.d/epel.repo
--- /etc/yum.repos.d/.backup/epel.repo.<対象ファイルの日付> 2024-12-03 08:57:02.000000000 +0900
+++ /etc/yum.repos.d/epel.repo 2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -10,0 +11 @@
+excludepkgs=zabbix*
#
/etc/yum.repos.d/epel.repo
ファイルの内容が書き換わっていることを確認できたら、zabbixリポジトリをインストールしていきます。
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
# dnf clean all
Zabbixサーバー、フロントエンド、エージェントのインストール
Zabbixサーバー、フロントエンド、エージェントをインストールします。
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
初期データベースの作成
Zabbix用のMySQLをインストールし、起動させます。
(今回のMySQLバージョンは "MySQL 8.0.41" です)
# dnf install mysql-server
# systemctl start mysqld
# systemctl enable mysqld
# systemctl status mysqld
rootユーザーでMySQLにログインします。
# mysql -u root -p
Enter password: ←パスワードを設定していないため、何も入力せずにEnter
mysql>
MySQLにログイン後、以下のコマンドを実行します。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> show databases;
mysql> create user zabbix@localhost identified by '<パスワード>';
mysql> select user, host from mysql.user;
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> show variables like 'log_bin_trust_function_creators';
mysql> quit;
zabbix serverとhostのスキーマとデータを先ほど作成したデータベース zabbix にインポートしていきます。
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
Enter password: ←データベースユーザー zabbix のパスワードが要求されます。
#
インポートが完了したため、log_bin_trust_function_creators
を無効にします。
# mysql -u root -p
mysql> set global log_bin_trust_function_creators = 0;
mysql> show variables like 'log_bin_trust_function_creators';
mysql> quit;
Zabbixサーバー用のデータべース構築
/etc/zabbix/zabbix_server.conf
を書き換えます。
# ls -la /etc/zabbix
# mkdir -v /etc/zabbix/.backup
# ls -la /etc/zabbix/.backup
# cp -ipv /etc/zabbix/zabbix_server.conf /etc/zabbix/.backup/zabbix_server.conf.`date +%Y%m%d`
# ls- la /etc/zabbix/.backup
# vi /etc/zabbix/zabbix_server.conf
# diff -U0 /etc/zabbix/.backup/zabbix_server.conf.<対象ファイルの日付> /etc/zabbix/zabbix_server.conf
--- /etc/zabbix/.backup/zabbix_server.conf.<対象ファイルの日付> 2025-02-24 18:12:09.000000000 +0900
+++ /etc/zabbix/zabbix_server.conf 2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -132,0 +133,2 @@
+DBPassword=<データベースユーザーパスワード>
+
#
zabbixサーバー及びzabbixエージェント起動
最後にzabbixサーバーとzabbixエージェントを起動します。
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
トラブルシューティング
http://<zabbixサーバーのIPアドレス>/zabbix
で内容を確認した際、以下のようにタイムアウトを起こしました。
原因を調査するため、/var/log/httpd/error_log
を確認します。
# tail -F /var/log/httpd/error_log
~~以下省略~~
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
~~以下省略~~
ServerNameが指定していないためのエラーなので、/etc/httpd/conf/httpd.conf
のServerNameを指定します。
# ls -la /etc/httpd/conf
# mkdir -v /etc/httpd/conf/.backup
# ls -la /etc/httpd/conf
# cp -ipv /etc/httpd/conf/httpd.conf /etc/httpd/conf/.backup/httpd.conf.`date +%Y%m%d`
# vi /etc/httpd/conf/httpd.conf
# diff -U0 /etc/httpd/conf/.backup/httpd.conf.<対象ファイルの日付> /etc/httpd/conf/httpd.conf
--- /etc/httpd/conf/.backup/httpd.conf.<対象ファイルの日付> 2025-01-22 06:19:11.000000000 +0900
+++ /etc/httpd/conf/httpd.conf 2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -101,0 +102,2 @@
+ServerName <zabbixサーバーのIPアドレス>:80
+
#
apacheを再起動します。
# systemctl restart httpd
これでもサイトが確認できませんでした。
事前にSELinuxは無効化していたため、次はAlmaLinuxのfirewallを確認します。
※皆さんはSELinuxを無効化しないようにしましょう!
# firewall-cmd --state
running
#
firewallが起動していたので、80ポートだけを開放します。
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload
firewallを再起動後、再度http://<zabbixサーバーのIPアドレス>/zabbix
でアクセスすると、無事zabbixのセットアップページを確認することができました。
セットアップ
webブラウザを開き、http://<zabbixサーバーのIPアドレス>/zabbix
でzabbixサーバーにアクセスします。
これからzabbixのセットアップと行きたいところなんですが...
言語設定で日本語が選べないため、いろいろと設定していきます。
現在の言語設定を確認していきます。
# localectl
System Locale: LANG=C.UTF-8
VC Keymap: jp
X11 Layout: jp
#
日本語設定になっていないため、以下のパッケージをインストールしていきます。
# dnf install glibc-locale-source glibc-langpack-ja zabbix-web-japanese
以下のパッケージをインストール後、日本語設定を行っていきます。
# ls -la /etc | grep locale
# mkdir -v /etc/.backup ←事前に.backupファイルを作成していたため、スキップ
# cp -ipv /etc/locale.conf /etc/.backup/locale.conf.`date +%Y%m%d`
# localectl set-locale LANG=ja_JP.utf8
# diff -U0 /etc/.backup/locale.conf.20250310 /etc/locale.conf
設定が完了したら、サーバーを再起動します。
# reboot
再起動後、再度zabbixサーバーにアクセスし、言語設定を見てみると日本語を選択できるようになりました。
全ての前提条件がOKになっていることを確認できたら、次のステップをクリックします。
データベース接続設定では、データベースポートとデータベースユーザーのパスワードを入力してから、次のステップをクリックします。
zabbixサーバー名、タイムゾーン、テーマを決めたら、次のステップをクリックします。
(zabbixサーバー名とテーマはお好みで決めてください)
設定パラメータを確認後、問題がなければ次のステップをクリックします。
Zabbixサーバーのログイン画面が出てくるため、ユーザー名とパスワードを入力してサインインします。
初期ユーザー名とパスワードは以下の通りです。
- ユーザー名 : Admin
- パスワード : zabbix
最後に
公式ドキュメントを参考に作業を進めていましたが、至る所でエラーとの勝負だったため結構勉強になりました。
このzabbixサーバーを使用して、遊び尽くしたいと思います。