Zabbix 6.0 LTSをRedHat系Linuxにインストールする手順

本記事では公式ドキュメントを見ながら実際にZabbixをインストールしてダッシュボードにアクセスできるようになるまでの過程を解説します。

プログラミングでもサーバー構築でも基本は公式ドキュメントを参考にする癖を付けた方が良いのですが、ドキュメント通りにいかないだとか、説明がシンプル過ぎて初心者の方には分かり辛いとか、そういう事が時々あります。

実際、ZabbixもOSインストール直後の状態から公式ドキュメントどおりに作業するとつまずく箇所がありますので、公式ドキュメントの手順通りに作業しつつ、つまずいた箇所を解決しながらインストールを進める過程を解説します。

※本記事はプロモーションを含みます

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サーバー自体にアクセスできません。

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を停止するとZabbix 6.0 LTSの初期セットアップ画面が表示された

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 6.0 LTSの初期セットアップ画面

Zabbixの初期セットアップをおこなう

Zabbixの画面が表示されたら初期セットアップをおこないます。最初は言語設定ですので、日本語を使いたい方はDefault Languageの箇所で「Japanese (ja_JP)」選択します。

デフォルトの英語表示から日本語表示に変更する

画面が日本語表示に変わるので[次のステップ]をクリックします。

日本語表示に変更される

前提条件のチェック画面が表示されるので、赤枠の箇所がすべて「OK」になっている事を確認します。画面をスクロールしてすべて「OK」である事を確認してください。問題なければ[次のステップ]をクリックします。

画面をスクロールしてすべて「OK」である事を確認する

次にデータベース接続設定をおこないます。公式ドキュメントどおりに作業している場合は「パスワード」のみ設定すれば良いでしょう。

データベース作成時に設定したものと同じデータベース名、ユーザー、パスワードを入力する

Zabbixサーバー名を入力し、デフォルトのタイムゾーンをAsia/Tokyoに変更します。設定したら[次のステップ]をクリックします。

Zabbixサーバー名とタイムゾーンを設定する

設定内容の確認に問題なければ[次のステップ]をクリックします。

設定内容を確認して問題なければ次に進む

これでWEBインタフェースのインストールが完了するので[終了]をクリックします。

終了ボタンをクリックしてWEBインタフェースのインストールを完了させる

Zabbixのログイン画面が表示されるのでユーザー名とパスワードを入力してログインします。Zabbixのデフォルトユーザーは「Admin」でデフォルトパスワードは「zabbix」です。データベース作成時のユーザー名とパスワードではないので注意してください。

無事ログインできると次のようなダッシュボードが表示されます。

Zabbix 6.0 LTSのダッシュボード

まとめ

公式ドキュメントのとおりに進める事でこのようにダッシュボードのアクセスまで問題なく完了しました。途中、MySQLがインストールされていないだとかfirewalldでフィルタされていてアクセスできないだとか、公式ドキュメントには記載されていないハマりどころもあるので初心者の方はその辺りに注意すれば問題なくインストール完了するでしょう。

ConoHa VPSXserver VPSであればZabbixがインストール済みのイメージを利用できますし、さくらのVPSであればZabbixを自動インストールするスクリプトが用意されているので自分でインストールするのは難しいと感じる方はVPSを利用するのも良いと思います。