Skip to content

Server Dashboard

The server dashboard provides detailed metrics for a single PostgreSQL server. The dashboard appears when users select a server node in the cluster navigator.

System Resources

The system resources section displays the following metrics:

  • CPU usage percentage with a time-series chart.
  • Memory usage percentage with a time-series chart.
  • Disk usage percentage with a time-series chart.
  • Load average values with a time-series chart.
  • Network I/O throughput as bytes transmitted and received per second, with a time-series chart.

PostgreSQL Overview

The PostgreSQL overview section displays server-level database metrics. The charts built on cumulative PostgreSQL counters plot rates rather than the raw counter totals, so a rising line shows a busier server rather than the simple passage of time.

The section displays the following KPI tiles:

  • The Backends tile shows the active connections relative to the maximum allowed.
  • The Commits tile shows the current commits per second.
  • The Cache Hit Ratio tile shows the ratio as a percentage with trend data.
  • The Temp Bytes tile shows the bytes spilled to temporary files across the selected time range, with a sparkline of the bytes spilled in each interval.

The section displays the following time-series charts:

  • The Connections (Monitored Database) chart plots the backends connected to each monitored database.
  • The Sessions Established (Monitored Database) chart plots the sessions opened against each monitored database.
  • The Transactions chart plots commits and rollbacks per second.
  • The Block I/O chart plots blocks hit and blocks read per second.
  • The Tuple Operations chart plots the rows fetched, inserted, updated, and deleted per second.

The cache hit ratio is computed from the blocks read and hit during each sample interval, so a current problem is visible immediately rather than being diluted by history since the last statistics reset. An interval with no block access shows as a gap in the sparkline and as '--' for the headline value. The ratio counts only shared_buffers hits; a block read may still be served from the operating system page cache, so a lower ratio does not by itself indicate slow I/O.

WAL and Replication

The WAL and replication section shows write-ahead log activity, checkpoint behaviour, and replication status for the server.

The section displays the following KPI tiles:

  • The WAL Bytes tile shows the current WAL bytes written per second.
  • The WAL Records tile shows the current WAL records written per second.
  • The Replication Lag tile shows the current lag for the server's replicas.
  • The Requested Checkpoints tile shows the percentage of the checkpoints in the selected time range that PostgreSQL requested rather than scheduled. A high percentage suggests that max_wal_size is too low.

The section displays the following charts:

  • The WAL Activity Over Time chart plots the WAL bytes and WAL records written per second.
  • The Replication Lag Over Time chart plots the write, flush, and replay lag.
  • The Checkpoints Over Time chart is a stacked bar chart of the timed and requested checkpoints completed in each interval.
  • The Checkpoint Buffers Written chart plots the buffers that checkpoints wrote per second.

Database Summaries

The database summaries section lists all databases on the server with high-level metrics for each database. The cache hit ratio on each card is a per-interval value and shows '--' when the database had no block access in the latest interval. Users can click a database entry to navigate to the database dashboard.

Connections

The connections section breaks down the server's client connections by database user, client address, or database. Three tabs select the grouping: By User, By Client, and By Database. Each tab lists one row per group, with the columns Total, Active, Idle, Idle in transaction, and Other.

The counts come from the single most recent snapshot the collector stored within the dashboard's selected time range. The time range only decides which snapshot counts as the latest; the section neither averages nor peaks the figures across the period. This behaviour differs from the charted metrics elsewhere on the dashboard. The section labels the table with the time of the snapshot the counts came from.

The section counts only real client connections. The collector stores a row for every backend in pg_stat_activity, including background workers such as the WAL writer and the autovacuum workers, and the section excludes those rows. The section needs no additional collection, because the existing pg_stat_activity probe already stores the data.

Some labels stand in for a missing or special value:

  • A connection over a Unix-domain socket has no client address, so the section groups the connection under local.
  • A backend with no recorded role name appears under (unknown).
  • A backend with no recorded database appears under (none).

The By Client tab shows the reverse-resolved client hostname on a second line beneath the client address, where PostgreSQL recorded one. PostgreSQL populates the client_hostname field only on servers that enable log_hostname.

The Idle in transaction column counts the backends in either the idle in transaction state or the idle in transaction (aborted) state. The Other column counts every remaining state, including the backends that report no state at all.

The section lists each grouping in descending order of total connections, and shows at most 200 groups. A server with very many distinct client addresses therefore shows only the 200 busiest groups on the By Client tab. The groups omitted are always the smallest ones, and the section adds no roll-up row for them.

Top Queries

The top queries section ranks queries by resource consumption. The section displays execution time, call count, rows returned, and source database for the most active queries.

The Database column resolves each query's source database from the dbid field in pg_stat_statements using pg_stat_activity. Because pg_stat_statements collects data cluster-wide, the section deduplicates queries so each entry reflects a single database context.

The "Hide monitoring queries" toggle filters out the workbench's own monitoring queries from the list. The toggle is on by default to focus on application queries.

On an existing installation, the toggle only hides statements that PostgreSQL first recorded after the upgrade. pg_stat_statements identifies a statement by its parse tree, which ignores comments, so a statement already recorded before the upgrade keeps the untagged text it was first seen with, and the filter never matches it. Those entries also run on every collection cycle, so they are never evicted. Run SELECT pg_stat_statements_reset(); once on each monitored instance after upgrading if you want the toggle to hide the monitoring queries already in the view.

The toggle is a display convenience rather than a security or audit control. The filter matches a marker comment in the statement text, so a database user who can run arbitrary SQL can hide a query by including that marker. Switching the toggle off restores the full list of statements.

The panel header includes a database filter when the connection monitors more than one database. The filter defaults to "All databases"; selecting a single database restricts the list to queries that ran against that database.

The panel footer includes a pager that lets users move through the full result set. The "Rows per page" selector offers 10, 20, 50, or 100 rows and defaults to 20 rows. The previous and next controls move between pages, and the "Showing X-Y of Z" indicator reports the range of rows on the current page and the total number of matching queries.