本記事では公式ドキュメントを見ながら実際にZabbixをインストールしてダッシュボードにアクセスできるようになるまでの過程を解説します。
プログラミングでもサーバー構築でも基本は公式ドキュメントを参考にする癖を付けた方が良いのですが、ドキュメント通りにいかないだとか、説明がシンプル過ぎて初心者の方には分かり辛いとか、そういう事が時々あります。
実際、ZabbixもOSインストール直後の状態から公式ドキュメントどおりに作業するとつまずく箇所がありますので、公式ドキュメントの手順通りに作業しつつ、つまずいた箇所を解決しながらインストールを進める過程を解説します。
※本記事はプロモーションを含みます
Contents
Zabbix公式ドキュメント
Zabbix最新バージョンの公式ドキュメントは次のリンクからアクセスできます。Zabbixに関する説明やHA化させる方法、Zabbixエージェントに関する解説もあるのでZabbixについて知りたい方は最初に公式ドキュメントに目を通してください。
どのバージョンをインストールするか?
個人で利用するだとか、常に最新バージョンを使わないと気が済まない等、特別な事情がない限りLTSバージョンを使ってください。LTSというのは長期サポートされるバージョンです。特に業務で使う場合は先進性よりも安定性が大事ですので、LTSがおすすめです。
この記事を書いている2023年9月時点では6.0 LTSが最新バージョンですので、今回はZabbix 6.0 LTSをインストールします。
OSは何を使うか?
個人であればUbuntu Linuxの採用例が多いと思いますが業務ではRedHat Enterprise Linux(RHEL)もしくは互換のAlmaLinuxやRockyLinuxの採用例が多いです。
わたしは業務でRHELの代替としてRockyLinuxを使っているため、今回はRockyLinux9を使いたいと思います。
[root@zabbix ~]# cat /etc/os-release NAME="Rocky Linux" VERSION="9.2 (Blue Onyx)" ID="rocky" ID_LIKE="rhel centos fedora" VERSION_ID="9.2" PLATFORM_ID="platform:el9" PRETTY_NAME="Rocky Linux 9.2 (Blue Onyx)" ANSI_COLOR="0;32" LOGO="fedora-logo-icon" CPE_NAME="cpe:/o:rocky:rocky:9::baseos" HOME_URL="https://rockylinux.org/" BUG_REPORT_URL="https://bugs.rockylinux.org/" SUPPORT_END="2032-05-31" ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9" ROCKY_SUPPORT_PRODUCT_VERSION="9.2" REDHAT_SUPPORT_PRODUCT="Rocky Linux" REDHAT_SUPPORT_PRODUCT_VERSION="9.2" [root@zabbix ~]#
RedHat互換はどれも同じなので、RHELでもAlmaLinuxでもインストール方法が変わるという事はありません
Zabbix 6.0 LTSをインストールする
公式ドキュメントに従ってインストールを進めていきましょう。
プラットフォームを選ぶ
インストールしたいZabbixのバージョン、OS、OSバージョン、インストールしたいZabbixコンポーネント、データベースの種類、WEBサーバーの種類を選択します。
上記の選択によってインストール手順が決まり、適切なインストール手順が公式ドキュメントで表示されます。ここから先は公式ドキュメントで表示されたとおりにコマンドを実行していきます。
Zabbixリポジトリをインストールする
記事公開後にZabbixのマイナーバージョンが上がるなどの理由でコマンドが変わる可能性があります。そのため、本記事に記載されているコマンドではなく公式ドキュメントに表示されるコマンドを実行するようにしてください。
EPELが提供するZabbixパッケージをインストールしている場合は/etc/yum.repos.d/epel.repo
に以下の行を追加して無効化します。Zabbixをインストールした覚えのない方やOSインストール直後の方は該当しないので対応不要です。
excludepkgs=zabbix*
Zabbix公式リポジトリからrpmコマンドでインストールします。
マイナーバージョンアップしているかも知れないので、公式ドキュメントに記載されているコマンドを実行してください
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
実行すると次のような出力になりました。
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm を取得中 警告: /var/tmp/rpm-tmp.fKFgU6: ヘッダー V4 RSA/SHA512 Signature、鍵 ID 08efa7dd: NOKEY Verifying... ################################# [100%] 準備しています... ################################# [100%] 更新中 / インストール中... 1:zabbix-release-6.0-4.el9 ################################# [100%] [root@zabbix ~]#
インストールできたら不要なファイルを削除します。
dnf clean all
Zabbixサーバーとフロントエンド、エージェントをインストールする
以下のコマンドを実行してインストールを進めます。
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
このコマンドは完了するまで少し時間がかかります。
データベース(MySQL)をインストールする ※MySQL未インストールの場合
公式ドキュメントでは次にmysqlコマンドでデータベースを作成していくのですが、これはMySQLがインストールされている事を前提にしています。そのため、MySQLがインストールされていない場合はここでインストールしておきます。
既にMySQLをインストールしている方はこの手順を飛ばしてください。 手順はRedHatの公式ドキュメントがあるので、そちらの手順に従います。
MySQLパッケージをインストールする
dnf install mysql-server
MySQLサービスを開始する
systemctl start mysqld.service
OS起動時にMySQLサービスを起動するようにする
systemctl enable mysqld.service
次にMySQLのセキュリティを強化しますが、この作業は必須ではありません。
mysql_secure_installation
初期データベースを作成する
MySQLサーバーが起動している状態で進めます。MySQLのルートパスワードを設定している場合は適宜パスワードを入力してください。
なお、この公式ドキュメントの手順では次のパラメーターでデータベースが作成されます。変更したい場合は適宜コマンド実行時のパラメーターを修正してください。
データベース名 | zabbix |
データベースを操作するユーザー名 | zabbix |
データベースを操作するユーザーのパスワード | password |
MySQLサーバーに接続します。
mysql -uroot -p
MySQLに接続できたら4つのコマンドを順に実行してZabbix用のデータベースを作成します。
まずは「zabbix」という名前のデータベースを作成します。
create database zabbix character set utf8mb4 collate utf8mb4_bin;
次にDBユーザーを作成します。名前は「zabbix」でパスワードは「pasword」です。パスワードを変更したい場合は「’password’」の箇所を修正してください。
create user zabbix@localhost identified by 'password';
DBユーザー(zabbix)にデータベース(zabbix)を操作する権限を付与します。
grant all privileges on zabbix.* to zabbix@localhost;
MySQLプロンプトから抜けます。
quit;
実際の実行結果は次のようになります。
[root@zabbix ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.32 Source distribution Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; Query OK, 1 row affected (0.00 sec) mysql> create user zabbix@localhost identified by 'password'; Query OK, 0 rows affected (0.01 sec) mysql> grant all privileges on zabbix.* to zabbix@localhost; Query OK, 0 rows affected (0.01 sec) mysql> set global log_bin_trust_function_creators = 1; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye [root@zabbix ~]#
初期スキーマとデータをインポートします。パスワードを求められるので、データベース作成時に設定したzabbixユーザーのパスワードである「password」を入力します。パスワードを変更して設定している場合、変更したパスワードを入力します。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
「log_bin_trust_function_creators」を無効にします。まずはルートユーザーでMySQLに接続します。
mysql -uroot -p
以下のコマンドを実行して「log_bin_trust_function_creators」を無効にします。
set global log_bin_trust_function_creators = 0;
MySQLプロンプトから抜けます。
quit;
Zabbixサーバーの設定をおこなう
/etc/zabbix/zabbix_server.conf
を編集してzabbixデータベースのパスワードを設定します。
ファイルを開くと次のようなパスワード設定箇所が見つかるはずです。
# DBPassword=
この行を次のように先頭の「#」を削除してパスワードを設定します。
DBPassword=password
もしもDBユーザー名をドキュメントに記載のある「zabbix」から変更している場合は以下の箇所も修正してください。
DBUser=zabbix
Zabbixサーバとエージェントのプロセスを起動する
次のコマンドでZabbixサーバーとエージェントを再起動して設定を反映させます。
systemctl restart zabbix-server zabbix-agent httpd php-fpm
これらがOS起動時に起動するよう設定しておきます。
systemctl enable zabbix-server zabbix-agent httpd php-fpm
これでZabbixのインストールは完了です。
Zabbixにログインする
ここまでの作業が完了したらWEBブラウザを使ってZabbixにログインしてダッシュボードにアクセスしてみましょう。アクセス先は「http://<IPアドレス or ホスト名>/zabbix」となります。
しかし、ログインできません。というかWEBサーバー自体にアクセスできません。
原因はおそらくfirewalldがフィルタしているせいです。
[root@zabbix ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled) Active: active (running) since Mon 2023-09-04 13:35:48 JST; 5s ago Docs: man:firewalld(1) Main PID: 8833 (firewalld) Tasks: 2 (limit: 10949) Memory: 24.3M CPU: 219ms CGroup: /system.slice/firewalld.service └─8833 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid 9月 04 13:35:48 zabbix systemd[1]: Starting firewalld - dynamic firewall daemon... 9月 04 13:35:48 zabbix systemd[1]: Started firewalld - dynamic firewall daemon. [root@zabbix ~]#
試しにfirewalldを停止してみます。
systemctl stop firewalld
firewalldを停止するとZabbixの画面が表示されました。
firewalldを設定する
firewalldを停止したままで問題ない、という方は次のコマンドでfirewalldがOS起動時に起動しないよう設定を変えてください。
systemctl disable firewalld
しかし許可したサービス以外はアクセスできないようにした方がセキュリティ上は好ましいので、本記事ではHTTP通信の許可を追加します。
まずは先ほど停止したfirewalldを起動します。
systemctl start firewalld
次にアクティブなzoneを確認します。
firewall-cmd --get-active-zones
わたしの環境では「public」というzoneに「ens160」という名前のインタフェースが所属していました。
[root@zabbix ~]# firewall-cmd --get-active-zones public interfaces: ens160 [root@zabbix ~]#
「zone」はファイアウォールで使われる概念で、ネットワークをセキュリティレベルで分類し管理します。たとえばインターネットに接続していて誰でもアクセス可能な外部ネットワークを「public(外部)」とし、オフィスなど内部ネットワークを「internal(内部)」、メールやプロキシサーバーなどを配置する「dmz(非武装地帯)」のように分けてファイアウォールで通信許可設定をします。
次に「public」で設定されているfirewalldの設定を確認します。
firewall-cmd --list-all --zone=public
わたしの環境では次のように表示されました。
[root@zabbix ~]# firewall-cmd --list-all --zone=public public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@zabbix ~]#
この中に「services」というのがあります。これが許可されているサービスです。
services: cockpit dhcpv6-client ssh
ここにHTTPを追加すればfirewalldが起動していてもZabbixにアクセスできるはずです。HTTPをpublicに追加するには次のようにします。
firewall-cmd --add-service=http --zone=public --permanent
設定を追加したらリロードして有効化します。
firewall-cmd --reload
これでZabbixに接続できるようになりました。
Zabbixの初期セットアップをおこなう
Zabbixの画面が表示されたら初期セットアップをおこないます。最初は言語設定ですので、日本語を使いたい方はDefault Languageの箇所で「Japanese (ja_JP)」選択します。
画面が日本語表示に変わるので[次のステップ]をクリックします。
前提条件のチェック画面が表示されるので、赤枠の箇所がすべて「OK」になっている事を確認します。画面をスクロールしてすべて「OK」である事を確認してください。問題なければ[次のステップ]をクリックします。
次にデータベース接続設定をおこないます。公式ドキュメントどおりに作業している場合は「パスワード」のみ設定すれば良いでしょう。
Zabbixサーバー名を入力し、デフォルトのタイムゾーンをAsia/Tokyoに変更します。設定したら[次のステップ]をクリックします。
設定内容の確認に問題なければ[次のステップ]をクリックします。
これでWEBインタフェースのインストールが完了するので[終了]をクリックします。
Zabbixのログイン画面が表示されるのでユーザー名とパスワードを入力してログインします。Zabbixのデフォルトユーザーは「Admin」でデフォルトパスワードは「zabbix」です。データベース作成時のユーザー名とパスワードではないので注意してください。
無事ログインできると次のようなダッシュボードが表示されます。
まとめ
公式ドキュメントのとおりに進める事でこのようにダッシュボードのアクセスまで問題なく完了しました。途中、MySQLがインストールされていないだとかfirewalldでフィルタされていてアクセスできないだとか、公式ドキュメントには記載されていないハマりどころもあるので初心者の方はその辺りに注意すれば問題なくインストール完了するでしょう。
ConoHa VPS、Xserver VPSであればZabbixがインストール済みのイメージを利用できますし、さくらのVPSであればZabbixを自動インストールするスクリプトが用意されているので自分でインストールするのは難しいと感じる方はVPSを利用するのも良いと思います。