Keep an eye on how far behind your read replicas are, before an application starts reading stale data.
The pg_monitor role (see Monitor PostgreSQL performance and availability) already includes access to pg_stat_replication, no extra grant needed.
Lag is calculated from the byte difference between the primary's write position and each replica's replay position, converted to an estimated time delay.
SELECT client_addr, state,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS lag_bytes
FROM pg_stat_replication;
Alert when lag exceeds a few seconds for synchronous-sensitive workloads, or a few minutes for read replicas serving reporting queries where a little staleness is fine.