opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

pgBadgerを使ってみた

pgBadgerなるPostgreSQLログ解析ツールがあることを知ったので使ってみた。

環境

PostgreSQL 9.4.1 (on Docker)
OS: ArchLinux

PostgreSQLを構築したコンテナのBASEイメージはcentos:7(あんまり関係ない)で、これは先日作成した自作のイメージ。最近Dockerhubにあげて"opamp/postgres"でdocker pullできるけど個人用なので完成度はあしからず。
Docker上で動かして入るが、PGDATAディレクトリもログのディレクトリもホスト(ArchLinux)上に存在しているので直接動かしてるのとあんまり変わらない。

pgBadgerのインストール

ArchLinuxならAURから利用可能。

$ yaourt -S pgbadger

現時点でバージョン7.0だった。
インストール先は"/usr/bin/vendor_perl/pgbadger"となる。

postgresql.confの設定

解析するために、logの出力を設定する必要がある。今回はstderr形式でlogファイルに書き出している。

今回設定した内容を簡単に書く...

log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0

それと、log_messageのロケーションは当然英語にしておく必要がある。

ログを解析してみる

設定後に生成されたログファイルを適当にpgbadgerコマンドに読み込ませて解析してみる。

$ /usr/bin/vendor_perl/pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d ' /path/to/postgresql.log

f:id:opamp_sando:20150520005411p:plain

生成したばっかりなのでほとんど何もかかれてないが、生成されたout.htmlはこんな感じ。

参考資料

http://dalibo.github.io/pgbadger/

http://pgsqldeepdive.blogspot.jp/2012/12/pgbadgersql.html

https://www.postgresql.jp/document/9.4/html/runtime-config-logging.html

Firefox ブラウザ無料ダウンロード