Improve master node output message
This commit is contained in:
parent
dc07eccd09
commit
50c3363cbc
1 changed files with 40 additions and 13 deletions
|
@ -210,6 +210,20 @@ REPLAY_WARNING_DELAY = $REPLAY_WARNING_DELAY
|
||||||
REPLAY_CRITICAL_DELAY = $REPLAY_CRITICAL_DELAY
|
REPLAY_CRITICAL_DELAY = $REPLAY_CRITICAL_DELAY
|
||||||
"
|
"
|
||||||
|
|
||||||
|
# Set some stuff to PostgreSQL version
|
||||||
|
if [ $( echo "$PG_VERSION < 10" |bc -l ) -eq 1 ]
|
||||||
|
then
|
||||||
|
pg_current_wal_lsn='pg_current_xlog_location()'
|
||||||
|
pg_wal_lsn_diff='pg_xlog_location_diff'
|
||||||
|
sent_lsn='sent_location'
|
||||||
|
write_lsn='write_location'
|
||||||
|
else
|
||||||
|
pg_current_wal_lsn='pg_current_wal_lsn()'
|
||||||
|
pg_wal_lsn_diff='pg_wal_lsn_diff'
|
||||||
|
sent_lsn='sent_lsn'
|
||||||
|
write_lsn='write_lsn'
|
||||||
|
fi
|
||||||
|
|
||||||
# Postgres is running ?
|
# Postgres is running ?
|
||||||
if [ $DEBUG -eq 0 ]
|
if [ $DEBUG -eq 0 ]
|
||||||
then
|
then
|
||||||
|
@ -295,16 +309,16 @@ then
|
||||||
debug "Master application name : $M_APP_NAME"
|
debug "Master application name : $M_APP_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get current state/sync_state from master
|
# Get current state information from master
|
||||||
M_CUR_STATE_SYNC_STATE="$( psql_master_get "SELECT state,sync_state FROM pg_stat_replication WHERE application_name='$M_APP_NAME';" )"
|
M_CUR_REPL_STATE_INFO="$( psql_master_get "SELECT state, sync_state FROM pg_stat_replication WHERE application_name='$M_APP_NAME';" )"
|
||||||
if [ ! -n "$M_CUR_STATE_SYNC_STATE" ]
|
if [ ! -n "$M_CUR_REPL_STATE_INFO" ]
|
||||||
then
|
then
|
||||||
echo "UNKNOWN : Can't retreive current state and sync state from master server"
|
echo "UNKNOWN : Can't retreive current replication state information from master server"
|
||||||
exit 3
|
exit 3
|
||||||
fi
|
fi
|
||||||
debug "Master current state / sync_state : $M_CUR_STATE_SYNC_STATE"
|
debug "Master current replication state:\n\tstate|sync_state\n\t$M_CUR_REPL_STATE_INFO"
|
||||||
|
|
||||||
M_CUR_STATE=$( echo "$M_CUR_STATE_SYNC_STATE"|cut -d'|' -f1 )
|
M_CUR_STATE=$( echo "$M_CUR_REPL_STATE_INFO"|cut -d'|' -f1 )
|
||||||
debug "Master current state : $M_CUR_STATE"
|
debug "Master current state : $M_CUR_STATE"
|
||||||
if [ "$M_CUR_STATE" != "streaming" ]
|
if [ "$M_CUR_STATE" != "streaming" ]
|
||||||
then
|
then
|
||||||
|
@ -312,7 +326,7 @@ then
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
M_CUR_SYNC_STATE=$( echo "$M_CUR_STATE_SYNC_STATE"|cut -d'|' -f2 )
|
M_CUR_SYNC_STATE=$( echo "$M_CUR_REPL_STATE_INFO"|cut -d'|' -f2 )
|
||||||
debug "Master current sync state : $M_CUR_SYNC_STATE"
|
debug "Master current sync state : $M_CUR_SYNC_STATE"
|
||||||
if [ "$M_CUR_SYNC_STATE" != "sync" ]
|
if [ "$M_CUR_SYNC_STATE" != "sync" ]
|
||||||
then
|
then
|
||||||
|
@ -375,13 +389,21 @@ else
|
||||||
debug "Postgres is not in recovery mode"
|
debug "Postgres is not in recovery mode"
|
||||||
|
|
||||||
# Check standby client
|
# Check standby client
|
||||||
STANDBY_CLIENTS=$( psql_get "SELECT client_addr, sync_state FROM pg_stat_replication;" )
|
STANDBY_CLIENTS=$( psql_get "SELECT application_name, client_addr, sent_location, write_location, state, sync_state, current_lag
|
||||||
|
FROM (
|
||||||
|
SELECT application_name, client_addr, sent_location, write_location, state, sync_state, current_lag
|
||||||
|
FROM (
|
||||||
|
SELECT application_name, client_addr, $sent_lsn AS sent_location, $write_lsn AS write_location, state, sync_state,
|
||||||
|
$pg_wal_lsn_diff($pg_current_wal_lsn, $write_lsn) AS current_lag
|
||||||
|
FROM pg_stat_replication
|
||||||
|
) AS s2
|
||||||
|
) AS s1" )
|
||||||
if [ ! -n "$STANDBY_CLIENTS" ]
|
if [ ! -n "$STANDBY_CLIENTS" ]
|
||||||
then
|
then
|
||||||
echo "WARNING : no stand-by client connected"
|
echo "WARNING : no stand-by client connected"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
debug "Stand-by client(s) : $( echo -n $STANDBY_CLIENTS|sed 's/\n/ , /g' )"
|
debug "Stand-by client(s):\n\t$( echo -e "$STANDBY_CLIENTS"|sed 's/\n/\n\t/' )"
|
||||||
|
|
||||||
STANDBY_CLIENTS_TXT=""
|
STANDBY_CLIENTS_TXT=""
|
||||||
STANDBY_CLIENTS_COUNT=0
|
STANDBY_CLIENTS_COUNT=0
|
||||||
|
@ -389,11 +411,16 @@ else
|
||||||
do
|
do
|
||||||
let STANDBY_CLIENTS_COUNT=STANDBY_CLIENTS_COUNT+1
|
let STANDBY_CLIENTS_COUNT=STANDBY_CLIENTS_COUNT+1
|
||||||
|
|
||||||
IP=$( echo $line|cut -d '|' -f 1 )
|
NAME=$( echo $line|cut -d '|' -f 1 )
|
||||||
MODE=$( echo $line|cut -d '|' -f 2 )
|
IP=$( echo $line|cut -d '|' -f 2 )
|
||||||
STANDBY_CLIENTS_TXT="$STANDBY_CLIENTS_TXT $IP (mode=$MODE)"
|
SENT_LOCATION=$( echo $line|cut -d '|' -f 3 )
|
||||||
|
WRITE_LOCATION=$( echo $line|cut -d '|' -f 4 )
|
||||||
|
STATE=$( echo $line|cut -d '|' -f 5 )
|
||||||
|
SYNC_STATE=$( echo $line|cut -d '|' -f 6 )
|
||||||
|
LAG=$( echo $line|cut -d '|' -f 7 )
|
||||||
|
STANDBY_CLIENTS_TXT="$STANDBY_CLIENTS_TXT\n$NAME ($IP): $STATE/$SYNC_STATE (Location: sent='$SENT_LOCATION' / write='$WRITE_LOCATION', Lag: ${LAG}b)"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "OK : $STANDBY_CLIENTS_COUNT stand-by client(s) connected - $STANDBY_CLIENTS_TXT"
|
echo -e "OK : $STANDBY_CLIENTS_COUNT stand-by client(s) connected\n$STANDBY_CLIENTS_TXT"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue