April 24, 2024
Summary: This article contains details about the metrics collected by the postgres_exporter.
Table of Contents
The next tables contains details about the metrics collected by the postgres_exporter.
Postgres cluster metrics
| item | metric group | metric | type | description |
|---|---|---|---|---|
| 1 | pg_postmaster | start_time_seconds | GAUGE | Time at which postmaster started |
| 2 | pg_replication | |||
| lag | GAUGE | Replication lag behind master in seconds | ||
| is_replica | GAUGE | Indicates if this host is a slave | ||
| 3 | pg_stat_user_tables | |||
| datname | LABEL | Name of current database | ||
| schemaname | LABEL | Name of the schema that this table is in | ||
| relname | LABEL | Name of this table | ||
| seq_scan | COUNTER | Number of sequential scans initiated on this table | ||
| seq_tup_read | COUNTER | Number of live rows fetched by sequential scans | ||
| idx_scan | COUNTER | Number of index scans initiated on this table | ||
| idx_tup_fetch | COUNTER | Number of live rows fetched by index scans | ||
| n_tup_ins | COUNTER | Number of rows inserted | ||
| n_tup_upd | COUNTER | Number of rows updated | ||
| n_tup_del | COUNTER | Number of rows deleted | ||
| n_tup_hot_upd | COUNTER | Number of rows HOT updated (i.e., with no separate index update required) | ||
| n_live_tup | GAUGE | Estimated number of live rows | ||
| n_dead_tup | GAUGE | Estimated number of dead rows | ||
| n_mod_since_analyze | GAUGE | Estimated number of rows changed since last analyze | ||
| last_vacuum | GAUGE | Last time at which this table was manually vacuumed (not counting VACUUM FULL) | ||
| last_autovacuum | GAUGE | Last time at which this table was vacuumed by the autovacuum daemon | ||
| last_analyze | GAUGE | Last time at which this table was manually analyzed | ||
| last_autoanalyze | GAUGE | Last time at which this table was analyzed by the autovacuum daemon | ||
| vacuum_count | COUNTER | Number of times this table has been manually vacuumed (not counting VACUUM FULL) | ||
| autovacuum_count | COUNTER | Number of times this table has been vacuumed by the autovacuum daemon | ||
| analyze_count | COUNTER | Number of times this table has been manually analyzed | ||
| autoanalyze_count | COUNTER | Number of times this table has been analyzed by the autovacuum daemon | ||
| 4 | pg_statio_user_tables | |||
| datname | LABEL | Name of current database | ||
| schemaname | LABEL | Name of the schema that this table is in | ||
| relname | LABEL | Name of this table | ||
| heap_blks_read | COUNTER | Number of disk blocks read from this table | ||
| heap_blks_hit | COUNTER | Number of buffer hits in this table | ||
| idx_blks_read | COUNTER | Number of disk blocks read from all indexes on this table | ||
| idx_blks_hit | COUNTER | Number of buffer hits in all indexes on this table | ||
| toast_blks_read | COUNTER | Number of disk blocks read from this table’s TOAST table (if any) | ||
| toast_blks_hit | COUNTER | Number of buffer hits in this table’s TOAST table (if any) | ||
| tidx_blks_read | COUNTER | Number of disk blocks read from this table’s TOAST table indexes (if any) | ||
| tidx_blks_hit | COUNTER | Number of buffer hits in this table’s TOAST table indexes (if any) | ||
| 5 | pg_database | |||
| datname | LABEL | Name of the database | ||
| size_bytes | GAUGE | Disk space used by the database | ||
| 6 | pg_archiver | |||
| pending_wal_count | GAUGE | No. of pending WAL files to be archived | ||
| 7 | pg_stat_user_indexes | |||
| schemaname | LABEL | Name of the schema that this table is in | ||
| relname | LABEL | Name of the table for this index | ||
| indexrelname | LABEL | Name of this index | ||
| idx_scan | COUNTER | Number of index scans initiated on this index | ||
| idx_tup_read | COUNTER | Number of index entries returned by scans on this index | ||
| idx_tup_fetch | COUNTER | Number of live table rows fetched by simple index scans using this index | ||
| 8 | pg_statio_user_indexes | |||
| schemaname | LABEL | Name of the schema that this table is in | ||
| relname | LABEL | Name of the table for this index | ||
| indexrelname | LABEL | Name of this index | ||
| idx_blks_read | COUNTER | Number of disk blocks read from this index | ||
| idx_blks_hit | COUNTER | Number of buffer hits in this index | ||
| 9 | pg_total_relation_size | |||
| datname | LABEL | Database name | ||
| schemaname | LABEL | Name of the schema that this table is in | ||
| relname | LABEL | Name of this table | ||
| bytes | GAUGE | total disk space usage for the specified table and associated indexes | ||
| 10 | pg_blocked | |||
| type | LABEL | The lock type | ||
| datname | LABEL | Database name | ||
| schemaname | LABEL | The schema on which a query is blocked | ||
| reltype | LABEL | The type of relation | ||
| relname | LABEL | The relation on which a query is blocked | ||
| queries | GAUGE | The current number of blocked queries | ||
| 11 | pg_oldest_blocked | |||
| age_seconds | GAUGE | Largest number of seconds any transaction is currently waiting on a lock | ||
| datname | LABEL | Database name | ||
| 12 | pg_slow | |||
| queries | GAUGE | Current number of slow queries | ||
| datname | LABEL | Database name | ||
| 13 | pg_long_running_transactions | |||
| datname | LABEL | Database name | ||
| queries | GAUGE | Current number of long running transactions | ||
| age_in_seconds | GAUGE | The current maximum transaction age in seconds | ||
| 14 | pg_vacuum | |||
| datname | LABEL | Database name | ||
| queries | GAUGE | The current number of VACUUM queries | ||
| age_in_seconds | GAUGE | The current maximum VACUUM query age in seconds | ||
| 15 | pg_vacuum_analyze | |||
| datname | LABEL | Database name | ||
| queries | GAUGE | The current number of VACUUM ANALYZE queries | ||
| age_in_seconds | GAUGE | The current maximum VACUUM ANALYZE query age in seconds | ||
| 16 | pg_stuck_idle_in_transaction | |||
| datname | LABEL | Database name | ||
| queries | GAUGE | Current number of queries that are stuck being idle in transactions | ||
| 17 | pg_txid | |||
| current | COUNTER | Current 64-bit transaction id of the query used to collect this metric (truncated to low 52 bits) | ||
| xmin | COUNTER | Oldest transaction id of a transaction still in progress, i.e. not known committed or aborted (truncated to low 52 bits) | ||
| xmin_age | GAUGE | Age of oldest transaction still not committed or aborted measured in transaction ids | ||
| 18 | pg_database_datfrozenxid | |||
| datname | LABEL | Database name | ||
| age | GAUGE | Age of the oldest transaction that has not been frozen | ||
| 19 | pg_wal_position | |||
| bytes | COUNTER | Postgres LSN (log sequence number) being generated on the primary instance or replayed on a replica (truncated to low 52 bits) | ||
| 20 | pg_replication_slots | |||
| slot_name | LABEL | Slot Name | ||
| slot_type | LABEL | Slot Type | ||
| active | GAUGE | Boolean flag indicating whether this slot has a consumer streaming from it | ||
| xmin_age | GAUGE | Age of oldest transaction that cannot be vacuumed due to this replica | ||
| catalog_xmin_age | GAUGE | Age of oldest transaction that cannot be vacuumed from catalogs due to this replica (used by logical replication) | ||
| restart_lsn_bytes | GAUGE | Amount of data on in xlog that must be this replica may need to complete recovery | ||
| confirmed_flush_lsn_bytes | GAUGE | Amount of data on in xlog that must be this replica has not yet received | ||
| 21 | pg_stat_ssl | |||
| pid | LABEL | Process ID of a backend or WAL sender process | ||
| active | GAUGE | Boolean flag indicating if SSL is used on this connection | ||
| bits | GAUGE | Number of bits in the encryption algorithm is in use | ||
| compression | GAUGE | Boolean flag indicating if SSL compression is in use | ||
| 22 | pg_table_bloat | |||
| datname | LABEL | Database name | ||
| schemaname | LABEL | Schema name | ||
| tablename | LABEL | Table name | ||
| real_size | GAUGE | Table real size | ||
| extra_size | GAUGE | Estimated extra size not used/needed in the table. This extra size is composed by the fillfactor, bloat and alignment padding spaces | ||
| extra_ratio | GAUGE | Estimated ratio of the real size used by extra_size | ||
| fillfactor | GAUGE | Table fillfactor | ||
| bloat_size | GAUGE | Estimated size of the bloat without the extra space kept for the fillfactor | ||
| bloat_ratio | GAUGE | Estimated ratio of the real size used by bloat_size | ||
| is_na | GAUGE | Estimation not applicable, If true, do not trust the stats | ||
| 23 | pg_index | |||
| datname | LABEL | Database name | ||
| schema_name | LABEL | Schema name | ||
| tblname | LABEL | Table name | ||
| idxname | LABEL | Index Name | ||
| real_size | GAUGE | Index size | ||
| extra_size | GAUGE | Index extra size | ||
| extra_ratio | GAUGE | Index extra ratio | ||
| fillfactor | GAUGE | Fillfactor | ||
| bloat_size | GAUGE | Estimate index bloat size | ||
| bloat_ratio | GAUGE | Estimate index bloat size ratio | ||
| is_na | GAUGE | Estimate Not aplicable, bad statistic | ||
| 24 | pg_replication_status | |||
| application_name | LABEL | Application or node name | ||
| client_addr | LABEL | Client ip address | ||
| state | LABEL | Client replication state | ||
| lag_size_bytes | GAUGE | Replication lag size in bytes |
Connection pooling metrics
| item | metric group | metric | type | description |
|---|---|---|---|---|
| 1 | pgbouncer_show_clients | |||
| type | LABEL | C, for client | ||
| user | LABEL | Client connected user | ||
| database | LABEL | Database name | ||
| state | LABEL | State of the client connection, one of active or waiting | ||
| addr | LABEL | IP address of client | ||
| port | GAUGE | Port client is connected to | ||
| local_addr | LABEL | Connection end address on local machine | ||
| local_port | GAUGE | Connection end port on local machine | ||
| connect_time | LABEL | Timestamp of connect time | ||
| request_time | LABEL | Timestamp of latest client request | ||
| wait | GAUGE | Current waiting time in seconds | ||
| wait_us | GAUGE | Microsecond part of the current waiting time | ||
| close_needed | GAUGE | not used for clients | ||
| ptr | LABEL | Address of internal object for this connection. Used as unique ID | ||
| link | LABEL | Address of server connection the client is paired with | ||
| remote_pid | GAUGE | Process ID, in case client connects over Unix socket and OS supports getting it | ||
| tls | LABEL | A string with TLS connection information, or empty if not using TLS | ||
| 2 | pgbouncer_show_pools | |||
| database | LABEL | Database name | ||
| user | LABEL | User name | ||
| cl_active | GAUGE | Client connections that are linked to server connection and can process queries | ||
| cl_waiting | GAUGE | Client connections that have sent queries but have not yet got a server connection | ||
| sv_active | GAUGE | Server connections that are linked to a client | ||
| sv_idle | GAUGE | Server connections that are unused and immediately usable for client queries | ||
| sv_used | GAUGE | Server connections that have been idle for more than server_check_delay so they need server_check_query to run on them | ||
| sv_tested | GAUGE | Server connections that are currently running either server_reset_query or server_check_query | ||
| sv_login | GAUGE | Server connections currently in the process of logging in | ||
| maxwait | GAUGE | How long the first oldest client in the queue has waited, in seconds | ||
| maxwait_us | GAUGE | Microsecond part of the maximum waiting time | ||
| pool_mode | LABEL | The pooling mode in use | ||
| 3 | pgbouncer_show_databases | |||
| name | LABEL | Name of configured database entry | ||
| host | LABEL | Host pgbouncer connects to | ||
| port | GAUGE | Port pgbouncer connects to | ||
| database | LABEL | Actual database name pgbouncer connects to | ||
| force_user | LABEL | When the user is part of the connection string the connection between pgbouncer and PostgreSQL is forced to the given user | ||
| pool_size | GAUGE | Maximum number of server connections | ||
| reserve_pool | GAUGE | Maximum number of additional connections for this database | ||
| pool_mode | LABEL | The database override pool_mode | ||
| max_connections | GAUGE | Maximum number of allowed connections for this database | ||
| current_connections | GAUGE | Current number of connections for this database | ||
| paused | GAUGE | 1 if this database is currently paused, else 0 | ||
| disabled | GAUGE | 1 if this database is currently disabled, else 0 | ||
| 4 | pgbouncer_show_stats_totals | |||
| database | LABEL | Database name | ||
| xact_count | GAUGE | Number of SQL transactions pooled | ||
| query_count | GAUGE | Number of SQL queries pooled | ||
| bytes_received | GAUGE | Volume in bytes of network traffic received | ||
| bytes_sent | GAUGE | Volume in bytes of network traffic sent | ||
| xact_time | GAUGE | Number of microseconds spent by pgbouncer when connected to PostgreSQL in a transaction | ||
| query_time | GAUGE | Number of microseconds spent by pgbouncer when actively connected to PostgreSQL | ||
| 5 | pgbouncer_show_stats | |||
| database | LABEL | Database name | ||
| total_xact_count | GAUGE | Total number of SQL transactions pooled | ||
| total_query_count | GAUGE | Total number of SQL queries pooled | ||
| total_received | GAUGE | Total volume in bytes of network traffic received | ||
| total_sent | GAUGE | Total volume in bytes of network traffic sent | ||
| total_xact_time | GAUGE | Total number of microseconds spent by pgbouncer when connected to PostgreSQL in a transaction | ||
| total_query_time | GAUGE | Total number of microseconds spent by pgbouncer when actively connected to PostgreSQL | ||
| total_wait_time | GAUGE | Time spent by clients waiting for a server, in microseconds | ||
| avg_xact_count | GAUGE | Average transactions per second in last stat period | ||
| avg_query_count | GAUGE | Average queries per second in last stat period | ||
| avg_recv | GAUGE | Average received from clients bytes per second | ||
| avg_sent | GAUGE | Average sent to clients bytes per second | ||
| avg_xact_time | GAUGE | Average transaction duration, in microseconds | ||
| avg_query_time | GAUGE | Average query duration, in microseconds | ||
| avg_wait_time | GAUGE | Time spent by clients waiting for a server, in microseconds average per second |
See more
Metrics in Linux monitoring with Prometheus