PostgreSQL に格納した任意のデータを使って 汎用的な HTML レポートを作成します。 pg_statsinfo-2.2
と併用することで、pg_statsinfoで取得したサーバの利用統計情報のグラフィカルな出力が可能になります。
pg_statsinfo で取得した利用統計情報を用いたレポート例はこちらをご覧ください。また、レポート出力結果の見方についてはこちらをご覧ください
pg_reporter は、テンプレートを使って PostgreSQL に格納したデータからレポートを作成します。
ユーザは自由にテンプレートを作成でき、そのテンプレートを元にレポートを出力することができます。(オリジナルのレポートを作成するには SQL と HTML の知識が必要です。)
pg_repoter には、以下の動作モードがあります。
pg_repoter 2.0 へのバージョンアップに伴う機能の変更点は以下の通りです。
pg_reporter のインストールについて説明します。各インストールパッケージはこちらからダウンロードして下さい。
$ su # rpm -ivh pg_reporter-1.0.1-1.pg84.rhel5.x86_64.rpm
pg_reporter のsourceからのインストールは、標準の contrib モジュールと同様ですが、PostgreSQL が --with-libxml 付きでビルドされている必要があります。(RPM はデフォルトで --with-libxml が付いています)
pgxs を使ってビルドできます。
$ cd pg_reporter $ make USE_PGXS=1 $ make USE_PGXS=1 install
注意:
PostgreSQL9.0 の RPM では、各種ファイルのインストールディレクトリが変更されているため、 pg_reporter の RPM もそれと同じディレクトリへ各ファイルをインストールするようになっています。
例えば、実行ファイルは従来"/usr/bin"配下に配置されていましたが、PostgreSQL9.0 用の RPM では "/usr/pgsql-9.0/bin" になっています。
pg_reporter を CGI モードで使用する場合、Apache HTTP Server のインストールを行います。
以下はx86_64用の rpm をインストールする例です。
# rpm -ivh httpd-2.2.11-1.x86_64.rpm
Apache HTTP Server の CGI 格納ディレクトリに pg_reporter を格納します。
以下はPostgreSQL8.4 の rpm をインストールした場合の格納の例です。
※ pg_reporterはPostgreSQL のインストール先ディレクトリに含まれる bin ディレクトリ配下に格納されています。
# cp /usr/bin/pg_reporter /var/www/cgi-bin
Apache HTTP Server を起動します。
# service httpd start
pg_reporter に付属するレポート・テンプレートは pg_statsinfo のリポジトリを表示させるためのものです。
前もって pg_statsinfo のリポジトリを初期化してください。
スキーマ情報表示のみであれば、特にデータベースへの登録作業は必要ありません。
コマンドラインモードで、レポートを作成する手順を説明します。
レポートを作成するためのディレクトリを作成します。下記の例ではユーザのホームディレクトリ配下にstatsinfoというレポート用ディレクトリを作成しています。指定したディレクトリがすでに存在する場合は、エラーとなりますので注意してください。
$ pg_reporter -i ~/statsinfo
statsinfo にディレクトリを移動し、レポートを作成します。
この時、他のほとんどの PostgreSQL ユーティリティと同様、libpq でサポートされる環境変数を使用できます。詳細については、PostgreSQL文書の環境変数の項目を参照してください。
下記の例では、localhost のポート5432で稼動している PostgreSQL の postgres というデータベースに postgres というユーザで接続し、添付のテンプレート details.xml を使い、さらにスナップショット ID が1から10の情報を用いた出力結果を、レポートとして report.html
に作成しています。
$ cd statsinfo $ pg_reporter -h localhost -p 5432 -U postgres -d postgres -t template/details.xml -o files/report.html -a "begin=1&end=10"
また、下記の例では、localhost のポート5432で稼動している PostgreSQL の postgres というデータベースに postgres というユーザで接続し、添付のテンプレート details_date.xml を使い、さらに2011/12/21のスナップショットの情報を用いた出力結果を、レポートとしてreport.htmlに作成しています。-a
オプションのm_hostには監視対象データベースが起動しているホスト名を、m_portには監視対象データベースの接続に使用しているポート名を指定します。
$ cd statsinfo $ pg_reporter -h localhost -p 5432 -U postgres -d postgres -t template/details_date.xml -o files/report.html -a "m_host=localhost.localdomain&m_port=5432&begin=2011-12-21 00:00:00&end=2011-12-21 24:00:00"
完成したレポートは、ブラウザで見ることができます。
CGIモードで、レポートを作成するための手順を説明します。
レポート用ディレクトリをドキュメントルートに作成します。
下記の例は、Apache を RPM でインストールした場合の標準のドキュメントルートをレポート用ディレクトリとして初期化しています。標準のドキュメントルートを使用する場合はルートユーザで初期化を行う必要があります。また、ドキュメントルートのディレクトリが既に存在する場合は、エラーとなりますので注意してください。
# pg_reporter -i /var/www/html
データベース接続情報設定ファイル (pg_reporter.conf) にデータベース接続情報を記述します。
下記の例は、localhost のリポジトリデータベースへの接続情報をDB001として記述しています。また、/var/www/htmlをレポート用ディレクトリに指定しています。なお、レポート用ディレクトリには絶対パスを指定してください。
# vi /var/www/html/pg_reporter.conf DB001 /var/www/html localhost 5432 postgres postgres postgres
pg_reporter.conf は pg_reporter の実行ファイルと同じディレクトリ内に存在する必要があるため、pg_reporter.conf を /var/www/cgi-bin 配下に移動します。
# mv /var/www/html/pg_reporter.conf /var/www/cgi-bin
また、下記の内容のシェルスクリプト pg_reporter を cgi-bin 配下に用意することで、pg_reporter.conf を 任意の場所に配置して、pg_reporter を起動することができます。
# vi /var/www/cgi-bin/pg_reporter #!/bin/sh /usr/bin/pg_reporter -c <データベース接続情報設定ファイル>
リポジトリ DB 選択画面を表示します。ブラウザのアドレスバーに以下の URL を入力してください。URL の記述形式の詳細はこちらを参照してください。
http://localhost/cgi-bin/pg_reporter?id=DB001&template=dbnames
各画面における操作方法の説明はこちらを参照してください。
簡易 httpd モードで、レポートを作成する手順を説明します。
レポートを作成するディレクトリを作成します。指定したディレクトリがすでに存在する場合は、エラーとなりますので注意してください。
下記の例は、ユーザのホームディレクトリに statsinfo を、レポート用ディレクトリとして初期化しています。
$ pg_reporter -i ~/statsinfo
データベース接続情報設定ファイル (pg_reporter.conf) にデータベース接続情報を記述します。
下記の例は、localhost のリポジトリデータベースへの接続情報を DB001 として記述しています。また、ユーザのホームディレクトリ配下の statsinfo をレポート用ディレクトリに指定しています。なお、レポート用ディレクトリには絶対パスを指定してください。
$ vi ~/statsinfo/pg_reporter.conf DB001 <ユーザのホームディレクトリ>/statsinfo localhost 5432 postgres postgres postgres
簡易 httpdモードで pg_reporter を起動します。
下記の例は、接続ポートを8080で、ローカルホストからのみ接続可能な状態で起動します。
(注) -c オプションによるデータベース接続情報設定ファイルのパスの指定は省略することができます。詳細はこちらを参照してください。
$ pg_reporter --httpd -c ~/statsinfo/pg_reporter.conf
ブラウザからローカルホストの8080番ポートにアクセスし、リポジトリDB選択画面を表示します。
下記の例で接続した場合、スナップショットの一覧からのナビゲーションを利用したレポートの閲覧が利用できます。
このとき、css や js ファイルの参照のために、データベース接続情報設定ファイルの1行目の report_dir が参照されることに注意してください。
http://localhost:8080/
また、ブラウザのアドレスバーに下記の URL を指定してもリポジトリDB選択画面を表示することができます。
http://localhost:8080/cgi-bin/pg_reporter?id=DB001&template=dbnames
各画面における操作方法の説明はこちらを参照してください。
初期化モードで作成したレポート用ディレクトリは残りますので、別途手動で削除してください。また、CGI モードで使用するために pg_reporter を CGI 格納ディレクトリに格納した場合も同様に手動で削除してください。
rpm からインストールした場合は rpm コマンドでアンインストールします。
$ su # rpm -e pg_reporter-1.0.1-1.pg84.rhel5
ビルドした環境でアンインストールします。
$ cd pg_reporter $ make USE_PGXS=1 uninstall
レポート用ディレクトリを削除します。下記の例では簡易 httpd モード使用時にユーザのホームディレクトリに作成した statsinfo を削除しようとしています。
$ rm -r ~/statsinfo
コマンド記述形式を下記に示します。
pg_reporter TEMPLATE [OUTPUT]
初期化実行時に作成されるレポート用ディレクトリの構成を以下に示します。
DIR +- css/ +- files/ +- js/ +- pg_reporter.conf +- template/ +- xsl/
データベース接続情報はデータベース接続情報設定ファイル (pg_reporter.conf) に設定します。
DB001 /var/www/html/statsinfo1 localhost 5432 postgres postgres postgres DB002 /var/www/html/statsinfo2 localhost 5433 stats postgres postgres
下記の書式1は CGI モードと簡易 httpd モードの両方で指定が可能です。書式2は簡易 httpd モードのみで指定することが可能です。
http://localhost/cgi-bin/pg_reporter?id=DB001&template=dbnames
pg_reporter を使用する際には、以下の使用上の注意と制約があります。
pg_reporter のパッケージに含まれるテンプレートに指定できるパラメータを以下に示します。コマンドラインモードでレポートを作成する場合は、-a オプションに使用していテンプレートとパラメータを指定してください。CGI モードおよび簡易 httpd モードでレポートを作成する場合は、http://host[:port]/cgi-bin/pg_reporter?id=&template=& の後に使用したいテンプレートとパラメータを指定してください。 IDとTEMPLATEについては以下の通りです。
pg_reporterでは、Report の作成に「HTML5.JP - 次世代HTML標準 HTML5情報サイト(http://www.html5.jp/)」のJavaScriptライブラリを活用させていただいております。感謝いたします。