From PostgreSQL wiki
PostgreSQL builtin & contrib
PostgreSQL collects lots of data on its own and offers it via the pg_stat(io)_ system views
The following extensions offer access to Postgres internals which may be of interest or collect additional information. Most of them are shipped with Postgres (the -contrib packages may need to be installed) and can be activated via the extension interface.
pg_stat_statements tracks all queries that are executed on the server and records average runtime per query "class" among other parameters.
pg_stat_plans extends on pg_stat_statements and records query plans for all executed quries. This is very helpful when you're experiencing performance regressions due to inefficient query plans due to changed parameters or table sizes.
pgstattuple can generate statistics for tables and indexes, showing how much space in each table & index is consumed by live tuples, deleted tuples as well as how much unused space is available in each relation.
pg_view is a Python-based tool to quickly get information about running databases and resources used by them as well as correlate running queries and why they might be slow.
pg_activity is a htop like application for PostgreSQL server activity monitoring, written in Python.
pgstats is a command line tool written in C which can sample various PostgreSQL informations. It also provides a tool to generate CSV files to graph the pgstats metrics.
check_postgres is a command line tool which is designed to be run from software like Icinga, MRTG or as a standalone tool. It can monitor many aspects of the database and trigger warnings when thresholds are violated.
Interfaces & collectors
These tools either offer an interface to PostgreSQL monitoring-relevant data or can aggregate and prepare them for other systems.
This is useful for network management systems which are limited to SNMP protocol.
pganalyze-collector is a tool which collects pg_stat_plans query information as well as various performance-relevant database parameters and converts them into a JSON structure for easy ingestion in other systems.
Generic monitoring solutions with plugins
Okmeter.io is a commercial SaaS that collects a whole lot of PostgreSQL status and operational data — over 50 types of metrics on connections, transactions, table crud operations, locks, bgwriter, index usage and ops, replication, autovacuum. Also, query timings, disk and CPU usage by queries from pg_stat_statements, and system metrics — CPU, memory, fd and disk usage per process, socket connections per port and tcp status.
Once installed okmeter agent will auto-detect and start to monitor every PG instance without much of configuration. It will automatically create visualization dashboards with charts for all these stats and metrics. It allow you to configure alerts based on these metrics — for example on current number of auto-vacuum workers or replication lag.
Although Okmeter is a generic monitoring service, Okmeter PostgreSQL plugin was developed with guidance and feedback from PostgreSQL-Consulting experts. It is very detailed yet meaningful with regard to PostgreSQL metrics it is as Postgres-aware as Postgres-centric monitoring solutions.
Datadog is a commercial saas that collects postgres metrics on connections, transactions, row crud operations, locks, temp files, bgwriter, index usage, replication status, memory, disk, cpu and lets you visualize and alert on those metrics alongside your other system and application metrics.
PostgreSQL Plugins developed in Perl are included in the Core Munin Distribution. The following plugins are included by default: postgres_bgwriter, postgres_locks_, postgres_tuples_, postgres_cache_, postgres_querylength_, postgres_users, postgres_checkpoints, postgres_scans_, postgres_xlog, postgres_connections_, postgres_size_, postgres_connections_db, postgres_transactions_
PyMunin includes a Multigraph Munin Plugin written in Python that implements the following graphs: pg_connections, pg_diskspace, pg_blockreads, pg_xact, pg_tup_read, pg_tup_write, pg_blockreads_detail, pg_xact_commit_detail, pg_xact_rollback_detail, pg_tup_return_detail, pg_tup_fetch_detail, pg_tup_delete_detail, pg_tup_update_detail, pg_tup_insert_detail
Detailed setup instructions for common Linux platforms can be found at highperfpostgres.com
Postgres-centric monitoring solutions
EnterpriseDB Postgres Enterprise Manager
Postgres Enterprise Manager monitors, alerts, manages and tunes local and remote large scale Postgres deployments from a single graphical console. Out of the box features include: server auto-discovery, point and click management of database objects, 225+ pre-configured database alerts by SMTP/SNMP, custom alerts, global At-a-Glance monitoring dashboards, Performance monitoring dashboards, custom dashboards, an Audit Manager, Postgres Expert best practice configuration recommendations, a Log Manager, a Log Analyzer Expert, a SQL Profiler, and Index Advisor.
pganalyze is a commercial SaaS offering which focuses on performance monitoring and automated tuning suggestions.
pgwatch is a PHP web application which offers interactive graphs for relevant Postgres data.
pg_statsinfo & pg_stats_reporter
pg_statsinfo is a Postgres extension that collects lots of performance-relevant information inside the Postgres server which then can be aggregated by pg_stats_reporter instances which provide a web interface to the collected data. Both are FOSS software maintained by NTT.
PGObserver is a Python & Java-based Postgres monitoring solution developed by Zalando. It was developed with a focus on stored procedure performance but extended well beyond that.
PoWA is a PostgreSQL Workload Analyzer that gathers performance stats and provides real-time charts and graphs to help monitor and tune your PostgreSQL servers. It relies on extensions such as pg_stat_statements, pg_qualstats, pg_stat_kcache, pg_track_settings and HypoPG, and can help you optimize you database easily.
OPM: Open PostgreSQL Monitoring
Open PostgreSQL Monitoring (OPM) is a free software suite designed to help you manage your PostgreSQL servers. It's a flexible tool that will follow the activity of each instance. It can gather stats, display dashboards and send warnings when something goes wrong. The long-term goal of the project is to provide similar features to those of Oracle Grid Control or SQL Server Management Studio.
pgAnalytics is a comercial SaaS developed by Dextra. pgAnalytics collects snapshots from PostgreSQL statistics, log files and backups. Linux and Windows statistics are gathered to provide a better understand about whole PostgreSQL environment. Batch process are triggered to looking for errors or things that can be improved, sending alert emails. Try a demo.
Okmeter.io is a commercial SaaS Generic monitoring, but with regards to Postgres monitoring it so detailed, that one might say it is as Postgres-specific as other Postgres-centric monitoring solutions. With over 50 types of metrics, okmeter collects literally thousands of metrics from each PostgreSQL database — connection statuses, transaction per db user and per db, table crud operations counts, locks and bgwriter stats, index usage and ops, seq scans, replication lagginess, autovacuum — all that with meaningful charts. And also for every query shape — timings, disk and CPU usage (from pg_stat_statements). Okmeter also collects system metrics — not only CPU, memory, swap but also fd and disk io usage per process, socket connections per port, tcp conn statuses and many more.