pg_statsinfo-11 が収集した統計情報を元に、PostgreSQL サーバの利用統計情報をHTML形式のグラフィカルなレポートで出力します。
当ツールで作成したレポートの例はこちらをご覧ください。
pg_stats_reporter は pg_statsinfo が統計情報(以降、スナップショットと呼びます)を蓄積しているデータベース(以降、リポジトリDBと呼びます)からレポート作成に必要な情報を取得し、HTML形式のグラフィカルなレポートを作成します。
pg_stats_reporter を利用する際には、以下の2つのレポート作成機能があります。
Webレポート機能では、Apache HTTP Server と連携して pg_stats_reporter が動作します。
WEBサーバにブラウザを利用してアクセスすることで、ブラウザ上での操作によりレポートを作成することが可能です。
Webレポート機能が作成するレポートの種類を以下に示します。
コマンドライン機能では、端末上でのコマンド実行により性能レポートを作成することができます。
コマンドライン機能の利用には Apache HTTP Server を必要としません。何らかの理由でApache HTTP Serverを実行出来ない場合や、crond等で一定期間のレポートを日々作成したい場合に特にお勧めします。
pg_stats_reporter のインストールについて説明します。インストールパッケージはこちらからダウンロードしてください。
ソースセットからインストールする場合は、ソースセットに同梱されている INSTALL.ja ファイルを参照してください。
全ての機能を使用する場合は、ルートユーザで以下のいずれかの手順を実行してください。
# yum install httpd php php-pgsql php-intl php-cli # rpm -ivh pg_stats_reporter-11.0-1.el7.noarch.rpm
# rpm -ivh httpd-2.4.6-67.el7.x86_64.rpm \ php-common-5.4.16-43.el6.x86_64.rpm \ php-5.4.16-43.el7.x86_64.rpm \ php-pdo-5.4.16-43.el7.x86_64.rpm \ php-pgsql-5.4.16-43.el7.x86_64.rpm \ php-intl-5.4.16-43.el7.x86_64.rpm \ php-cli-5.4.16-43.el7.x86_64.rpm \ pg_stats_reporter-11.0-1.el7.noarch.rpm
コマンドライン機能のみを使用する場合は、ルートユーザで以下のいずれかの手順を実行してください。
# yum install php-pgsql php-intl php-cli # rpm -ivh --nodeps pg_stats_reporter-11.0-1.el7.noarch.rpm
# rpm -ivh php-common-5.4.16-43.el7.x86_64.rpm \ php-pdo-5.4.16-43.el7.x86_64.rpm \ php-pgsql-5.4.16-43.el7.x86_64.rpm \ php-intl-5.4.16-43.el7.x86_64.rpm \ php-cli-5.4.16-43.el7.x86_64.rpm # rpm -ivh --nodeps pg_stats_reporter-11.0-1.el7.noarch.rpm
※php-intl のRPMパッケージの入手は、Red Hat カスタマーポータルのサブスクリプション管理サービスを用いる必要があります。
※php-intl が未インストールの状態でも動作しますが、表示言語の自動設定が機能しなくなります。
リポジトリDBが停止している場合は、リポジトリDBを起動します。
設定ファイルを編集し、リポジトリDBへの接続情報を設定します。設定ファイルの説明はこちらを参照してください。
設定例はこちらを参照してください。
Webレポート機能を使用する場合は、HTTP Server を起動します。
# service httpd start
RHEL 7の場合は、以下のコマンドを実行して起動します。
# systemctl start httpd.service
OS 起動時に HTTP Server を自動的に起動させる場合は以下のコマンドを実行します。
# chkconfig httpd on
RHEL 7の場合は、以下のコマンドを実行します。
# systemctl enable httpd.service
Webレポート機能の操作方法の手順に従い HTTP Server にアクセスし、レポート画面が表示されることを確認してください。
コマンドライン機能の操作方法の手順に従いスナップショット一覧表示を実行し、スナップショット一覧が表示されることを確認してください。
ここでは、pg_stats_reporter の操作方法を説明します。
ブラウザから下記のURLにアクセスします。
URLのホスト名は pg_stats_reporter の実行環境にあわせて変更してください。
http://<ホスト名>/pg_stats_reporter/pg_stats_reporter.php
上記のURLにアクセスすると、初期状態の性能レポートが表示されます。
画面の操作方法を以下に示します。
$ 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
$ pg_stats_reporter -l [-R DBNAME] [-i INSTANCEID]
以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBに蓄積されているスナップショットの一覧を表示します。
$ pg_stats_reporter -l -R sample
$ pg_stats_reporter -L [-R DBNAME]
以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBに登録されている監視対象インスタンスの一覧を表示します。
$ pg_stats_reporter -L -R sample
$ pg_stats_reporter -s [-R DBNAME]
以下にコマンド例を示します。
コマンド例では、リポジトリDB名 "sample" のリポジトリDBに蓄積されているスナップショットのサイズを表示します。
$ pg_stats_reporter -s -R sample
$ pg_stats_reporter --index [-O DIRECTORY]
以下にコマンド例を示します。
コマンド例では、ディレクトリ名 "/var/report" 直下に存在するレポートのインデックスを作成します。
$ pg_stats_reporter --index -O /var/report
rpm コマンドでアンインストールします。
なお、アンインストールにより設定ファイル(/etc/pg_stats_reporter.ini)は削除されません。設定ファイルを削除したい場合は手動で削除してください。
$ su # rpm -e pg_stats_reporter-11.0-1.el7.noarch
ソースセットからインストールした場合のアンインストール手順は、ソースセットに同梱されている INSTALL.ja ファイルを参照してください。
設定ファイルは、"/etc" に "pg_stats_reporter.ini" という名称で配置されています。
設定ファイルの内容は、グローバル設定とリポジトリDB設定の2種類のセクションで構成されています。
リポジトリDB設定を複数記述することで、複数のレポートをサイドバーで選択することで、切り替えて表示することができます。
グローバル設定は、セクション名 "[global_setting]" のセクションの設定項目です。
グローバル設定のセクションの設定項目を以下に示します。
設定項目 | 設定可能な値 | デフォルト | 設定例 | 説明 |
---|---|---|---|---|
install_directory | 文字列 | 省略不可 | install_directory = /var/www | 当ツールのインストールディレクトリを指定します。(*a) |
log_page_size | 1 - 1000 | 1000 | log_page_size = 1000 | ログレポート画面の表のページ毎の最大表示件数を指定します。 |
グローバル設定以外のセクションがリポジトリDB設定のセクションとなり、1個のリポジトリDBにつき1個のセクションで設定項目を記述します。
この時、リポジトリDB設定のセクション名がリポジトリDB名となります。
リポジトリDB設定のセクションの設定項目を以下に示します。
記述例はこちらを参照してください。
設定項目 | 設定可能な値 | デフォルト | 設定例 | 説明 |
---|---|---|---|---|
[リポジトリDB名] | 文字列 | 省略不可 | [repository1] | 左側のリポジトリ選択メニューに表示するリポジトリDBの名称を指定します。 |
host | ホスト名または IP アドレス | (*a) | host = localhost | 接続するリポジトリDBのホストを指定します。指定するホスト名は、PostgreSQLが受け付ける形式で指定する必要があります。 |
port | ポート番号 | (*a) | port = 5432 | 接続するリポジトリDBのポート番号を指定します。PostgreSQL の待ち受けポートを指定してください。 |
dbname | 文字列 | (*a) | dbname = postgres | 接続するリポジトリDBのデータベース名を指定します。pg_statsinfo でリポジトリDBとして使用しているデータベースの名称を指定してください。 |
username | 文字列 | (*a) | username = postgres | リポジトリDBに接続するDBユーザの名称を指定します。リポジトリDBに参照権限のあるDBユーザの名称を指定してください。 |
password | 文字列 | パスワード指定なし | password = abc | リポジトリDBへの接続で使用するパスワードを指定します。PostgreSQL への接続パスワードを .pgpass を使用して設定する場合は、値を設定しないでください。(*b) |
language | auto/ja/en | auto | language = ja | レポートの表示言語の言語タグを設定します。auto を設定した場合は、表示するブラウザの設定を使用します。指定した言語に対応するメッセージが存在しない場合は英語で表示します。(*c) |
表示項目 (overview - profiles)(*d) |
true/false | true | overview = true | レポートに項目の表示/非表示を bool 値で設定します。 |
pg_stats_reporter を使用する際には、以下の使用上の注意と制約があります。
A1. ファイアウォール、SELinuxの設定、および PHP のメモリ使用上限設定を必要に応じて変更してください。
getsebool httpd_can_network_connect_db ls -dZ /var/www/pg_stats_reporter_lib/{cache,compiled}
A2. 以下の2点を確認してください。
A3. ブラウザに Internet Explorer を使用してレポートを作成した場合、Internet Explorer のバージョンによって正しく表示されない場合があります。ブラウザは Firefox を使用することを推奨します。
A4. PHP の仕様のため、worker モードでの使用は推奨されません。prefork モードで使用するか、コマンドライン機能を使用してください。
A5. リポジトリDBから現在未使用の監視対象DBのインスタンス情報を削除してください。 インスタンス情報の削除方法は、pg_statsinfoマニュアルの「運用上必要となる作業」を参照してください。
A6. ブラウザ内にJavaScriptのキャッシュが残っているために、正しく表示されていない可能性があります。ブラウザのキャッシュの削除を試してみてください。
pg_stats_reporter 10 からの変更点は以下の通りです。
pg_stats_reporter では、以下のライブラリを活用させていただいております。感謝いたします。