Sleds/utils/sequencelogic-mongo-status.sh

113 lines
2.4 KiB
Bash
Raw Normal View History

2025-03-13 21:28:38 +00:00
#!/bin/bash
# Usage: sequencelogic-mongo-status.sh {node} {role} ...
# Where:
# {node} is IP or hostname with optional port
# {role} is 'primary', 'slave', 'replica'
# e.g. sequencelogic-mongo-status.sh 10.200.1.71 primary
function usage(){
if [ "$1" != "" ]; then
echo $1
fi
echo "Usage: sequencelogic-mongo-status.sh {node} {role}"
echo "{node} is an IP or host with optional port"
echo "{role} is 'primary', 'slave' or 'replica'"
exit 1
}
# setup
REDIR=/dev/tty # use /dev/tty for debug
SCRIPT=$0
echo "[OK] Script: ${SCRIPT}" > ${REDIR}
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=`dirname ${SCRIPT}`
echo "[OK] This script is located at: $SCRIPTPATH" > ${REDIR}
if [ "$1" = "" ]; then
usage
fi
if [ -f "${SCRIPTPATH}/sequencelogic-helpers.sh" ]; then
source ${SCRIPTPATH}/sequencelogic-helpers.sh > ${REDIR}
else
source ${SEQUENCELOGICHOME}/bin/sequencelogic-helpers.sh > ${REDIR}
fi
function appendJSON(){
comma=$1
key=$2
val="$3"
/bin/echo -n "${comma}\"${key}\":${val}"
}
function mongoJS(){
host=$1
cmd=$2
x=`mongo --quiet --eval "printjson(${cmd})" ${host}/sequencelogic`
ps=$?
#/bin/echo "exit with ${ps}" > ${REDIR}
if [ ${ps} != 0 ]; then
x="\"@ERROR ${x}\""
fi
#echo "RAW: ${x}" > ${REDIR}
#x=`echo "${x}" | sed 's/^[^{]*[{]/{/'`
#echo "DECRUFTED: ${x}" > ${REDIR}
x=`echo "${x}" | sed 's/ISODate(\([^)]*\))/\1/g'`
#sed 's/ISODate//' | tr -d '()'`
/bin/echo -n "${x}"
}
function mongoStatus(){
host=$1
role=$2
js="{"
js="${js}$(appendJSON '' host \"${host}\")"
js="${js}$(appendJSON ',' cpu_pct 0)"
js="${js}$(appendJSON ',' mem_used 0)"
js="${js}$(appendJSON ',' root_dir_pct 0)"
x="`mongoJS ${host} db.stats\(\)`"
js=${js}$(appendJSON ',' stats "${x}")
x="`mongoJS ${host} db.isMaster\(\)`"
js=${js}$(appendJSON ',' masterSlave "${x}")
#x="`mongoJS ${host} db.foo\(\)`"
#js=${js}$(appendJSON ',' testError "${x}")
echo "${js}" | grep -c '@ERROR' > ${REDIR}
isErr=$?
if [ $isErr = 0 ]; then isErr=ERROR; else isErr=OK; fi
#echo "isErr ${isErr}" > ${REDIR}
js="${js}$(appendJSON ',' status \"${isErr}\")"
js="${js}}"
echo "${js}"
}
json="["
acomma=""
while [ "$1" != "" ]; do
host=$1; shift
role=$1; shift
case "$role" in
primary|slave|replica) ;;
*) usage "Bad value for {role}";;
esac
echo "[OK] Using host: $host and role: ${role}" > ${REDIR}
json="${json}${acomma}"
json="${json}$(mongoStatus $host $role)"
#echo $json
acomma=","
done
json="${json}]"
echo $json
exit 0