User talk:OtakuMegane

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Opensim Status)
Line 3: Line 3:
  
 
'''NOTE: This assumes you have separate script(s) to launch each instance and apply any relevant settings, whereas BlueWall's original executed the commands directly from the watchdog script.
 
'''NOTE: This assumes you have separate script(s) to launch each instance and apply any relevant settings, whereas BlueWall's original executed the commands directly from the watchdog script.
=== oswatchdog (multiple instances) ===
+
=== Opensim Status ===
 +
This is the script I use to monitor my Opensim instances and restart them as needed. Originally based on BlueWall's oswatchdog script.
 
<source lang="bash">                                                                                                                                 
 
<source lang="bash">                                                                                                                                 
#! /bin/sh
+
#!/bin/sh
 
#
 
#
 
# THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
 
# THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
Line 17: Line 18:
 
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
#
 
#
 
# Adjust To Your System:
 
#
 
# Sample Cron Entry: Runs Each Minute 24/7/365
 
# */1 * * * * exec /opt/opensim/scripts/oswatchdog
 
#
 
 
#
 
#
 
#
 
#
Line 34: Line 27:
  
 
# Hostname
 
# Hostname
HOSTNAME="domain.or.ip.address"
+
HOSTNAME="104.218.17.84"
  
 
# If you run this script as root but opensim is run under another user, set this to TRUE.
 
# If you run this script as root but opensim is run under another user, set this to TRUE.
Line 44: Line 37:
 
LOCKFILE="/tmp/norun.opensim"
 
LOCKFILE="/tmp/norun.opensim"
  
if [ -f "$LOCKFILE" ]; then
+
if [ -f "$LOCKFILE" ]
 +
then
 
         echo $LOCKFILE "found. no restart"
 
         echo $LOCKFILE "found. no restart"
 
         exit
 
         exit
 
fi
 
fi
 +
 +
terminate_dead()
 +
{
 +
        kill -KILL $1
 +
        sleep 3
 +
}
  
 
status_check()
 
status_check()
 
{
 
{
 
         running_pid=`ps ax|grep $2|grep -v grep|tr -s ' '|sed 's/^ //'|cut -f1 -d' '`
 
         running_pid=`ps ax|grep $2|grep -v grep|tr -s ' '|sed 's/^ //'|cut -f1 -d' '`
         if [ -z "$running_pid" ]; then
+
        screen_is_dead=`screen -list|grep $2|tr -s ' '|grep '(Dead ???)'`
 +
 
 +
        if [ -n "$screen_is_dead" ]
 +
        then
 +
                screen -wipe
 +
        fi
 +
 
 +
        if ! curl "http://$HOSTNAME:$1/simstatus/" > /dev/null 2>&1
 +
        then
 +
                if [ -n "$running_pid" ]
 +
                then
 +
                        terminate_dead $running_pid
 +
                fi
 +
        fi
 +
 
 +
         if [ -z "$running_pid" ]
 +
        then
 
                 #...We Make A Log Entry And Start A New One
 
                 #...We Make A Log Entry And Start A New One
 
                 # The Log Entry
 
                 # The Log Entry
Line 60: Line 76:
 
                 if [ $RUN_AS_OTHER_USER = 'TRUE' ]
 
                 if [ $RUN_AS_OTHER_USER = 'TRUE' ]
 
                 then
 
                 then
                         /bin/su -l $4 -c "$3"
+
                         su -l $4 -c "$3"
 
                 else
 
                 else
 
                         $3
 
                         $3
 
                 fi
 
                 fi
 +
 +
                echo "$2 was down or unresponsive. Restarted."
 
         else
 
         else
                 if ! curl "http://$HOSTNAME:$1/simstatus/"
+
                 echo "$2 is up and responds with OK status."
                then
+
                        kill -KILL $running_pid
+
                fi
+
 
         fi
 
         fi
 
}
 
}

Revision as of 22:36, 24 November 2015

Modified oswatchdog

This is a modified version of BlueWall's oswatchdog. I had trouble getting the original to run and it was not well designed for multiple instances (I run quite a few). This allows you to easily add as many instances to be monitored as you wish.

NOTE: This assumes you have separate script(s) to launch each instance and apply any relevant settings, whereas BlueWall's original executed the commands directly from the watchdog script.

Opensim Status

This is the script I use to monitor my Opensim instances and restart them as needed. Originally based on BlueWall's oswatchdog script.

#!/bin/sh
#
# THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# Base opensim installation
BASE="/home/opensim"
 
# Log
LOG="$BASE/status-log.log"
 
# Hostname
HOSTNAME="104.218.17.84"
 
# If you run this script as root but opensim is run under another user, set this to TRUE.
# Otherwise ignore it 
RUN_AS_OTHER_USER='FALSE'
 
#if the file exist, opensim wont be restarted
# Sacha Magne
LOCKFILE="/tmp/norun.opensim"
 
if [ -f "$LOCKFILE" ]
then
        echo $LOCKFILE "found. no restart"
        exit
fi
 
terminate_dead()
{
        kill -KILL $1
        sleep 3
}
 
status_check()
{
        running_pid=`ps ax|grep $2|grep -v grep|tr -s ' '|sed 's/^ //'|cut -f1 -d' '`
        screen_is_dead=`screen -list|grep $2|tr -s ' '|grep '(Dead ???)'`
 
        if [ -n "$screen_is_dead" ]
        then
                screen -wipe
        fi
 
        if ! curl "http://$HOSTNAME:$1/simstatus/" > /dev/null 2>&1
        then
                if [ -n "$running_pid" ]
                then
                        terminate_dead $running_pid
                fi
        fi
 
        if [ -z "$running_pid" ]
        then
                #...We Make A Log Entry And Start A New One
                # The Log Entry
                TIME="Simulator $2 Down, Restarting: `/bin/date +"%A, %B %d - %r"`"
                echo $TIME >>$LOG
 
                if [ $RUN_AS_OTHER_USER = 'TRUE' ]
                then
                        su -l $4 -c "$3"
                else
                        $3
                fi
 
                echo "$2 was down or unresponsive. Restarted."
        else
                echo "$2 is up and responds with OK status."
        fi
}
 
# Add a new line for each instance you want to monitor.
# All you need to do is replace each of the three settings with the correct
# values for the instance.
#
# status_check "<listener port>" "<screen name>" "<launch script>" "<user>"
#
# <listener port> - The port the instance listens to. Is set in OpenSim.ini; default is 9000
# <screen name> - The name of the screen running the instance
# <launch script> - The filename of the script that launches the instance
# <user> - User that opensim runs under. Unless you set RUN_AS_OTHER_USER='TRUE' this will be ignored
#
# Example: status_check "9000" "OpensimOne" "/home/opensim/opensim-one.sh" "opensim"
 
status_check "<listener port>" "<screen name>" "<launch script>" "<user>"
Personal tools
General
About This Wiki