Extend the platform,
empower your team.
Monitor your Postgres performance via our new EF2.0 extension framework.
ExtensionPostgresSQL monitoring solution is based on a remote monitoring approach implemented as a Dynatrace ActiveGate extension. The extension queries Postgres databases for key performance and health. Dynatrace's DAVIS AI then analyzes these metrics to provide anomaly and problem analysis.
Ensure that you have log monitoring enabled to get full log insight.
Steps to activate remote monitoring (version 1.255+):
Create a database user using the following template:
CREATE USER dynatrace WITH PASSWORD '<PASSWORD>' INHERIT;
GRANT pg_monitor TO dynatrace;
To collect WAL metrics, the user must have a superuser
role.
ALTER USER dynatrace WITH SUPERUSER;
There must be connectivity between the ActiveGate, where the extension is deployed, and the Postgres database.
The extension is designed to work with PostgreSQL version 11 and later.
Below is a complete list of the feature sets provided in this version. To ensure a good fit for your needs, individual feature sets can be activated and deactivated by your administrator during configuration.
Metric name | Metric key | Description | Unit |
---|---|---|---|
Instance uptime | postgres.uptime | Time since the instance has been started | Second |
Metric name | Metric key | Description | Unit |
---|---|---|---|
Instance recovery mode | postgres.recovery.state | Indicate that the instance is in recovery mode. 1 if in recovery, 0 otherwise. | State |
Metric name | Metric key | Description | Unit |
---|---|---|---|
Number of backends | postgres.numbackends | Number of backends currently connected to this database | Count |
Committed transactions | postgres.xact_commit.count | Number of transactions in this database that have been committed | Count |
Rolled back transactions | postgres.xact_rollback.count | Number of transactions in this database that have been rolled back | Count |
Block read from disk | postgres.blks_read.count | Number of disk blocks read in this database | Count |
Blocks found in buffer cache | postgres.blk_hit.count | Number of times disk blocks were found already in the buffer cache, so that a read was not necessary | Count |
Live rows returned | postgres.tup_returned.count | Number of live rows fetched by sequential scans and index entries returned by index scans in this database | Count |
Live rows fetched by index scans | postgres.tup_fetched.count | Number of live rows fetched by index scans in this database | Count |
Rows inserted | postgres.tup_inserted.count | Number of rows inserted by queries in this database | Count |
Rows updated | postgres.tup_updated.count | Number of rows updated by queries in this database | Count |
Rows deleted | postgres.tup_deleted.count | Number of rows deleted by queries in this database | Count |
Queries cancleld due to conflict | postgres.conflicts.count | Number of queries canceled due to conflicts with recovery in this database | Count |
Temporary files created | postgres.temp_files.count | Number of temporary files created by queries in this database | Count |
Data written to temporary files | postgres.temp_bytes.count | Total amount of data written to temporary files by queries in this database | Byte |
Deadlocks | postgres.deadlocks.count | Number of deadlocks detected in this database | Count |
Data file blocks reading time | postgres.blk_read_time.count | Time spent reading data file blocks by backends in this database | MilliSecond |
Data file blocks writing time | postgres.blk_write_time.count | Time spent writing data file blocks by backends in this database | MilliSecond |
Time spent by sessions | postgres.session_time.count | Time spent by database sessions in this database | MilliSecond |
Time spent executing SQL statements | postgres.active_time.count | Time spent executing SQL statements in this database | MilliSecond |
Time spent idling | postgres.idle_in_transaction_time.count | Time spent idling while in a transaction in this database | MilliSecond |
Established sessions | postgres.sessions.count | Total number of sessions established | Count |
Abandoned sessions | postgres.sessions_abandoned.count | Number of database sessions to this database that were terminated because connection to the client was lost | Count |
Fatal error terminated sessions | postgres.sessions_fatal.count | Number of database sessions to this database that were terminated by fatal errors | Count |
Killed sessions | postgres.sessions_killed.count | Number of database sessions to this database that were terminated by operator intervention | Count |
Data page checksum failures | postgres.checksum_failures.count | Number of data page checksum failures detected in this database | Count |
Metric name | Metric key | Description | Unit |
---|---|---|---|
Scheduled checkpoints performed | postgres.checkpoints_timed.count | Number of scheduled checkpoints that have been performed | Count |
Requested checkpoints performed | postgres.checkpoints_req.count | Number of requested checkpoints that have been performed | Count |
Checkpoints write time | postgres.checkpoint_write_time.count | Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk | MilliSecond |
Checkpoint sync time | postgres.checkpoint_sync_time.count | Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk | MilliSecond |
Buffers written during checkpoints | postgres.buffers_checkpoint.count | Number of buffers written during checkpoints | Count |
Buffers written by background writer | postgres.buffers_clean.count | Number of buffers written by the background writer | Count |
Cleaning scan stops | postgres.maxwritten_clean.count | Number of times the background writer stopped a cleaning scan because it had written too many buffers | Count |
Buffers written by backend | postgres.buffers_backend.count | Number of buffers written directly by a backend | Count |
Backend fsync executions | postgres.buffers_backend_fsync.count | Number of times a backend had to execute its own fsync call | Count |
Buffers allocated | postgres.buffers_alloc.count | Number of buffers allocated | Count |
Metric name | Metric key | Description | Unit |
---|---|---|---|
Tablespace size | postgres.tablespace.size | Tablespace size in bytes | Byte |
Metric name | Metric key | Description | Unit |
---|---|---|---|
WAL diff size | postgres.wal_diff_size | Size of difference between current WAL and last WAL replay | Byte |
WAL records per minute | postgres.wal_records.count | Number of WAL records generated per minute | Count |
WAL fpi per minute | postgres.wal_fpi.count | Number of WAL full page images generated per minute | Count |
WAL bytes | postgres.wal_bytes.count | Total amount of WAL generated in bytes | Count |
WAL buffers full | postgres.wal_buffers_full.count | Number of times WAL data was written to disk because WAL buffers became full | Count |
WAL write | postgres.wal_write.count | Number of times WAL buffers were written out to disk via XLogWrite request | Count |
WAL sync | postgres.wal_sync.count | Number of times WAL files were synced to disk via issue_xlog_fsync request | Count |
WAL write time | postgres.wal_write_time.count | Total amount of time spent writing WAL buffers to disk via XLogWrite request, in milliseconds | MilliSecond |
WAL sync time | postgres.wal_sync_time.count | Total amount of time spent syncing WAL files to disk via issue_xlog_fsync request, in milliseconds | MilliSecond |
Metric name | Metric key | Description | Unit |
---|---|---|---|
Active backend processes | postgres.activity.active | Number of server processes executing a query | Count |
Idle backend processes | postgres.activity.idle | Number of server processes waiting for a new client command | Count |
Idle in transaction backends processes | postgres.activity.idle_in_transaction | Number of server processes in transaction not currently executing a query | Count |
Idle in transaction aborted backends processes | postgres.activity.idle_in_transaction_aborted | Number of server processes in transaction not currently executing a query where one of the statements caused an error | Count |
Fast-path function backend processes | postgres.activity.fastpath_function_call | Number of server processes executing a fast-path function call | Count |
Improvements:
Bug fixes:
client_port
dimension was removed from the following metrics, because the field bring no valuable information and is too volatile, causing too many distinct timeseries to be generated.
postgres.activity.active
postgres.activity.fastpath_function_call
postgres.activity.idle_in_transaction_aborted
postgres.activity.idle_in_transaction
postgres.activity.idle
Breaking changes: Existing monitoring configurations must be recreated through API or manually
New features:
Bug fixes:
Fix for schema change
No release notes