113 lines
2.4 KiB
Bash
113 lines
2.4 KiB
Bash
|
|
#!/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
|