1. pg_stats_reporter とは?
  2. 機能概要
    1. Webレポート機能
    2. コマンドライン機能
  3. インストール
    1. 動作確認環境
    2. パッケージのインストール
    3. 初期設定
    4. 動作確認
  4. 操作方法
    1. Webレポート機能の操作方法
    2. コマンドライン機能の操作方法
  5. アンインストール
  6. 設定ファイル
  7. 使用上の注意と制約
  8. よくあるQ&A
  9. pg_stats_reporter 1.0 からの変更点
  10. 関連項目
  11. 謝辞

pg_stats_reporter 2.0

pg_stats_reporter とは?

pg_statsinfo-2.5 が収集した統計情報を元に、PostgreSQL サーバの利用統計情報をHTML形式のグラフィカルなレポートで出力します。

当ツールで作成したレポートの例はこちらをご覧ください。

機能概要

pg_stats_reporter は pg_statsinfo が統計情報(以降、スナップショットと呼びます)を蓄積しているデータベース(以降、リポジトリDBと呼びます)からレポート作成に必要な情報を取得し、HTML形式のグラフィカルなレポートを作成します。

pg_stats_reporter を利用する際には、以下の2つのレポート作成機能があります。

Webレポート機能

Webレポート機能では、Apache HTTP Server と連携して pg_stats_reporter が動作します。
WEBサーバにブラウザを利用してアクセスすることで、ブラウザ上での操作によりレポートを作成することが可能です。

コマンドライン機能

コマンドライン機能では、端末上でのコマンド実行によりレポートを作成することができます。
コマンドライン機能の利用には Apache HTTP Server を必要としません。何らかの理由でApache HTTP Serverを実行出来ない場合や、crond等で一定期間のレポートを日々作成したい場合に特にお勧めします。

インストール

pg_stats_reporter のインストールについて説明します。インストールパッケージはこちらからダウンロードしてください。
ソースセットからインストールする場合は、ソースセットに同梱されている INSTALL.ja ファイルを参照してください。

動作確認環境

pg_statsinfo
バージョン 2.4 以降
動作確認済みPHP
バージョン 5.3.3 (OS同梱のもの)
動作確認済みOS
RHEL 5.9, RHEL 6.4
動作確認済みブラウザ
Internet Explorer : 9, 10
Firefox : 10.0.12, 21.0
Google Chrome : 27.0.1453.110 m
Safari (Windows版) : 5.1.7
動作確認済みHTTP Server
Apache HTTP Server : 2.2.3 (RHEL 5.9 同梱のもの), 2.2.15 (RHEL 6.4 同梱のもの)
利用ライブラリ (pg_stats_reporter のインストールパッケージに同梱)
ディスプレイ解像度
1024x786(SXGA)以上推奨

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

依存するパッケージを yum コマンド、または rpm コマンドでインストールします。以下はインストール例です。

$ su
/* yum コマンドを使用したインストール例 */
# yum install httpd php php-pgsql php-intl php-cli

/* rpm コマンドを使用したインストール例 */
# rpm -ivh httpd-2.2.15-15.el6_2.1.x86_64.rpm \
           php-common-5.3.3-3.el6_2.8.x86_64.rpm \
           php-5.3.3-3.el6_2.8.x86_64.rpm \
           php-pdo-5.3.3-22.el6.x86_64.rpm \
           php-pgsql-5.3.3-3.el6_2.8.x86_64.rpm \
           php-intl-5.3.3-3.el6_2.8.x86_64.rpm \
           php-cli-5.3.3-22.el6.x86_64.rpm

※php-intl のRPMファイルは、インストールディスク2枚目の以下のパスに格納されています。
  Packages/php-intl-5.3.3-22.el6.x86_64.rpm
※php-intl が未インストールの状態でも動作しますが、表示言語の自動設定が機能しなくなります。

rpm コマンドで pg_stats_reporter をインストールします。以下はインストール例です。

# rpm -ivh pg_stats_reporter-2.0.0-1.el6.noarch.rpm

以下はコマンドライン機能のみを使用する場合のインストール例です。

$ su
/* yum コマンドを使用したインストール例 */
# yum install php-pgsql php-intl php-cli

/* rpm コマンドを使用したインストール例 */
# rpm -ivh php-common-5.3.3-3.el6_2.8.x86_64.rpm \
           php-pdo-5.3.3-22.el6.x86_64.rpm \
           php-pgsql-5.3.3-3.el6_2.8.x86_64.rpm \
           php-intl-5.3.3-3.el6_2.8.x86_64.rpm \
           php-cli-5.3.3-22.el6.x86_64.rpm

※php-intl のRPMファイルは、インストールディスク2枚目の以下のパスに格納されています。
  Packages/php-intl-5.3.3-22.el6.x86_64.rpm
※php-intl が未インストールの状態でも動作しますが、表示言語の自動設定が機能しなくなります。

rpm コマンドで pg_stats_reporter をインストールします。以下はインストール例です。

# rpm -ivh --nodeps pg_stats_reporter-2.0.0-1.el6.noarch.rpm

初期設定

リポジトリDBの設定

設定ファイルを編集し、リポジトリDBへの接続情報を設定します。設定ファイルの説明はこちらを参照してください。
設定例はこちらを参照してください。

HTTP Serverの起動

Webレポート機能を使用する場合は、HTTP Server を起動します。

# service httpd start

動作確認

Webレポート機能の動作確認

Webレポート機能の操作方法の手順に従い HTTP Server にアクセスし、レポート画面が表示されることを確認してください。

コマンドライン機能の動作確認

コマンドライン機能の操作方法の手順に従いスナップショット一覧表示を実行し、スナップショット一覧が表示されることを確認してください。

操作方法

ここでは、pg_stats_reporter の操作方法を説明します。

Webレポート機能の操作方法

ブラウザから下記のURLにアクセスします。
URLのホスト名は pg_stats_reporter の実行環境にあわせて変更してください。

http://<ホスト名>/pg_stats_reporter/pg_stats_reporter.php

上記のURLにアクセスすると、初期状態のレポートを表示します。


操作方法詳細

画面の操作方法を以下に示します。

レポート画面

① : Create report range ボタン
レポート作成期間を変更します。詳細はレポート作成期間指定ダイアログを参照してください。
② : リポジトリDB選択メニューのリポジトリ選択
選択すると、アコーディオン形式でリポジトリDBで管理している監視対象DBの情報を表示/非表示します。
③ : リポジトリDB選択メニューの監視対象DB
選択すると、現在表示中のレポートと同じ期間で該当の監視対象DBのレポートを表示します。
④ : Reload pg_stats_reporter.ini ボタン
設定ファイルの再読み込みを行います。読み込み後は起動時と同様の条件でレポートを表示します。
⑤ : ヘッダメニュー
選択すると、レポートの該当項目へ移動します。
⑥ : メニュー表示/非表示ボタン
ボタンを押すごとに、左側のメニューの表示/非表示が切り替わります。
⑦ : ヘルプボタン
表やグラフの簡単な説明が表示されます。

レポート作成期間指定ダイアログ


⑧ : レポート期間開始日時指定ボックス
レポート期間の開始年月日を入力します。選択すると、日時指定のダイアログボックスが表示されます。
⑨ : レポート期間終了日時指定ボックス
レポート期間の終了年月日を入力します。選択すると、日時指定のダイアログボックスが表示されます。
⑩ : Create report ボタン
入力した期間でレポートを作成します。
⑪ : Cancel ボタン
レポート期間の指定をキャンセルします。

コマンドライン機能の操作方法

レポート作成

$ pg_stats_reporter [-R DBNAME] [-i INSTANCEID] [-a] [-O DIRECTORY] [-b SNAPID] [-e SNAPID] [-B DATE] [-E DATE]

以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBのスナップショットを元に、以下の条件のレポートを出力します。

なお、レポートの出力先ディレクトリにはHTML形式のレポートファイルの他に、CSSおよびJavaScriptが作成されます。

$ pg_stats_reporter -R sample
-R, --repositorydb=DBNAME
レポート対象の監視対象インスタンスのスナップショットを保持するリポジトリDBの名前を指定します。
本オプションは省略可能です。省略時は設定ファイルの先頭のリポジトリDBを使用します。
-i, --instid=INSTANCEID=DBNAME
レポート対象とする監視対象インスタンスの識別子を指定します。
本オプションは省略可能です。省略時は全ての監視対象インスタンスがレポート対象です。
-a, --all
本オプションが指定された場合は、強制的に全てのレポート項目を表示します。
-O, --outputdir=DIRECTORY
レポートの出力先ディレクトリを指定します。
本オプションは省略可能です。省略時はカレントディレクトリに出力します。
指定されたディレクトリが存在しない場合は作成します。
-b, --beginid=SNAPID
レポート範囲の開始点とするスナップショットをスナップショットIDで指定します。
本オプションは省略可能です。省略時は最初のスナップショットを開始点とします。(*1) (*2)
-e, --endid=SNAPID
レポート範囲の終了点とするスナップショットをスナップショットIDで指定します。
本オプションは省略可能です。省略時は最後のスナップショットを終了点とします。(*1) (*2)
-B, --begindate=DATE
レポート範囲の開始点とするスナップショットを日時 (YYYY-MM-DD HH:MI:SS形式) で指定します。
本オプションは省略可能です。省略時は最初のスナップショットを開始点とします。(*1) (*2)
-E, --enddate=DATE
レポート範囲の終了点とするスナップショットを日時 (YYYY-MM-DD HH:MI:SS形式) で指定します。
本オプションは省略可能です。省略時は最後のスナップショットを終了点とします。(*1) (*2)

*1: スナップショットID指定と日時指定を混在して指定することはできません。
*2: レポート範囲の開始点と終了点の両方が省略された場合は、前日の午前0時から現在日時の範囲とします。

スナップショット一覧表示

$ pg_stats_reporter -l [-R DBNAME] [-i INSTANCEID]

以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBに蓄積されているスナップショットの一覧を表示します。

$ pg_stats_reporter -l -R sample
-l, --list
本オプションが指定された場合はスナップショット一覧を表示します。
-R, --repositorydb=DBNAME
スナップショット一覧を表示するリポジトリDBの名前を指定します。
本オプションは省略可能です。省略時は設定ファイルの先頭のリポジトリDBを使用します。
-i, --instid=INSTANCEID
スナップショット一覧を表示する監視対象インスタンスの識別子を指定します。
本オプションは省略可能です。省略時は全ての監視対象インスタンスのスナップショット一覧を表示します。

監視対象インスタンス一覧表示

$ pg_stats_reporter -L [-R DBNAME]

以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBに登録されている監視対象インスタンスの一覧を表示します。

$ pg_stats_reporter -L -R sample
-L, --dblist
本オプションが指定された場合は監視対象インスタンス一覧を表示します。
-R, --repositorydb=DBNAME
監視対象インスタンス一覧を表示するリポジトリDBの名前を指定します。
本オプションは省略可能です。省略時は設定ファイルの先頭のリポジトリDBを使用します。

スナップショットサイズ表示

$ pg_stats_reporter -s [-R DBNAME]

以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBに蓄積されているスナップショットのサイズを表示します。

$ pg_stats_reporter -s -R sample
-s, --size
本オプションが指定された場合はスナップショットサイズを表示します。
-R, --repositorydb=DBNAME
スナップショットサイズを表示するリポジトリDBの名前を指定します。
本オプションは省略可能です。省略時は設定ファイルの先頭のリポジトリDBを使用します。

インデックス作成

$ pg_stats_reporter --index [-O DIRECTORY]

以下にコマンド例を示します。
コマンド例では、ディレクトリ名 "/var/report" 直下に存在するレポートのインデックスを作成します。

$ pg_stats_reporter --index -O /var/report
--index
本オプションが指定された場合はレポートのインデックスを作成します。
-O, --outputdir=DIRECTORY
レポートの出力先ディレクトリを指定します。
本オプションは省略可能です。省略時はカレントディレクトリが適用されます。

アンインストール

rpm コマンドでアンインストールします。
なお、アンインストールにより設定ファイル(/etc/pg_stats_reporter.ini)は削除されません。設定ファイルを削除したい場合は手動で削除してください。

$ su
# rpm -e pg_stats_reporter-2.0.0-1.el6.noarch

ソースセットからインストールした場合のアンインストール手順は、ソースセットに同梱されている INSTALL.ja ファイルを参照してください。

設定ファイル

設定ファイルは、"/etc" に "pg_stats_reporter.ini" という名称で配置されています。
設定ファイルの内容は、グローバル設定とリポジトリDB設定の2種類のセクションで構成されています。

グローバル設定

グローバル設定は、セクション名 "[global_setting]" のセクションの設定項目です。
グローバル設定の設定項目は、RPMパッケージからインストールした場合は変更する必要はありません。
ソースセットからインストールした場合のみ変更してください。詳細はソースセットに同梱されている INSTALL.ja ファイルを参照してください。

リポジトリDB設定

グローバル設定以外のセクションがリポジトリDB設定のセクションとなり、1個のリポジトリDBにつき1個のセクションで設定項目を記述します。
この時、リポジトリDB設定のセクション名がリポジトリDB名となります。

リポジトリDB設定のセクションの設定項目を以下に示します。
記述例はこちらを参照してください。

設定項目 設定可能な値 項目省略時 設定値省略時 設定例 説明
[リポジトリDB名] 文字列 省略不可 省略不可 [repository1] 左側のリポジトリ選択メニューに表示するリポジトリDBの名称を指定します。
host ホスト名または IP アドレス (*1) 空文字列 host = localhost 接続するリポジトリDBのホストを指定します。指定するホスト名は、PostgreSQLが受け付ける形式で指定する必要があります。
port ポート番号 (*1) 空文字列 port = 5432 接続するリポジトリDBのポート番号を指定します。PostgreSQL の待ち受けポートを指定してください。
dbname 文字列 (*1) (*1) dbname = postgres 接続するリポジトリDBのデータベース名を指定します。pg_statsinfo でリポジトリDBとして使用しているデータベースの名称を指定してください。
username 文字列 (*1) (*1) username = postgres リポジトリDBに接続するDBユーザの名称を指定します。リポジトリDBに参照権限のあるDBユーザの名称を指定してください。
password 文字列 パスワード指定なし パスワード指定なし password = リポジトリDBへの接続で使用するパスワードを指定します。PostgreSQL への接続パスワードを .pgpass を使用して設定する場合は、値を設定しないでください。
language auto/ja/en auto en language = ja レポートの表示言語の言語タグを設定します。auto を設定した場合は、表示するブラウザの設定を使用します。指定した言語に対応するメッセージが存在しない場合は英語で表示します。(*2)
表示項目
(summary ? profiles)
true/false true false summary = true レポートに項目の表示/非表示を bool 値で設定します。

*1: 設定項目または設定値を省略した場合の挙動については、PostgreSQL日本語ドキュメントのこちらを参照してください。
*2: php-intl が未インストールの状態で auto が設定されている場合は強制的に英語で表示されます。

使用上の注意と制約

pg_stats_reporter を使用する際には、以下の使用上の注意と制約があります。

よくあるQ&A

Q1. pg_stats_reporter の画面が表示されません。

A1. ファイアウォール、および SELinux の設定が正しい設定となっているか見直してください。

Q2. データベース接続失敗のエラーが表示されて、pg_stats_reporter の画面が表示されません。

A2. 以下の2点を確認してください。

Q3. ブラウザに Internet Explorer を使用してレポートを表示したところ、正しく表示されません。

A3. ブラウザに Internet Explorer を使用してレポートを作成した場合、Internet Explorer のバージョンによって正しく表示されない場合があります。ブラウザは Firefox を使用することを推奨します。

Q4. Apache HTTP Server の worker モードには対応していますか?

A4. PHP の仕様のため、worker モードでの使用は推奨されません。prefork モードで使用するか、コマンドライン機能を使用してください。

pg_stats_reporter 1.0 からの変更点

pg_stats_reporter 1.0 からの変更点は以下の通りです。


関連項目

pg_statsinfo

謝辞

pg_stats_reporter では、以下のライブラリを活用させていただいております。感謝いたします。