Forum Discussion

Burrell's avatar
Burrell
Icon for Nimbostratus rankNimbostratus
Feb 05, 2016

Exchange 2016 iApp RC2 issue

We have implemented our 2 node exchange 2016 environment with the RC2 iApp template. The cluster uses certificates to secure/encrypt traffic, and all appears to be working except EWS related functions with advanced monitors, if we step down to simple monitors everything works. We would like to have the additional application layer validation if possible.

Our issue is the EWS advanced health monitor is failing. How can we troubleshoot this pre-scripted monitor?

Below is the script the health monitor runs using credentials we provided. The credentials authenticate and are also used for OWA, POP3, IMAP and these health monitors are working/succeeding. It is only EWS that fails.

!/bin/sh
 These arguments supplied automatically for all external monitors:
 $1 = IP (nnn.nnn.nnn.nnn notation)
 $2 = port (decimal, host byte order)

 This script expects the following Name/Value pairs:
  USER  = the username associated with a mailbox
  PASSWORD = the password for the user account
  DOMAIN = the Windows domain in which the account lives
  EMAIL = the email address associated with the user mailbox

 Remove IPv6/IPv4 compatibility prefix (LTM passes addresses in IPv6 format)
NODE=`echo ${1} | sed 's/::ffff://'`
if [[ $NODE =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
     node is v4
    NODE=${NODE}
else
     node is v6
    NODE=[${NODE}]
fi
PORT=${2}
PIDFILE="/var/run/`basename ${0}`.my_new_iapp_test_2010_${USER}_${NODE}_ews.pid"
DIR="http://schemas.microsoft.com/exchange/services/2006"
XML1=$( cat<IdOnly
EOF
)
XML2=$( cat<
EOF
)
XMLFULL=${XML1}${EMAIL}${XML2}
EWSURI='/EWS/Exchange.asmx'
RECV=''
 kill of the last instance of this monitor if hung and log current pid
if [ -f $PIDFILE ]
then
   echo "EAV exceeded runtime needed to kill ${NODE}:${PORT}" | logger -p local0.error
   kill -9 `cat $PIDFILE` > /dev/null 2>&1
fi
echo "$$" > $PIDFILE
curl-apd -g -s --ntlm -k -X POST -H 'Content-Type: text/xml; charset=utf-8' -d "${XMLFULL}" -u ${DOMAIN}\\${USER}:${PASSWORD} https://${NODE}${EWSURI} | grep -i "${RECV}" > /dev/null 2>&1
STATUS=$?
rm -f $PIDFILE
if [ $STATUS -eq 0 ]
then
    echo "UP"
fi
exit

11 Replies