#!/bin/bash
MONGODBS="mongodb://dbserver.internal.sapsailing.com:10201/?replicaSet=archive mongodb://dbserver.internal.sapsailing.com:10202/?replicaSet=slow mongodb://dbserver.internal.sapsailing.com:10203/?replicaSet=live"
#MAILINGLIST="/home/trac/mailinglists/unhealthy-mongo-list"
MAILINGLIST=/var/cache/landscapeManagersMailingList
for db in $MONGODBS; do
    RS_STATUS=$( mongosh --eval "EJSON.stringify(rs.status())" --quiet "$db" )
    replicaset=$( echo "${RS_STATUS}" | jq -r '.set' )
    MAIL_BODY=$( echo "${RS_STATUS}" | jq -r '.members[] | select(.health != 1) | "MongoDB replica set '${replicaset}' unhealthy, node "+.name+" has health "+(.health | tostring)+" and is in state "+(.state | tostring)+"

Check status of '${db}' urgently. To unsubscribe, change '${MAILINGLIST}' on '`hostname`'."' )
    if [ -n "${MAIL_BODY}" ]; then
        echo "${MAIL_BODY}" | mail -s "MongoDB Replica Set \"${replicaset}\" Unhealthy" `cat "${MAILINGLIST}"`
    fi
done

