pg_metrics PostgreSQL Metrics
pg_metrics is a PostgreSQL metrics collector for use with statsd.
Installation
gem install pg_metrics
The pg_metrics_statsd command is now available.
Usage
To collect PostgreSQL instance metrics on localhost port 5432 and pass them to a statsd instance running on localhost port 8125:
pg_metrics_statsd --host localhost --port 8125 --connection "host=localhost port=5432"
To collect PostgreSQL database metrics for the prod database, include the
--dbname parameter:
pg_metrics_statsd --host localhost --port 8125 --connection "host=localhost port=5432" --dbname=prod
By default, pg_metrics_statsd collects stats from pg_locks,
pg_stat_user_functions (where available), pg_stat_user_tables,
pg_stat_user_tables, pg_stat_user_indexes, pg_statio_user_indexes,
as well as per-table and per-index sizes. You can omit stats by supplying
command line flags:
--no-functions--no-locks--no-table-stats--no-table-statio--no-index-stats--no-index-statio--no-table-sizes--no-index-sizes
You can also use the --only flag to collect only the explicitly specified
stats. For example, to collect only table and index size stats:
pg_metrics_statsd --only --table-sizes --index-sizes --dbname=prod
Free space
pg_metrics_statsd can also collect table free space metrics provided the
pg_freespacemap contrib module is installed. To include free space metrics,
pass the --table-free-space flag along with the database. Collecting free
space metrics is not included by default.
For postgres versions 8.4 and higher, free space metrics take a while to generate.
Index ideal sizes
pg_metrics_statsd includes an option to measure ideal index size, which is
an estimate of how much disk space an index should require if it contains no
dead tuples. This can be useful, along with index sizes, to estimate how bloated
indexes are. To collect ideal index size metrics, pass the --index-ideal-sizes
flag.
pgbouncer metrics
pg_metrics can also collect pgbouncer metrics by passing the --pgbouncer
flag.
pg_metrics_statsd --host localhost --port 8125 --connection "host=localhost port=6432" --pgbouncer