はじめに
備忘を兼ねて、ZabbixサーバのDB分離構成を構築した際の手順を投稿します。
※VirtualBox上で構築しました。
構成図
1.環境準備
| VM名 | OS | CPU | メモリ | ディスク | 役割 |
|---|---|---|---|---|---|
| DB VM | AlmaLinux 9 | 2 vCPU | 4GB | 40GB SSD | PostgreSQL DB |
| Zabbix Server VM | AlmaLinux 9 | 4 vCPU | 8GB | 20GB SSD | Zabbix Server + Web UI |
リソース割り当ての方針
DB VM側:
- メモリ重視(4GB)→ PostgreSQLのバッファキャッシュ
- ディスクはI/O集中型(40GB SSD)→ WALログ・履歴データ
- CPUはクエリ処理に最低限(2 vCPU)
Zabbix Server VM側:
- CPU重視(4 vCPU)→ ポーラー・トラッパー処理
- メモリはWeb UIとZabbixキャッシュ用(8GB)
- ディスクはログと一時ファイル用(20GB)
2.サーバ構築
OSインストール後に各VMで共通して、基本設定を行います。
自分の備忘のために、こちらも設定項目を記載しておきます。
↓
OSインストール後の共通設定一覧
| 項目 | 設定内容 | コマンド例 |
|---|---|---|
| OS更新 | 最新パッケージへ更新 | dnf update -y |
| 基本パッケージ導入 | vimやネットワークツールなど最低限の導入 | dnf install -y vim openssh-server |
| タイムゾーン設定 | Asia/Tokyo に設定 | timedatectl set-timezone Asia/Tokyo |
| SELinux設定 | 永続で無効化(任意) |
/etc/selinux/config → SELINUX=disabled
|
| SELinux設定 | 一時的に無効化(任意) | setenforce 0 |
| ファイアウォール | 検証用途では停止(任意) |
systemctl stop firewalldsystemctl disable firewalld
|
| ネットワーク確認 | IPアドレスや疎通確認 |
ip a / ping 8.8.8.8
|
| ネットワーク確認 | IPアドレスの設定(任意) | 一時的:ip addr / 永続化:nmcli
|
| ホスト名設定 | ホスト名が正しく設定されているか確認 | hostnamectl |
| ホスト名設定 | 新しいホスト名を設定 | sudo hostnamectl set-hostname <host名> |
| ホスト名設定 | /etc/hosts編集 |
/etc/hosts → <IPアドレス> <host名>
|
| ホスト名設定 | PS1変数にホスト名を含めるよう設定 | export PS1="[\u@\h \W]\\$ " |
| ホスト名設定 | プロンプト設定を永続化(bashの場合) | echo 'export PS1="[\u@\h \W]\\$ "' >> ~/.bashrc |
SSH設定
| 項目 | 設定内容 | コマンド例 |
|---|---|---|
| SSH(パスワード認証の場合) | サービス起動と自動起動設定 | systemctl enable --now sshd |
| SSH(パスワード認証の場合) | ポート22が開いているか確認 | ss -tnlp | grep ssh |
| SSH(パスワード認証の場合) | rootログイン禁止(推奨) |
/etc/ssh/sshd_config → PermitRootLogin no
|
| SSH(パスワード認証の場合) | 設定変更を反映 | systemctl restart sshd |
| SSH(公開鍵認証の場合) | サービス起動と自動起動設定 | systemctl enable --now sshd |
| SSH(公開鍵認証の場合) | ポート22が開いているか確認 | ss -tnlp | grep ssh |
| SSH(公開鍵認証の場合) | authorized_keys に公開鍵を登録 |
~/.ssh/authorized_keys に追記 |
| SSH(公開鍵認証の場合) | セキュリティ強化(推奨) |
/etc/ssh/sshd_config → PermitRootLogin no
|
| SSH(公開鍵認証の場合) | 公開鍵認証運用時に設定(任意) |
/etc/ssh/sshd_config → PasswordAuthentication no
|
| SSH(公開鍵認証の場合) | 設定変更を反映 | systemctl restart sshd |
2.1 DBサーバ構築
DB VM(VirtualBox)設定一覧
| 項目 | 設定内容 |
|---|---|
| マシン名 | Zabbix2 DB |
| ISOイメージ | AlmaLinux-9.6-x86_64-minimal.iso |
| ゲストOSタイプ | Red Hat (64-bit) |
| メインメモリ | 4096MB(4GB) |
| プロセッサー数 | 2 vCPU |
| ディスクサイズ | 40.00 GB |
| ディスク割り当て方式 | 可変サイズ(全サイズ事前割り当て:false) |
| EFI有効 | false |
| ホスト名 / ドメイン名 | Zabbix2-DB.myguest.virtualbox.org |
| Guest Additionsのインストール | false |
| 自動インストール | false |
ディレクトリ構成
# DBサーバのディレクトリ構成
/var/lib/pgsql/data
├── postgresql.conf # DB設定ファイル
├── pg_hba.conf # 接続制御設定
└── pg_ident.conf # ユーザーマッピング
/var/lib/pgsql/data
├── base/ # 実データファイル
├── pg_wal/ # WALログ
└── global/ # グローバル設定・メタ情報
/var/log/postgresql/
└── postgresql.log # DBログ
設定項目
| 設定内容 | コマンド例 |
|---|---|
| PostgreSQLインストール (拡張モジュールも含む) |
dnf install -y postgresql-server postgresql-contribpostgresql-setup --initdb
|
| DBサービス起動と自動起動設定 | systemctl enable --now postgresql |
| Zabbix用DBとユーザー作成 |
psql -U postgres 内で以下を実行:CREATE DATABASE zabbix;CREATE USER zabbix WITH PASSWORD 'zabbixpass';GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
|
| postgresql.conf編集 |
/var/lib/pgsql/data/postgresql.conf → listen_addresses = '*' に変更 |
| postgresql.conf編集 ログ設定(任意) |
log_destination = 'stderr'log_directory = '/var/log/postgresql'log_statement = 'none'log_min_duration_statement = 1000
|
| ログ出力先ディレクトリの作成 (任意) |
mkdir /var/log/postgresqlchown postgres:postgres /var/log/postgresql |
| pg_hba.conf編集 |
/var/lib/pgsql/data/pg_hba.conf → host all all <任意のサブネット> md5 を追加 |
| DBサービス再起動 | sudo systemctl restart postgresql |
確認項目
- 作成したデータベースの確認:
postgres=# \lまたはpostgres=# SELECT datname FROM pg_database; - ユーザ(ロール)の確認:
postgres=# \duまたはpostgres=# SELECT rolname FROM pg_roles; - Zabbix用DB接続確認:
psql -h <ホスト名> -U <接続ユーザ> <データベース>
2.2 Zabbix Server構築
Zabbix Server VM(VirtualBox)設定一覧
| 項目 | 設定内容 |
|---|---|
| マシン名 | Zabbix2 Server |
| ISOイメージ | AlmaLinux-9.6-x86_64-minimal.iso |
| ゲストOSタイプ | Red Hat (64-bit) |
| メインメモリ | 8192 MB(8GB) |
| プロセッサー数 | 4 vCPU |
| ディスクサイズ | 20.00 GB |
| ディスク割り当て方式 | 可変サイズ(全サイズ事前割り当て:false) |
| EFI有効 | false |
| ホスト名 / ドメイン名 | Zabbix2-Server.myguest.virtualbox.org |
| Guest Additionsのインストール | false |
| 自動インストール | false |
ディレクトリ構成
# Zabbix Serverのディレクトリ構成
/etc/zabbix/
├── zabbix_server.conf # Zabbix Server設定ファイル
├── web/ # Web UI設定 (PHP, Apache/Nginx連携)
└── zabbix_agentd.conf # Agent設定(必要に応じて)
/var/log/zabbix/
├── zabbix_server.log # Serverログ
└── zabbix_agentd.log # Agentログ
/usr/share/zabbix/sql-scripts/postgresql
└── server.sql.gz # 初期スキーマやデータ投入用SQL
※ 環境やパッケージのバージョンによってファイル配置場所が異なる場合があります。
rpm -ql <パッケージ名>コマンドで、適宜ファイル配置を確認してください。
Zabbix-serverの設定項目
| 設定内容 | コマンド例 |
|---|---|
| Zabbixリポジトリ追加 |
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpmdnf clean all
|
| Server + Frontendインストール | dnf install -y zabbix-server-pgsql zabbix-web-pgsql php-pgsql zabbix-apache-conf |
| Zabbixエージェントインストール(任意) | dnf install -y zabbix-agent |
| PostgreSQL関連のインストール | dnf install -y zabbix-sql-scripts postgresql |
| DB接続設定(zabbix_server.conf) |
DBHost=<DBホスト名>DBName=zabbixDBUser=zabbixDBPassword=zabbixpass
|
| 初期スキーマ投入 | zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | psql -h <DBホスト名> -U zabbix zabbix |
| zabbix_server.conf編集 ログ設定(任意) |
LogFile=/var/log/zabbix/zabbix_server.logLogFileSize=1
|
| サービス起動と自動起動設定 | systemctl enable --now zabbix-server zabbix-agent httpd |
Web UIの設定項目
| 設定内容 | コマンド例・操作内容 |
|---|---|
| Apache起動と自動起動設定 | systemctl enable --now httpd |
| PHPタイムゾーン設定 |
/etc/php.ini にて date.timezone = Asia/Tokyo を設定 |
| Web UI初期セットアップ | ブラウザで http://<Zabbix ServerのIP>/zabbix にアクセス |
| DB接続情報の入力 | GUIで以下を入力: DBタイプ:PostgreSQL ホスト:zbx-db DB名:zabbix ユーザー:zabbix パスワード:zabbixpass |
| 初期ログイン | ユーザー名:Adminパスワード: zabbix
|
| 日本語化(任意) | Web UI右上の「ユーザー設定」から言語を Japanese に変更 ※ dnf install -y glibc-langpack-jaコマンドで日本語ロケール のインストールが必要です。 |
ログインまでできると、以下のような画面が表示されます。
