User talk:OtakuMegane

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(oswatchdog (multiple instances))
m (derp)
 
(4 intermediate revisions by one user not shown)
Line 1: Line 1:
== Modified oswatchdog ==
+
== Opensim Status ==
This is a modified version of [[User_talk:BlueWall#oswatchdog|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.
+
This is the script I use to monitor my Opensim instances and restart them as needed. Originally based on BlueWall's oswatchdog 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.
+
NOTE: This assumes you have separate script(s) to launch each instance
=== oswatchdog(multiple) ===
+
<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 16:
 
# (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
 
#
 
 
#
 
#
 
#
 
#
 
# Base opensim installation
 
# Base opensim installation
BASE="/home/opensim"
+
BASE=""
  
 
# Log
 
# Log
Line 34: Line 25:
  
 
# Hostname
 
# Hostname
HOSTNAME="<Domain or IP address>"
+
HOSTNAME=""
 +
 
 +
# 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
 
#if the file exist, opensim wont be restarted
Line 40: Line 35:
 
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
 
                 TIME="Simulator $2 Down, Restarting: `/bin/date +"%A, %B %d - %r"`"
 
                 TIME="Simulator $2 Down, Restarting: `/bin/date +"%A, %B %d - %r"`"
 
                 echo $TIME >>$LOG
 
                 echo $TIME >>$LOG
                /bin/su -l opensim -c "/home/opensim/$3"
+
 
        else
+
                 if [ $RUN_AS_OTHER_USER = 'TRUE' ]
                 if ! curl "http://$HOSTNAME:$1/simstatus/"
+
 
                 then
 
                 then
                         kill -KILL $running_pid
+
                         su -l $4 -c "$3"
 +
                else
 +
                        $3
 
                 fi
 
                 fi
 +
 +
                echo "$2 was down or unresponsive. Restarted."
 +
        else
 +
                echo "$2 is up and responds with OK status."
 
         fi
 
         fi
 
}
 
}
Line 66: Line 89:
 
# values for the instance.
 
# values for the instance.
 
#
 
#
# listener port: The port the instance listens to. Is set in OpenSim.ini; default is 9000
+
# status_check "<listener port>" "<screen name>" "<launch script>" "<user>"
# screen name: The name of the screen running the instance
+
# launch script: The filename of the script that launches the instance
+
 
#
 
#
# Example: status_check "9000" "OpensimOne" "opensim-one.sh"
+
# <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>"
+
status_check "<listener port>" "<screen name>" "<launch script>" "<user>"
 
</source>
 
</source>

Latest revision as of 16:17, 13 July 2016

[edit] 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.

NOTE: This assumes you have separate script(s) to launch each instance

#!/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=""
 
# Log
LOG="$BASE/status-log.log"
 
# Hostname
HOSTNAME=""
 
# 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