はじめに
本記事は「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 に集約する構成を採用しています。
本記事では、上記構成のうち
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>を選択します。

タイムゾーンの変更
タイムゾーンはログや監視結果の時刻を人が把握できるようにするために設定します。
特に Zabbix のような監視システムでは重要です。
timedatectl
# タイムゾーンの確認
sudo timedatectl set-timezone Asia/Tokyo
# タイムゾーンを日本に変更
timedatectl
# 再度タイムゾーンの確認
タイムゾーンが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 のみ新規に追加されました。
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
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
正常に応答が返っていることを確認できました。
ローカルPCからアクセスします。
http://<EC2のパブリックIP>/zabbix/
Zabbixにログインする
Configure DB connectionのユーザー名・パスワードは、
先ほど作成した zabbix / zabbix_pass を入力します。
ユーザー名とパスワードを求めるページに移動します

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

英語表示を日本語表示に変更する
User settings(左下) → Profile → Language
日本語に変更します。
日本語のロケールが入っていないため、変更することができませんでした。
まずはOSに日本語のロケールを入れます。

日本語ロケールをインストール
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>
まとめ
本記事では、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 とは(=配達業者)
dnf や yum は
指定された倉庫に行って、商品を取りに行く配達業者
配達業者は倉庫の場所を勝手に探すことはできません。
リポジトリ定義ファイルとは(=配達先リスト)
リポジトリ定義ファイルは
配達先リスト
「この倉庫に行っていい」
「この商品を扱っている」
「正規品かどうか確認する方法」
これらをまとめた 配達先リスト である。
このリストは以下の場所に保管されている。
/etc/yum.repos.d/










