Debian wheezyでpg_stats_reporterを動かしてみる

2014/10/13

pg_stats_reporter PHP PostgreSQL

pg_stats_reporterは、pg_statsinfoが収集するPostgreSQLの稼働統計情報をレポート化するツールです。 AJAXベースのWebアプリで、稼働統計情報をグラフや表にしてくれます。 サーバサイドは、PHPで作られています。 Red Hat向けにはRPMが提供されているのですが、Debian向けのdebは提供されていません。 ということで、インストールの際のはまりどころをまとめました。

とは言っても、たいしたことはありません。 また、Debian wheezyでのインストール方法と言うより、PHP 5.4でのインストール方法と言うべきかもしれません。

基本的なやり方

コミュニティページからダウンロードしたtar.gzファイルの中に、INSTALL.jaというファイルが同梱されています。 これに沿って作業をすれば、概ね問題なくインストールできます。 PHPで作られたWebアプリで、必要なモジュール類も全て同梱されているので、しかるべき場所にファイルをコピーすればほとんど終わりです。 ただ、はまりどころがいくつかあります。

pg_stats_reporterのPHP 5.4対応漏れ

pg_stats_reporter_lib/module/make_report.phpの47行目を修正しないと、画面に何も表示されません。 Webサーバのログに以下のようなメッセージが記録されるはずです。
Fatal error: Call-time pass-by-reference has been removed in ...
関数呼び出し時の参照渡しの修正漏れと思われ、以下のような修正が必要です。
diff -Naurpd pg_stats_reporter_lib.orig/module/make_report.php pg_stats_reporter_lib/module/make_report.php
--- pg_stats_reporter_lib.orig/module/make_report.php   2013-06-24 18:40:50.000000000 +0900
+++ pg_stats_reporter_lib/module/make_report.php    2014-09-04 13:40:59.520926741 +0900
@@ -44,7 +44,7 @@ function makeReport($conn, $infoData, $t
    $html_string["left_menu"] = makeLeftMenu($infoData, $target_info);

    /* get snapshot id */
-   if (!getSnapshotID($conn, $target_info, &$snapids, &$snapdates)) {
+   if (!getSnapshotID($conn, $target_info, $snapids, $snapdates)) {
        $html_string["contents"] = "<div id=\"contents\">\n<div class=\"top_jump_margin\"></div>\n".makeErrorTag($error_msg['query_error'], pg_last_error($conn));
    } else if ($snapids[0] == $snapids[1] || is_null($snapids[0]) || is_null($snapids[1])) {
        /* check whether there are two more than a snapshot */

各種ファイルの置き場所

ここからはカスタマイズの範疇で、不具合ではありません。

リポジトリDBなどの設定を記述するpg_stats_reporter.iniの配置場所は、pg_stats_reporter_lib/module/define.phpに記述されています。 CONFIG_PATHというdefine値を好きな場所に変更すればよいです。 ただ、DBのパスワードなどを記述するため、WWW経由でアクセスできない場所がよいでしょう。

pg_stats_reporter_libの場所を変えるのはちょっとやっかいです。 html/pg_stats_reporter/pg_stats_reporter.phpの中に3カ所と、pg_stats_reporter_lib/module/define.phpにもあります。 それぞれ、「../../pg_stats_reporter_lib」とハードコーディングされています。

pg_statsinfoは?

pg_statsinfoは、ビルドと/usr配下への配置が必要なので、deb化しました。 pg_stats_reporterは、Webサーバが外に見せるところに適当に放り込めば終わりだろ、と思っていたのですが、上のようなはまりどころがあったわけです。

環境

  • Debian wheezy
  • PHP 5.4
  • pg_stats_reporter 2.0.0

QooQ