0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【構築ログ②】AWS EC2 × Zabbix監視基盤|Zabbix 6.0 をEC2に構築|ハマりポイントまとめ

0
Last updated at Posted at 2026-02-04

はじめに

本記事は「AWS EC2 × Zabbix監視基盤構築シリーズ」の第2回です。

『【構築ログ①】AWS EC2 × Zabbix監視基盤|IAMユーザーでEC2構築~SSH接続まで』
https://qiita.com/AWS_show/items/827c25c17d1b99da08e0
の続きとなります。

第2回では、Ubuntu Server 22.04 LTS 環境を前提に、
Zabbix 6.0 LTS(Server / Agent / Web)および MariaDB の導入から、
Web UI 表示確認、ロケール準備(日本語表示)までを扱います。

なお、当初は Amazon Linux 2023 で構築を試みましたが、
Zabbix 関連パッケージの互換性の観点から、
Ubuntu Server 22.04 LTS に統一して検証を実施しています。

構成の再確認

本シリーズでは、単一のEC2インスタンス上に
Zabbix Server / Agent を構築し、
監視データを CloudWatch Logs 経由で S3 に集約する構成を採用しています。

image.png

本記事では、上記構成のうち
Zabbix Server / Web / DB 構築部分を対象とします。

検証環境

本記事の検証は、以下の環境で実施しています。

項目 内容
クラウド AWS
サービス EC2
OS Ubuntu Server 22.04 LTS
Zabbix 6.0 LTS
Webサーバ Apache
DB MariaDB
PHP Ubuntu標準(Apache連携)
リージョン ap-northeast-1(東京)

本検証では、手順の再現性を高めるため、
OS 初期設定(パッケージ更新・タイムゾーン設定・基本ツール導入)を先に揃えてから、
Zabbix やデータベースなどのミドルウェアを導入します。

OSの更新

AMI は作成された時点の状態で提供されるため、
起動直後の OS には最新のパッケージや、
セキュリティパッチが含まれていない場合があります。

そのため構築作業を開始する前に、
OS のパッケージを最新状態に更新します。

sudo apt update
# 登録されているリポジトリから最新のパッケージ情報を取得

sudo apt upgrade -y
# インストール済みパッケージを最新バージョンへ更新

OSの更新が終了すると、画面が変わります。
一見すると警告画面のように見えますが、
「再起動しないと新しいカーネルは有効にならない」という表示です。

<OK> を選択します。
スクリーンショット 2026-02-03 110143.png

以下はサービスの再起動を求める表示です。
後ほど再起動するので、デフォルトのまま<OK>を選択します。
スクリーンショット 2026-02-03 110309.png

タイムゾーンの変更

タイムゾーンはログや監視結果の時刻を人が把握できるようにするために設定します。
特に Zabbix のような監視システムでは重要です。

timedatectl
# タイムゾーンの確認

sudo timedatectl set-timezone Asia/Tokyo
# タイムゾーンを日本に変更

timedatectl
# 再度タイムゾーンの確認

タイムゾーン変更前
image.png

タイムゾーン変更後
image.png

タイムゾーンがAsia/Tokyoになりました。

必須ツールのインストール

以下のコマンドで、サーバ構築・運用作業を行うための
基本的なツール群をまとめてインストールします。

設定ファイル編集、通信確認、証明書・署名検証など、
以降の作業で頻繁に利用するため、初期段階で導入します。

sudo apt install -y \
vim \
curl \
wget \
net-tools \
ca-certificates \
gnupg \
lsb-release

以下は各ツールの解説です。

vim
# テキストエディタ

curl
#HTTP/HTTPS 通信ツール

wget
# ファイルダウンロード用ツール

net-tools
# ネットワーク確認コマンド群

ca-certificates
# SSL/TLS 証明書の検証用CA

gnupg
# GPG署名検証ツール

lsb-release
# OS情報取得用ツール

ほとんどのパッケージはすでに最新版が導入されていたので、
net-tools のみ新規に追加されました。

image.png

Zabbix リポジトリ追加

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo apt update

Zabbix Server / Web / Agent / DB をインストール

Zabbixを MySQL(MariaDB)+ Apache + PHP 構成で動かすために、
必要な主要コンポーネントをまとめてインストールします。

sudo apt update
sudo apt install -y \
  mariadb-server \
  zabbix-server-mysql \
  zabbix-frontend-php \
  zabbix-apache-conf \
  zabbix-sql-scripts \
  zabbix-agent

コマンドとコンポーネントの解説

コマンド

sudo:管理者権限
apt install:パッケージをインストール
-y:確認を自動で yes

sudo apt install -y

Zabbixが使うデータベース

  • 監視データ
  • 設定情報
  • ユーザー情報
    これらを保存するためのDBサーバ。
mariadb-server

Zabbixの中枢(サーバ本体)

  • エージェントやSNMPからデータ収集
  • トリガー判定
  • DBへの読み書き
    mysqlが付いているのは、DBに MySQL / MariaDB を使う構成だから。
zabbix-server-mysql

ZabbixのWeb管理画面(PHP)

  • ブラウザから操作するUI
  • 監視設定、グラフ表示、障害確認
zabbix-frontend-php

Apache 用の Zabbix 設定ファイル

  • Apache に Zabbix Web UI を組み込む設定
  • DocumentRoot や PHP の紐付け

これがあることで Apache + Zabbix + PHP がすぐ連携できる。

zabbix-apache-conf

Zabbix用データベース初期化SQL

  • テーブル定義
  • 初期データ

/usr/share/zabbix-sql-scripts/にSQLが配置される。
DB初期化時に必須。

zabbix-sql-scripts

監視対象に入れるエージェント

  • CPU / メモリ / ディスク使用率
  • プロセス情報 などを取得

今回の構成では自身を監視するので、エージェントをいれる。

zabbix-agent

サーバの再起動

カーネルやサービスを再起動する必要があります。

sudo reboot

再起動を実施するため、SSH 接続は一度切断されます。
数十秒待ってから、改めてSSHで接続をします。

ssh -i <キーのパス> ubuntu@<EC2のパブリックIP>

Zabbix 用データベースの作成

MariaDBに入る

sudo mariadb

DB・ユーザー作成

CREATE DATABASE zabbix
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_bin;

CREATE USER 'zabbix'@'localhost'
  IDENTIFIED BY 'zabbix_pass';

GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';

FLUSH PRIVILEGES;
EXIT;

CREATE DATABASE zabbix : zabbix という名前のデータベースを作成
CHARACTER SET utf8mb4 : 完全な UTF-8。Zabbix公式推奨。
COLLATE utf8mb4_bin; : バイナリ比較(大文字小文字を区別)

CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbix_pass'; :
ユーザー名:zabbix
接続元:localhost(同一サーバからのみ)
パスワード:zabbix_pass
を設定している。

GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; :
zabbix データベースに対して、すべての操作権限を付与
zabbix.* : zabbix DB の中だけに権限を与えている。
FLUSH PRIVILEGES; : 権限テーブルを再読み込みして、変更を即反映させる

Zabbix 初期スキーマ投入

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz \
| mariadb -u zabbix -pzabbix_pass zabbix

Zabbix Server が動作するために
必要なデータベースの設計図(スキーマ)と初期データを
zabbix データベースに流し込んでいます。

以下はコマンドの解説です。

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | : 解凍しながら標準出力に流す

/usr/share/zabbix-sql-scripts/mysql/server.sql.gz : Zabbix 用 DBスキーマ

mariadb -u zabbix -pzabbix_pass zabbix : 初期データが入り、数百個のテーブルが作られる

要素 意味
mariadb MariaDB クライアント
-u zabbix zabbix ユーザーで接続
-p... パスワード指定
zabbix 接続先 DB 名

このコマンドが返ってくるまで、少し時間がかかりました。
何も表示されず、プロンプトに戻れば成功です。

成功確認

mariadb -u zabbix -pzabbix_pass -e "SHOW TABLES;" zabbix | wc -l
# 例: 174

zabbix データベースに存在するテーブル数を数えている。
174 個のテーブルが存在する、という意味。
以下はコマンドの詳細。

mariadb :コマンドラインから DB に接続して SQL を実行します。
-u zabbix : Zabbix Server が実際に使うユーザー
-pzabbix_pass : パスワードを指定
-e "SHOW TABLES;" : SQL を1行だけ実行するオプション
SHOW TABLES; : 現在接続している DB に存在するすべてのテーブル名を一覧表示
zabbix : 接続先の データベース名
| wc -l : パイプで渡して、行数を数える

SHOW TABLES で多数のテーブルが作成されていることを確認できたため、
スキーマ投入は成功と判断しました。

なぜテーブルの数が多いのか

Zabbix では、監視対象、監視項目、障害情報、履歴データなど、
性質の異なる大量の情報を扱う。

これらを1つのテーブルにまとめてしまうと、
構造が複雑になり、検索性能や保守性が低下する。

そのため Zabbix では、
役割ごとにテーブルを分割する設計を採用しているため、
結果としてテーブル数が多くなっている。

Zabbix Server の設定ファイル確認と変更

Zabbix Server 設定ファイル確認します

sudo vi /etc/zabbix/zabbix_server.conf

以下の項目を探して設定を変更します。
追加と変更を行いました。

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix_pass
# 行90-110ぐらいの間にあります

Zabbix Server を起動

起動していきます。

sudo systemctl enable zabbix-server
sudo systemctl start zabbix-server
sudo systemctl status zabbix-server --no-pager

無事にactive(running)と表示されました。
image.png

Apache と PHP の起動方式について整理

Zabbix Web フロントエンドは PHP で実装されているため、
Apache 上で PHP を実行できる環境が必要となります。
Apache で PHP を動かす方法には、主に以下の2通りがあります。

  • mod_php:Apache に PHP モジュールを組み込む方式
  • PHP-FPM:Apache とは別プロセスで PHP を実行する方式

Apache がどの PHP 実行方式を使っているか確認

Zabbix Web は 「Apache + PHP」 が動作していれば問題ありません。
以下のコマンドを使用して、環境を確認していきます。

sudo apache2ctl -M 2>/dev/null | grep -i php
# Apache に PHP モジュールが組み込まれているか確認

ここで以下のような表示が出たので、
Apache は mod_php を使用して PHP を実行している構成であることがわかりました。

php_module (shared)

mod_php を利用する場合

Apache 用の PHP モジュール(mod_php) をインストールします。
Apache の中に PHP の実行機能を組み込みます。

sudo apt install -y libapache2-mod-php
sudo systemctl restart apache2

以下のコマンドで、確認します。

curl -I http://localhost/zabbix

image.png

正常に応答が返っていることを確認できました。
ローカルPCからアクセスします。

http://<EC2のパブリックIP>/zabbix/

無事にアクセスできました。
image.png

Zabbixにログインする

Configure DB connectionのユーザー名・パスワードは、
先ほど作成した zabbix / zabbix_pass を入力します。
ユーザー名とパスワードを求めるページに移動します
image.png

image.png

Zabbix UIは以下でログインできます。
ユーザー名: Admin
パスワード: zabbix
image.png

image.png

英語表示を日本語表示に変更する

User settings(左下) → Profile → Language
日本語に変更します。

日本語のロケールが入っていないため、変更することができませんでした。
まずはOSに日本語のロケールを入れます。
image.png

日本語ロケールをインストール

sudo apt update
sudo apt install -y language-pack-ja

ロケールを生成

sudo locale-gen ja_JP.UTF-8

システムのデフォルトロケールを設定

sudo update-locale LANG=ja_JP.UTF-8

EC2を再起動

sudo reboot

改めて、EC2にSSH接続をします。

ssh -i <キーのパス> ubuntu@<EC2のパブリックIP>

日本語に変更できました。
image.png

まとめ

本記事では、Ubuntu Server 22.04 LTS 環境で
Zabbix 6.0 LTS の構築を行いました。

主に以下の内容を実施しました。

  • OS のパッケージ更新および基本設定
  • Zabbix / MariaDB / Apache / PHP のインストール
  • Zabbix 用データベースの作成および初期化
  • Zabbix Server の設定および起動確認
  • Web UI へのアクセス確認
  • 日本語ロケールの準備

これにより、Zabbix Server が動作する基盤環境を構築することができました。

最後に

次回の記事では、Zabbix の各種設定を行い、
実際に監視を開始します。

CPU やディスクに意図的に負荷をかけ、
トリガーの発火やアラートの挙動を確認するとともに、
問題発生時にどのように状況を把握し、
どのような対応を行うべきかについて検証していく予定です。

補足

リポジトリとは何か

リポジトリとはソフトウェア(RPMパッケージ)が保管されている配布元(倉庫)
dnf や yum は、あらかじめ登録されたリポジトリを参照し、
そこからパッケージを取得・インストールする仕組みになっている。

リポジトリ定義ファイルの役割

リポジトリ定義ファイルとは、
「どこから」「どのソフトを」「安全に」取得してよいか
を定義した設定ファイルである。

比喩で理解する「リポジトリ」と「リポジトリ定義ファイル」

ソフトウェアを=商品 として考えてみました。

リポジトリとは(=倉庫)

リポジトリは

ソフトウェア(RPMパッケージ)が保管されている倉庫

  • AlmaLinux公式リポジトリ
  • Zabbix公式リポジトリ

それぞれ 別の倉庫 を意味しています。


dnf / yum とは(=配達業者)

dnfyum

指定された倉庫に行って、商品を取りに行く配達業者

配達業者は倉庫の場所を勝手に探すことはできません。


リポジトリ定義ファイルとは(=配達先リスト)

リポジトリ定義ファイルは

配達先リスト

「この倉庫に行っていい」
「この商品を扱っている」
「正規品かどうか確認する方法」
これらをまとめた 配達先リスト である。

このリストは以下の場所に保管されている。

/etc/yum.repos.d/
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?