We would like to check the Postgres SYNC streaming replication status with 
Nagios using the same query on all servers (master + standby) and versions 
(9.6, 10, 12) for simplicity.


I came up with the following query which should return any apply lag in seconds.


select coalesce(replay_delay, 0) replication_delay_in_sec
from (
       select datname,
              (
                select case
                         when received_lsn = latest_end_lsn then 0
                         else extract(epoch
                from now() - latest_end_time)
                       end
                from pg_stat_wal_receiver
              ) replay_delay
       from pg_database
       where datname = current_database()
     ) xview;


I would expect delays >0 in case SYNC or ASYNC replication is somehow behind. 
We will do a warning at 120 secs and critical at 300 secs.


Would this do the job or am I missing something here?


Thanks, Markus








Reply via email to