このページでは、Red Hat Enterprise Linux 環境において Zabbix Server が使用する PostgreSQL のデータベースおよび接続用ユーザーを作成する手順を整理する。
本環境では、監視サーバー(仮称)上の PostgreSQL に対して Zabbix 専用のユーザーとデータベースを作成し、後続のスキーマインポートおよび Zabbix Server の設定で利用する構成としている。
そのため、このページでは事前確認を行ったうえで、Zabbix ユーザーの作成、Zabbix データベースの作成、権限付与、設定確認までの手順を順序立てて説明する。
なお、本ページは外部公開向けの内容であるため、実際のサーバー名や内部 IP アドレスは記載せず、仮称を用いて説明する。
作業対象サーバー
監視サーバー(仮称)(ZBX-WEB)
OS
Red Hat Enterprise Linux 10
構築対象
PostgreSQL 18
Zabbix 用データベース
Zabbix 用 DB ユーザー
本ページで登場するサーバーは以下のとおりである。
監視サーバー(仮称)(ZBX-WEB)
Zabbix Server、PostgreSQL、Web フロントエンドを構成するサーバー
証明書管理サーバー(仮称)(CERT-WEB)
後続手順で HTTPS 化を行う際に証明書管理で使用するサーバー
監視対象 Web サーバー(仮称)(MON-WEB01)
Zabbix Agent2 を導入して監視対象とする Web サーバー
監視対象 DB サーバー(仮称)(MON-DB01)
Zabbix Agent2 を導入して監視対象とする DB サーバー
本ページは外部公開向けページである。
ただし、Zabbix の管理画面や監視基盤そのものは外部公開しておらず、内部利用を前提としている。
そのため、本ページでは実際のサーバー名や内部 IP アドレスは記載せず、仮称を用いて構成を説明する。
Zabbix 用ロールおよびデータベースが未作成であることを確認する。
postgres ユーザーへ切り替える。
su - postgres
解説
PostgreSQL の管理作業は postgres ユーザーで実施する。
まずは管理ユーザーへ切り替える。
psql を起動する。
psql
解説
psql は PostgreSQL の対話型クライアントである。
ここからロールやデータベースの確認、作成を行う。
Zabbix ロールを確認する。
\du
解説
この確認では、すでに zabbix ロールが存在していないかを確認する。
既存環境で重複作成しないための事前確認である。
Zabbix データベースを確認する。
\l
解説
この確認では、すでに zabbix データベースが存在していないかを確認する。
未作成であることを確認してから次の手順へ進む。
zabbix ロールが存在しない
zabbix データベースが存在しない
解説
ここで未作成を確認できれば、新規作成手順としてそのまま進められる。
作成前に、現在のロール一覧を再確認する。
\du
解説
作成対象のロール名が未使用であることを再確認する。
この一手間を入れることで、操作の意図が明確になる。
Zabbix 用ユーザーを作成する。
CREATE USER zabbix WITH PASSWORD 'password';
解説
このコマンドは、Zabbix Server が PostgreSQL に接続するための
専用ロールを作成する。
実際の運用では password の部分は十分に強いパスワードへ置き換える。
ロールが作成されたことを確認する。
\du
解説
一覧の中に zabbix が表示されれば、ユーザー作成は完了している。
作成前に、現在のデータベース一覧を確認する。
\l
解説
zabbix データベースが未作成であることを確認する。
既存データベースがある場合は重複作成しないよう注意する。
Zabbix 用データベースを作成する。
CREATE DATABASE zabbix
OWNER zabbix
ENCODING 'UTF8'
LC_COLLATE='C'
LC_CTYPE='C'
TEMPLATE template0;
解説
OWNER zabbix は作成した zabbix ユーザーを所有者に指定している。
ENCODING 'UTF8' は文字コードを UTF-8 に設定している。
LC_COLLATE='C' と LC_CTYPE='C' は照合順序と文字種別を C に設定している。
TEMPLATE template0 は新規作成時のテンプレートを指定している。
データベースが作成されたことを確認する。
\l
解説
一覧の中に zabbix データベースが表示されれば、データベース作成は完了している。
作成したデータベースの所有者を確認する。
\l
解説
所有者が zabbix になっているかを確認する。
所有者が正しく設定されていれば通常はそのまま進められる。
必要に応じて、Zabbix ユーザーへ権限を付与する。
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
解説
このコマンドは、zabbix データベースに対する権限を zabbix ユーザーへ明示的に付与する。
所有者設定とあわせて、後続の処理で接続しやすい状態にする。
権限付与後の状態を確認する。
\l
解説
データベース一覧のアクセス権限欄を確認し、zabbix ユーザーが対象データベースを利用できる状態であることを確認する。
作成したロールを確認する。
\du
解説
zabbix ロールが存在することを最終確認する。
作成したデータベースを確認する。
\l
解説
zabbix データベースが存在すること、所有者が zabbix になっていることを確認する。
文字コードとロケールを確認する。
SELECT datname,
pg_encoding_to_char(encoding),
datcollate,
datctype
FROM pg_database
WHERE datname='zabbix';
解説
この確認では、zabbix データベースの文字コードとロケールを確認する。
期待する状態は UTF8 / C / C である。
datname が zabbix
pg_encoding_to_char が UTF8
datcollate が C
datctype が C
解説
この結果が確認できれば、Zabbix 用データベースとして想定どおりの設定になっている。
psql を終了する。
\q
解説
対話型クライアントを終了する。
postgres ユーザーのシェルを終了する。
exit
解説
root ユーザーへ戻る。
これでデータベース作成作業は完了である。
必要に応じて、postgres ユーザーから抜けたことを確認する。
whoami
解説
root へ戻っていれば、次の OS 側設定手順へ進める。
この手順が完了すると、以下を満たしている状態になる。
zabbix ロールが作成されている
zabbix データベースが作成されている
zabbix データベースの所有者が zabbix になっている
zabbix データベースが UTF8 / C / C で作成されている
確認コマンド
su - postgres
psql
\du
\l
SELECT datname,
pg_encoding_to_char(encoding),
datcollate,
datctype
FROM pg_database
WHERE datname='zabbix';
\q
exit
次の手順では、
Zabbix の初期スキーマをデータベースへインポートする。