Getting Started

Add a Database — AWS Aurora PostgreSQL

Aurora has a writer + readers; here's how to monitor each properly without double-counting metrics.

From a connection standpoint, Aurora looks like RDS. Same endpoint format, same IAM patterns, same Parameter Groups. The differences that matter for monitoring are: there's one writer endpoint and zero or more reader endpoints; storage is shared across the cluster (so no per-instance disk metrics); replication is sub-second (typically under 100ms) using log streaming, not WAL shipping.

Connect to the writer

Onboard the writer first using the same hosted-auto flow as RDS. MonPG creates the monpg_monitor role; because storage is shared, the role propagates to all readers automatically. You don't need to touch the readers separately for the role to work there.

Reader endpoints, separately

Each reader exposes its own pg_stat_statements and pg_stat_user_tables — these are per-instance, not cluster-shared. So if you want reader-side query metrics or cache hit ratios (different from the writer's), add the reader as a separate server:

  1. Settings → Servers → Add server.
  2. Use the reader endpoint as Host.
  3. Reuse the monitor role from the writer — it's the same role across the cluster, same password.
  4. Optionally mark it as a Replica in the form so the UI badges it correctly.

If you don't care about per-reader query stats and just want replication monitoring, you don't need to add readers separately at all.

Verifying the role on the reader

If the reader doesn't see the role, something's odd with cluster propagation. Quick check:

SELECT pg_has_role('monpg_monitor', 'pg_monitor', 'MEMBER');

Should return t.

Performance Insights

PI and MonPG can run side by side. They read different paths — PI uses internal sampling, MonPG reads pg_stat_statements + auto_explain. No interference, complementary views. People who use both tend to keep PI for the AAS time-series and lean on MonPG for plan analysis and index advice.

Aurora Serverless v2

Works the same way. The 30-second collection interval keeps the instance warm enough that scale-to-zero rarely triggers from MonPG's load alone. If you specifically want scale-to-zero to be possible, raise MONPG_COLLECTOR_INTERVAL to 5+ minutes — but you lose query-metric resolution at that pace.

Replication monitoring

The Replication page on the writer shows every reader and per-reader replay lag, queried from the writer's aurora_replica_status() view. So even if you're not adding readers as separate servers, you still get cluster-wide replication visibility from the writer alone.