mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Currently ssvm checks connectivity only for one mgt server. Since we can have multiple mgt servers using comma separated list, make the change in script so that it checks for connectivity for all mgt servers
151 lines
4.0 KiB
Bash
151 lines
4.0 KiB
Bash
#!/usr/bin/env bash
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
# Health check script for the Secondary Storage VM
|
|
|
|
# DNS server is specified.
|
|
|
|
|
|
CMDLINE=/var/cache/cloud/cmdline
|
|
for i in `cat $CMDLINE`
|
|
do
|
|
key=`echo $i | cut -d= -f1`
|
|
value=`echo $i | cut -d= -f2`
|
|
case $key in
|
|
host)
|
|
MGMTSERVER=$value
|
|
;;
|
|
esac
|
|
done
|
|
|
|
isCifs() {
|
|
mount | grep "type cifs" > /dev/null
|
|
echo $?
|
|
}
|
|
|
|
# ping dns server
|
|
echo ================================================
|
|
DNSSERVER=`egrep '^nameserver' /etc/resolv.conf | awk '{print $2}'| head -1`
|
|
echo "First DNS server is " $DNSSERVER
|
|
ping -c 2 $DNSSERVER
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "Good: Can ping DNS server"
|
|
else
|
|
echo "WARNING: cannot ping DNS server"
|
|
echo "route follows"
|
|
route -n
|
|
fi
|
|
|
|
|
|
# check dns resolve
|
|
echo ================================================
|
|
nslookup cloudstack.apache.org 1> /tmp/dns 2>&1
|
|
grep 'no servers could' /tmp/dns 1> /dev/null 2>&1
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "ERROR: DNS not resolving cloudstack.apache.org"
|
|
echo resolv.conf follows
|
|
cat /etc/resolv.conf
|
|
exit 2
|
|
else
|
|
echo "Good: DNS resolves cloudstack.apache.org"
|
|
fi
|
|
|
|
|
|
# check to see if we have the NFS volume mounted
|
|
echo ================================================
|
|
storage="cifs"
|
|
if [ $(isCifs) -ne 0 ] ;
|
|
then
|
|
storage="nfs"
|
|
fi
|
|
|
|
mount|grep -v sunrpc|grep -v rpc_pipefs|grep $storage 1> /dev/null 2>&1
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "$storage is currently mounted"
|
|
# check for write access
|
|
for MOUNTPT in `mount|grep -v sunrpc|grep -v rpc_pipefs|grep $storage| awk '{print $3}'`
|
|
do
|
|
if [ $MOUNTPT != "/proc/xen" ] # mounted by xen
|
|
then
|
|
echo Mount point is $MOUNTPT
|
|
touch $MOUNTPT/foo
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "Good: Can write to mount point"
|
|
rm $MOUNTPT/foo
|
|
else
|
|
echo "ERROR: Cannot write to mount point"
|
|
echo "You need to export with norootsquash"
|
|
fi
|
|
fi
|
|
done
|
|
else
|
|
echo "ERROR: NFS is not currently mounted"
|
|
echo "Try manually mounting from inside the VM"
|
|
NFSSERVER=`awk '{print $17}' $CMDLINE|awk -F= '{print $2}'|awk -F: '{print $1}'`
|
|
echo "NFS server is " $NFSSERVER
|
|
ping -c 2 $NFSSERVER
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "Good: Can ping $storage server"
|
|
else
|
|
echo "WARNING: cannot ping $storage server"
|
|
echo routing table follows
|
|
route -n
|
|
fi
|
|
fi
|
|
|
|
|
|
# check for connectivity to the management server
|
|
echo ================================================
|
|
echo Management server is $MGMTSERVER. Checking connectivity.
|
|
IFS=',' read -r -a hosts <<< "$MGMTSERVER"
|
|
for host in "${hosts[@]}"
|
|
do
|
|
socatout=$(echo | socat - TCP:$host:8250,connect-timeout=3 | tr -d '\0' 2>&1)
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "Good: Can connect to management server $host port 8250"
|
|
else
|
|
echo "ERROR: Cannot connect to $host port 8250"
|
|
echo $socatout
|
|
exit 4
|
|
fi
|
|
done
|
|
|
|
|
|
# check for the java process running
|
|
echo ================================================
|
|
ps -eaf|grep -v grep|grep java 1> /dev/null 2>&1
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "Good: Java process is running"
|
|
else
|
|
echo "ERROR: Java process not running. Try restarting the SSVM."
|
|
exit 3
|
|
fi
|
|
|
|
echo ================================================
|
|
echo Tests Complete. Look for ERROR or WARNING above.
|
|
|
|
exit 0
|