[pgsql-jp: 40791] Re: pg_statsinfo 1.2でautovacuum情報取得について

Tomoaki Sato sato @ sraoss.co.jp
2011年 5月 20日 (金) 01:14:36 JST


佐藤です。

> お世話になっております。山田です。
> 
> ご回答ありがとうございます。
> 
>>ログフィルタは有効にしていますか?(笠原様)
>>データベースサーバはどのように起動しているでしょうか。(佐藤様)
> 
> セットした記憶はあるのですが、ログフィルターが有効になっておりませんでし
> た。
> 
>>Syslog には自動バキュームとチェックポイントに関するメッセージ
>>が出力されているでしょうか(佐藤様)
> 
> こちらは出力されていることを確認しております。
> 
> ご回答を参考に、以下のような作業を実施致しました。
> しかしながら、結果はデータ取得できておりません。
> 
> ・ログフィルターを有効に設定
> -bash-3.2$ pg_ctl -D $PGDATA start | pg_get_logfilterinfo --postgres-datadir=$PGDATA &
> [1] 3807
> -bash-3.2$ サーバは起動中です。
> [2011-05-19 16:50:31 JST][3811][][]LOG:  ライブラリ"pg_stat_statements"をロードしました
> [2011-05-19 16:50:31 JST][3812][][]LOG:  データベースシステムは2011-05-19 16:50:21 JSTにシャットダウンしました
> [2011-05-19 16:50:31 JST][3815][][]LOG:  自動バキュームランチャプロセス
> [2011-05-19 16:50:31 JST][3811][][]LOG:  データベースシステムの接続受付準備が整いました。
(snip)
> 今回の作業について、何か原因などが見えましたら、ご教示お願いしたく存じます。

ログに出力されるメッセージが日本語だからではないですかね。

pg_get_logfilterinfo では、パイプで受け取ったメッセージを以下のパター
ンでマッチングして解析しているので、日本語ではうまく処理できないんだと
思います。

# autovacuum log format
$FORMAT_ATVCM_IN1 = q(LOG: \s\s [0-9]* [:]* \s* automatic \s vacuum \s of \s table \s \"(\w+)\.(\w+)\.(\w+)\": \s index \s scans: \s (\d+) \Z);
$FORMAT_ATVCM_IN2 = q( \s+ pages: \s (\d+) \s removed, \s (\d+) \s remain \Z);
$FORMAT_ATVCM_IN3 = q( \s+ tuples: \s (\d+) \s removed, \s (\d+) \s remain \Z);
$FORMAT_ATVCM_IN4 = q( \s+ system\susage: \s CPU \s (\d+\.\d+)s/(\d+\.\d+)u \s sec \s elapsed \s (\d+\.\d+) \s sec \Z);

# checkpoint log format
$FORMAT_CHKPT_IN1 = q(LOG: \s\s [0-9]* [:]* \s* checkpoint \s starting: \s ([\w\s]+) \Z);
$FORMAT_CHKPT_IN2 = q(LOG: \s\s [0-9]* [:]* \s* checkpoint \s complete: \s wrote \s (\d+) \s buffers \s \\((\d+\.\d+)\%\\); \s (\d+)\s transaction \s log \s file \\(s\\) \s added, \s (\d+) \s removed, \s (\d+) \s recycled; \s write=(\d+\.\d+) \s s, \s sync=(\d+\.\d+) \s s, \s total=(\d+\.\d+) \s s \Z);

lc_messages の値を C に設定して確認してみてください。


----
Tomoaki Sato <sato @ sraoss.co.jp>
SRA OSS, Inc. Japan


pgsql-jp メーリングリストの案内