📷

Zabbixであそぼ(SandBox環境構築編)

2024/07/09に公開

はじめに

Zabbixを触る機会があるので、学ぶ&遊べる環境をVirtualBoxの仮想マシン上にZabbixサーバを構築して作成します。
同じ要領で本番環境を構築することは可能だと思いますが、本記事はあくまで学ぶ&遊べる環境(SandBox環境)の構築を目的とします。
また、セキュリティ面に関しては考慮してないため同じ設定で本番環境を構築することはおすすめしません。

構築環境について

以下のような環境で構築を行いました。
ホストOS・・・・・Windows 11 Home 23H2
仮想化ツール・・・VirtualBox7.0.10
ゲストOS・・・・・Rocky Linux 9.4

Zabbixとは

Zabbixは、オープンソースの監視ソフトウェアであり、ネットワークやサーバー、クラウドサービスなどの状態をリアルタイムで監視する機能を提供します。ハードウェアの監視、パフォーマンスの追跡、障害の検出などの機能があり、アラートやレポート生成機能も兼ね備えています。

ZabbixサーバはWebサーバとして、ApacheとNginxをデータベースとして、PostgreSQLとMySQLを選択することができます。
今回はMySQLとApcheベースでZabbixサーバを構築します。

RockyLinux9の仮想マシン構築

ZabbixはLinuxベースで構築されるため、Virtual BoxにRocky Linux 9の仮想マシンを立てて、その上にZabbixサーバを構築します。

以下のサイトからISOをインストールします。
https://rockylinux.org/download
CPUアーキテクチャとインストールするバージョンを選択します。
今回はx86_64のv9.4のMinimal ISO(1.7GB)をインストールします。

仮想マシン構築

Virtual Boxで仮想マシンを作成します。
VM VirtualBoxマネージャー起動後、画面上部の新規ボタンをクリックし、仮想マシンを新規作成します。

仮想マシンの名前と先ほどダウンロードしたISOを設定します。設定できたら次へをクリックします。

ユーザ名とパスワードを設定します。

次に仮想マシンのメモリ容量とCPUのコア数を設定します。
今回はメモリを8GB、CPUを4コアで設定します。

ハードディスクの容量を256GBに設定します。

完了ボタンをクリックし、仮想マシンの設定を完了させます。

コントローラにISOを設定し、ネットワークにブリッジアダプターを割り当てます。

Rocky Linux9.4設定

それでは起動しましょう!作成した仮想マシンを選択し、右クリック 起動>通常起動で仮想マシンを起動させます。

起動後以下の画面で「Install Rocky Linux9.4」を選択します。

Rocky Linuxが起動するので、初期設定を行っていきます。
使用する言語を選択します。

インストール先とユーザの設定を行います。

インストール概要画面からシステムのインストール先を選択します。
構成をカスタマイズしないならば、自動構成が選択されていることを確認して完了ボタンをクリックします。

インストール概要画面からユーザ設定のrootパスワードを選択します。
rootアカウントのパスワードを設定し、rootアカウントをロックにチェックを入れ、セキュリティ上の都合でrootがアクセス及び操作できないように設定します。

インストール概要画面からユーザ設定のユーザの作成を選択します。
任意のユーザを作成し、このユーザを管理者にするにチェックを入れて管理者権限を付与します。

設定が完了したら、インストールの開始を選択します。

インストールが完了したら、再起動させます。

再起動後、rootでアクセスできないことと、作成したユーザでログインできることを確認できました!

Zabbixサーバの構築

それではZabbixサーバを構築していきます。
Zabbixサーバーは、3つの異なるコンポーネントであるZabbixサーバー、Webインターフェース、データベースストレージに分けられます。
以下が今回構築するZabbixサーバの構成図です。
WebインターフェースはApache+PHPで、ZabbixサーバーはZabbixサーバサービスで、データベースストレージはMySQLで構成します。

パッケージのインストール

それでは構築に必要なソフトウェア類をインストールします。

# システムのパッケージを更新
sudo dnf -y update

以下のサイトでプラットフォームを選択し、手順に沿ってインストールします。
https://www.zabbix.com/jp/download?zabbix=7.0&os_distribution=rocky_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=apache

Zabbix リポジトリのインストールとZabbixサーバ、エージェント等をインストールします。
既にEPELが提供するZabbixパッケージをインストールしている場合のみ、以下の対応が必要です。

# 存在するか確認する。なければ対応不要
sudo ls /etc/yum.repos.d/epel.repo

# 編集
sudo vi /etc/yum.repos.d/epel.repo

/etc/yum.repos.d/epel.repoに以下のものを追記します。

/etc/yum.repos.d/epel.repo
[epel]
...
excludepkgs=zabbix*

Zabbix リポジトリのインストールとZabbix関連のパッケージをインストールするため
以下のコマンドを実行します。

# リポジトリのインストール
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-3.el9.noarch.rpm
sudo dnf clean all

# Zabbixサーバ等のパッケージをインストール
sudo dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

# MySQLのインストール
sudo dnf -y install mysql-server

MySQLの設定

MySQLのサービスの起動と設定を行います。

# サービスを起動
sudo systemctl start mysqld.service
# サービスの自動起動を設定
sudo systemctl enable mysqld.service
# 確認
sudo systemctl status mysqld.service
# セキュリティの設定を行う
mysql_secure_installation

mysql_secure_installationは以下のように設定します。

mysql_secure_installationについて
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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 ←yを選択

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
Please set the password for root here.

New password:            ←rootのパスワードを設定

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y  ←yを選択
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) : y ←yを選択
Success.


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) : y ←yを選択
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No):y  ←yを選択
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y ←yを選択
Success.

All done!

以下実際の画面

初期データベース作成

MySQLの初期データベースを作成します。
先ほど設定したrootユーザでログインし、zabbixデータベースとMySQLアカウントの作成、権限付与を行います。

# ログイン
mysql -u root -p
# zabbixデータベースを作成(データベース名: zabbix)
create database zabbix character set utf8mb4 collate utf8mb4_bin;
# MySQLアカウント作成(ユーザ名:zabbix、パスワード:rockyzabbix)
create user zabbix@localhost identified by 'rockyzabbix';
# zabbixユーザにzabbixデータベースを操作する権限を付与
grant all privileges on zabbix.* to zabbix@localhost;
# ロギングを有効化
set global log_bin_trust_function_creators = 1;
# ログアウト
quit;

# 初期スキーマとデータをインポート(時間かかる)
# zabbixユーザのパスワードを入力
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

# ログイン
mysql -u root -p
# ロギングを無効化
set global log_bin_trust_function_creators = 0;
# ログアウト
quit;

Zabbixの設定

それでは先ほど作成したMySQLのデータベースをzabbixサーバのデータベースストレージとして使用するための設定をしていきます。
/etc/zabbix/zabbix_server.confを編集して、以下ようにデータベースのパスワード部分を変更します。

# 設定ファイルを編集
sudo vi /etc/zabbix/zabbix_server.conf
/etc/zabbix/zabbix_server.conf
# パスワード部分に先ほど作成したzabbixユーザーのパスワードを追記
DBPassword=rockyzabbix

Zabbixサーバ、エージェント、Apache、PHPのサービス再起動し、設定を反映させその後、サービス自動起動設定を有効にします。

# 再起動(設定反映)
sudo systemctl restart zabbix-server zabbix-agent httpd php-fpm
# 自動起動有効化
sudo systemctl enable zabbix-server zabbix-agent httpd php-fpm

ファイヤーウォールの設定

サーバを起動させることはできましたが、このままでは外部からZabbixにアクセスすることはできません。
外部からZabbixにアクセスできるようにファイヤーウォールの設定を変更します。

ファイヤーウォール確認・有効化

はじめにファイヤーウォールが有効になっているか確認します。
ステータスがActive: active (running)となっていればファイアウォールが有効になっており、
Active: inactive (dead)となっている場合はファイアウォールが無効になっています。

# ファイヤーウォールが有効になっているか確認
sudo systemctl status firewalld

無効になっていた場合は以下のコマンドで有効にします。

sudo systemctl start firewalld
sudo systemctl enable firewalld

HTTPと80番ポートを許可

今回はhttpでアクセスするので、80番ポートとhttp通信をファイヤーウォールで許可してもらうように設定を変更します。
まずは、現状許可されているポート、サービスを確認します。

# 許可されているサービスの確認
sudo firewall-cmd --list-services --zone=public --permanent
# 許可されているポートの確認
sudo firewall-cmd --list-ports --zone=public --permanent

HTTPと8080番ポートを許可するように変更します。

# 80番を許可
sudo firewall-cmd --add-port=80/tcp --zone=public --permanent
# httpを許可
sudo firewall-cmd --add-service=http --zone=public --permanent

# 反映
sudo firewall-cmd --reload

これでファイヤーウォールの設定完了です!

Webインターフェース起動確認

これで外部からアクセスできるようになりました。それではホスト端末からZabbixサーバにアクセスしてみましょう。
以下のコマンドでサーバのIPアドレスを確認します。

# サーバのIPを確認
ip a

仮想マシンに割り当てされているIPアドレスは192.168.10.4だったので、そのIPをホスト端末のブラウザで指定し、管理画面アクセスします。
URL: http://192.168.10.4/zabbix/
画面起動できました!

日本語対応&初期セットアップ

日本語を表示できるように設定していきます。以下のパッケージをインストールし、タイムゾーンとロケーションの設定を行います。

# 日本語化に関するパッケージをインストール
sudo dnf -y install glibc-locale-source glibc-langpack-ja zabbix-web-japanese
# タイムゾーン変更
timedatectl set-timezone Asia/Tokyo
# ロケーション変更
sudo localectl set-locale LANG=ja_JP.utf8
# キーマップ変更
sudo localectl set-keymap jp106
# 確認
localectl

日本語を選択できるようになりました!
それではセットアップしていきます!次のステップをクリックします。

全ての項目がOKになっていることを確認して次のステップをクリックします。

データベース接続設定では、先ほど作成したMySQLのデータベース名、ユーザ名、ユーザのパスワードを入力して、次のステップをクリックします。

サーバ名とタイムゾーンを選択し、次のステップをクリックします。
タイムゾーンはAsia/Tokyoに設定しました。

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

終了をクリックし、これでセットアップ完了です!

初期ユーザ名: Admin、初期パスワード: zabbixでサインインします。

サインイン後はダッシュボードが表示されます!これでZabbixで遊べる環境を作成できました!

おわりに

環境構築はできたので、これを使ってZabbixで遊んでいきたいと思います!
今後もZabbixで遊んだ内容を掲載していく予定です。

参考リンク

https://www.zabbix.com/jp/download?zabbix=7.0&os_distribution=rocky_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=apache
https://qiita.com/Chiramium/items/d4fcae7872bc00928894
https://qiita.com/T_Tsan/items/4b4d9c302bc1531c3312
https://vpscafe.net/install-zabbix6-rockylinux9/
https://right8se.blog/linux642/
https://qiita.com/Higemal/items/936fb0a2f07a83bafff2
https://www.tohoho-web.com/ex/zabbix.html
https://qiita.com/murachi1208/items/3c0dab0f90b3ba992b06

Discussion