I think that none of the recovery information functions (https://www.postgresql.org/docs/9.6/static/functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE) can distinguish a hot standby which is connected to an idle master, versus one which is disconnected. For example, because the master has crashed, or someone has changed the firewall rules.
Is there a way to monitor from SQL the last time the standby was able to contact the master and initiate streaming with it? Other than trying to write a function that parses it out of pg_log?
Cheers,
Jeff