List of Information and Metrics Collected
The information and metrics collected (and reported) by
pgmetrics are listed
below. Some values are only available in certain PostgreSQL versions and above.
A notation like “v9.6+” indicates that the value is available only in PostgreSQL
version 9.6 and above. Note that versions 9.2 and below are not supported by
The collected information falls into three categories:
This section lists the cluster-level information, which is always collected
irrespective of the number of databases specified on the command line.
Note: Technically, a single running PostgreSQL server manages a
of databases. Not to be confused with the a set of co-operating servers.
- system identifier - v9.6+
- last commit - the last committed transaction ID and timestamp, if the
option is set to
- checkpoint/prior/redo locations - v9.6+
- time of last checkpoint - v9.6+
- timeline ID - v9.6+
- oldest/next/oldest-active transaction IDs - v9.6+
- settings - entries from pg_settings
- pg_stat_activity - the entries from pg_stat_activity. Detailed waiting-for-lock
information is available only in v9.6+. PostgreSQL-internal backend information
present in v10+ is currently not collected.
- pg_stat_archiver - the entries from pg_stat_archiver. v9.4+
- pg_stat_wal - the entries from pg_stat_wal. v14+
- pg_stat_bgwriter - the entries from pg_stat_bgwriter.
- pg_stat_replication - the entries from pg_stat_replication. This gives
details of outgoing replication.
- pg_stat_wal_receiver - the entries from pg_stat_wal_receiver. This gives
details of incoming replication. v9.6+
- pg_replication_slots - the entries from pg_replication_slots. This gives
details of physical and logical replication slots. v9.4+
- last received/replayed location - in recovery mode
- last replayed timestamp - in recovery mode
- is in recovery mode?
- is WAL replay paused?
- current wal/wal insert/wal flush locations - v9.6+
- publications, subscriptions - v10+ (added in pgmetrics v1.4)
- pg_stat_progress_analyze - the entries from pg_stat_progress_analyze. v13+
- pg_stat_progress_basebackup - the entries from pg_stat_progress_basebackup. v13+
- pg_stat_progress_cluster - the entries from pg_stat_progress_cluster. v12+
- pg_stat_progress_copy - the entries from pg_stat_progress_copy. v14+
- pg_stat_progress_create_index - the entries from pg_stat_progress_create_index. v12+
- pg_stat_progress_vacuum - the entries from pg_stat_progress_vacuum. v9.6+
The information about all databases, except template databases, are fetched
from pg_stat_database. For each database, the size as reported by the
pg_database_size() function is also collected.
Note that it is possible to skip the collection of the size using a
The OID, name and location of each tablespace is collected from pg_tablespace.
For the default tablespaces pg_global and pg_default, the value of the PostgreSQL
database directory ($PGDATA) is used.
The size, as reported by
pg_tablespace_size() is also collected. It is possible
to skip this.
The list of roles and associated attributes are collected from pg_auth_members
Locks and Blocked Queries
The list of granted and waiting locks from pg_locks. This is cross-referenced
with the list of blocked backends and their queries to generate the list of
SQL queries alongwith the query they are waiting for and the name of the
table/index it is waiting on.
- number of WAL files in the pg_xlog (pg_wal in v10+) directory
- number of .ready files in the pg_xlog/archive_status (pg_wal/archive_status in v10+) directory
- notification queue usage - v9.6+
This section lists the database-level information, which is collected
for each database that is specified on the command line.
- pg_stat_user_tables - entries from pg_stat_user_tables for all user tables
in the database
- pg_statio_user_tables - entries from pg_statio_user_tables for all
user tables in the database
- pg_table_size - size information for each table as reported by the
pg_table_size() function, can be skipped
- pg_stat_user_indexes - entries from pg_stat_user_indexes for all
user indexes in the database
- pg_total_relation_size - size information for each index as reported by
pg_total_relation_size() function, can be skipped
- pg_statio_user_sequences - entries from pg_statio_user_sequences for all
sequences in the database
- pg_stat_user_functions - entries from pg_stat_user_functions for all
tracked user functions. This will have information only if the
option is enabled in PostgreSQL configuration.
- pg_available_extensions - the name, installed/default versions and comment
for each extension in the database, read from pg_available_extensions
- disabled triggers - the trigger and procedure name for each disabled
trigger in the database, read from pg_trigger and pg_proc
- pg_stat_statements - the slowest 100 queries (this number can be set as
a command-line parameter) as reported by pg_stat_statments
- publications, subscriptions - the logical replication publications and
subscriptions in this database, PostgreSQL v10+ (added in pgmetrics v1.4)
- bloat - the estimated bloat for each table and index, using the same query
from Greg Sabino Mullane’s check_postgres
pgmetrics is run directly on the system where the PostgreSQL server is
running, it can collect additional system-level information from the OS.
Currently, this is done only for Linux systems.
- hostname - the hostname of the system
- disk/inodes used/total - for each tablespace location, including the disk
- cpu - the count and model of the CPU cores
- load average - the 1-minute load average
- memory free/buffers/cached/used - the RAM usage
- swap used/free - the swap usage
AWS RDS & CloudWatch Information
See the AWS RDS page for more information.
Deadlocks, Query Plans and Autovacuum Runs
See the Log Files page for more information.
Citus, Azure Hyperscale
See the Citus page for more information.