| #!/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 | |
| # 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 download.cloud.com 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 download.cloud.com" | |
| echo resolv.conf follows | |
| cat /etc/resolv.conf | |
| exit 2 | |
| else | |
| echo "Good: DNS resolves download.cloud.com" | |
| fi | |
| # check to see if we have the NFS volume mounted | |
| echo ================================================ | |
| mount|grep -v sunrpc|grep nfs 1> /dev/null 2>&1 | |
| if [ $? -eq 0 ] | |
| then | |
| echo "NFS is currently mounted" | |
| # check for write access | |
| for MOUNTPT in `mount|grep -v sunrpc|grep nfs| 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 NFS server" | |
| else | |
| echo "WARNING: cannot ping NFS server" | |
| echo routing table follows | |
| route -n | |
| fi | |
| fi | |
| # check for connectivity to the management server | |
| echo ================================================ | |
| echo Management server is $MGMTSERVER. Checking connectivity. | |
| socatout=$(echo | socat - TCP:$MGMTSERVER:8250,connect-timeout=3 2>&1) | |
| if [ $? -eq 0 ] | |
| then | |
| echo "Good: Can connect to management server port 8250" | |
| else | |
| echo "ERROR: Cannot connect to $MGMTSERVER port 8250" | |
| echo $socatout | |
| exit 4 | |
| fi | |
| # 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 |