Monitoring PostgreSQL Databases
28 Feb 2016Understanding what your database is doing and when is essential to runtime administration, maintenance, monitoring and reporting. Gaining insight into how your system responds to different workloads can also tell you how your current deployment is or isn’t serving your purpose.
There are many great articles on this particular topic already. In today’s post, I’m going to walk through a couple of the simple things you can do to check your system’s runtime status.
Unix Tools
When your database is being hosted in a unix-like environment, you’re given the greatest tools at your disposal to understand what’s happening.
ps can show you running processes on your system. Paired with grep, you can focus ps to look at postgres processes only:
iostat and vmstat will also give you some operating system level insight to how your database application is performing.
Statistics Collector
An important, integrated piece of the Postgres architecture is the statistics collector. Using this, you can query to a very low level many pieces of information surrounding your system’s performance.
The following except is just a small sample of all of the views offered by the statistics collector; which are made available to the developer.
View Name | Description |
---|---|
pg_stat_activity |
One row per server process, showing information related to the current activity of that process, such as state and current query. See pg_stat_activity for details. |
pg_stat_bgwriter |
One row only, showing statistics about the background writer process’s activity. See pg_stat_bgwriter for details. |
pg_stat_database |
One row per database, showing database-wide statistics. See pg_stat_database for details. |
pg_stat_all_tables |
One row for each table in the current database, showing statistics about accesses to that specific table. See pg_stat_all_tables for details. |
pg_stat_sys_tables |
Same as pg_stat_all_tables , except that only system tables are shown. |
pg_stat_user_tables |
Same as pg_stat_all_tables , except that only user tables are shown. |
The full list can be found here.