Serveur de streaming : installer darwin pour opensim

Installation sur Ubuntu 10.04 32bits

Sources :

Darwin streaming server : http://dss.macosforge.org/

Streaming dans opensim : http://opensimulator.org/wiki/Streaming_Media_in_OpenSim

I – Installer les pré-requis

sudo apt-get install libstdc++6
sudo apt-get install gpac

II – Télécharger et installer darwin

cd /usr/local/src/
wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr5.5.5-Linux.tar.gz
tar xvzf DarwinStreamingSrvr5.5.5-Linux.tar.gz
cd DarwinStreamingSrvrlinux-Linux
sudo addgroup –system qtss
sudo adduser –system –no-create-home –ingroup qtss qtss
./Install

Vous allez obtenir en cours d’installation :

In order to administer the Darwin Streaming Server you must create …..
Please enter a new administrator user name: opensim

Entrez vos noms et mot de passe d’administrateur.

Vous pouvez maintenant vous connecter à l’écran d’administration du serveur : http://adresse_ip_du_serveur:1220/

image

N.B. : attention à l’option d’utilisation du port 80 qui peut entrainer des dysfonctionnements d’autres produits sur votre serveur.

III – Tests

Vous pouvez voir dans l’onglet General Settings que le répertoire de stockage par défaut est /usr/local/movies/

image

Cliquez playlist, puis new media playlist

image

Vous obtenez la liste des fichiers de test.

Lancer quicktime sur votre pc et entrer en url :

rtsp://ip_de_votre_serveur/sample_100kbit.mp4

La première fois que quicktime se connecte à une adresse IP, il vérifie la bande passante sur le serveur ce qui peut prendre quelque temps.

NB : pour utiliser correctement une video MPEG-4 avec darwin, un indicateur de pistes doit être inséré dans le flux de données. Cet indicateur est nécessaire pour permettre l’avance et le retour rapide de la video.

Si vous n’effectuez pas cette opération, ils seront encore téléchargeables, mais il leur faudra quelques secondes pour commencer à jouer. Vous n’avez pas besoin d’un serveur de streaming pour cela, il suffit d’utiliser Apache. Donc :

cd /usr/local/movies/
MP4Box -hint votre_video.mp4

En cas d’arrêt (une fois connecté comme root en console) :

  • pour relancer le gestionnaire d’administration:
/usr/local/sbin/streamingadminserver.pl
  • pour relancer le serveur :
/usr/local/sbin/DarwinStreamingServer

IV – Utilisation sur opensim

Connectez vous a votre sim et créez vous un cube de la taille que vous souhaitez.

Appliquez une texture blanche et une couleur noire ( ou ce que vous voulez) à l’exception de la face de projection de la video ou vous appliquez une couleur blanche et la texture “default media texture” que vous trouverez dans la librairie de textures de base opensim de votre inventaire.

Dans la fenêtre du menu world/about land, onglet media, selectionnez la même texture.

Vérifiez dans about land onglet général que Allow dead to group est bien coché.

Dans l’onglet media cliquez sur set dans media url et tapez le lien :

rtsp://ip_de_votre_serveur/sample_100kbit.mp4

Vous pouvez également utiliser le script freewiew que vous trouverez sur cette page.

Bonne vidéo……

Publicités

Exemple d’automatisation de gestion de plusieurs régions sur opensim (1/3)

Instructions pour serveur linux Ubuntu Lucid 10.04 version 32 bits sur grille Francogrid (donc à adapter pour des configurations différentes).

Configuration de départ du serveur minimale.

En grande partie traduction et adaptation des articles de Snoopy Pfeffer sur maxping 

Liste des opérations à effectuer :

I – Installation des paquets nécessaires

II – Installation opensim, création arborescence répertoires

III – Automatisation des mises à jour

IV – Automatisation de la gestion des régions avec monit

V – Automatisation des sauvegardes

Console windows utilisée : putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/)

Client ftp utilisé : filezilla
(http://www.filezilla.fr/)

I – Installation des paquets nécessaires

Sources :

Docs putty : http://www.chiark.greenend.org.uk/~sgtatham/putty/docs.html

Docs filezilla : http://www.filezilla.fr/filezilla-tuto1.php

Commandes de base console : http://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base

apt-get : http://doc.ubuntu-fr.org/apt-get

Mono : http://doc.ubuntu-fr.org/mono

Screen : http://doc.ubuntu-fr.org/screen

Lamp : http://doc.ubuntu-fr.org/lamp

Python : v2.6 installée par defaut sur Unbuntu 10

Monit : http://doc.ubuntu-fr.org/monit

Webmin (facultatif) : http://doc.ubuntu-fr.org/webmin

sudo apt-get updatesudo apt-get upgrade

sudo apt-get install screen

sudo apt-get install lamp-server^

N’oubliez pas le caractère ^ en fin de ligne.

Mysql va vous demander un mot de passe d’administrateur.

sudo apt-get install monit

Nous lancerons le démon plus tard une fois configuré.

L’installation de mono pose quelques problèmes au moment ou je rédige ce billet. Je l’ai donc compilé moi-même. Voyez sur le site les versions disponibles selon votre version ubuntu (si apt-get marche mal, utlisez aptitude).

Installation facultative de webmin pour gérer le serveur :

sudo wget http://www.webmin.com/jcameron-key.ascsudo apt-key add jcameron-key.asc

Puis éditez le fichier /etc/apt/sources.list et ajoutez la ligne :

deb http://download.webmin.com/download/repository sarge contrib

Vous pouvez maintenant utiliser les commandes :

sudo apt-get updatesudo apt-get install webmin

Vérifiez la connexion à webmin : https;//<votre.adresse.ip>:10000

II – Installation opensim, création arborescence répertoires

Sources :

opensim : http://opensimulator.org/wiki/Main_Page

mysql : http://doc.ubuntu-fr.org/mysql

Structure installation : http://maxping.org/technobabble/platforms/open-simulator/opensim-linux-series-–-service-management-processes-and-scripts.aspx

II.1 Création de l’utilisateur opensim

Pour des raisons de sécurité, créez un utilisateur opensim

sudo adduser opensim

II.2 Création des bases mysql

Nous allons nommer nos régions R01, R02, R03………..pour les besoins des scripts d’automatisation (ces noms n’ont rien a voir avec le nom de région qui s’affichera plus tard dans opensim et que vous définirez dans la configuration propre d’opensim).

Vérifier que mysql est en fonction :

sudo service mysql status

Vous devez obtenir : mysql start/running, process xxxxxx Créez autant de bases que de régions et n’oubliez pas de donner a chaque fois les droits a opensim :

mysql -u root –p

Vous obtenez le prompt de mysql : mysql>

Créer l’utilisateur opensim :

CREATE user opensim@localhost;
SET password FOR opensim@localhost = password(“mot_de_passe”);

Créer les bases :

CREATE DATABASE R01;
GRANT ALL ON R01.* TO opensim@localhost;
CREATE DATABASE R02;
GRANT ALL ON R02.* TO opensim@localhost;
.......etc
quit

II.3 Création des répertoires

Connectez vous en tant qu’opensim.

Convention de répertoire :

  • Sous le répertoire home d’opensim, un répertoire principal également appelé opensim,
  • sous répertoire backup pour les sauvegardes
  • sous répertoires opensim_x.x.x (par exemple opensim_0.6.9) qui contiennent les version successives d’opensim,
  • sous répertoire run qui contient lui même autant de sous-répertoires que de régions nommés R01, R02, R03……….
  • sous répertoire ServiceManagement qui contient les scripts utilisés pour la gestion des services,
  • sous répertoire tmp pour le téléchargement et l’installation des nouvelles versions, avant de les transférer dans opensim_x.x.x

Les mises a jour seront faites dans un répertoire run_new pour configuration et contrôle. Pour terminer, le répertoire run sera conservé et renommé

run_old en cas de besoin de restauration rapide. run_new sera renommé en run.

Les sous-répertoires R01, R02,….vont contenir des liens symboliques vers les fichiers contenus dans opensim_x.x.x, à l’exception des fichiers OpenSim.ini

et RegionConfig.ini qui sont des copies réelles générées par les scripts. Les dossiers Regions et et ScriptEngines sont également indépendants dans la mesure ou ils stockent des informations spécifiques à chaque région.

mkdir opensimcd opensimmkdir backup

mkdir run

mkdir ServiceManagement

mkdir tmp

cd run

mkdir R01

cd R01

mkdir Regions

mkdir ScriptEngines

cd..

mkdir R02

cd R02

mkdir Regions

mkdir ScriptEngines

cd..

etc…………….

La création de la structure complète de run est nécessaire lors de la première utilisation. Pas la suite, elle sera générée par les scripts.

Pour l’instant, la structure du disque vue par root se présente comme suit :

image

……….

image

II.4 Installation de opensim

Rappel : vous devez utiliser une version d’opensim compatible avec celle de

la grille à laquelle vous allez vous connecter. Dans mon cas, Francogrid est à ce jour en version 0.6.9. La majorité des grilles fournissent des versions pré-compilées. Pour Francogrid, adressez-vous à un administrateur qui vous indiquera le répertoire de téléchargement.

Si vous souhaitez compiler votre propre version, voir http://opensimulator.org/wiki/Build_Instructions

La bonne version pré-compilée une fois téléchargée dans le répertoire tmp :

cd opensim/tmp/
tar -zxvf francogrid-opensim-0.6.9-post-fixes.aa8e7ae.tar.gz

mv  francogrid-opensim-0.6.9-post-fixes.aa8e7ae opensim_0.6.9

mv opensim_0.6.9 ..

Pour terminer cette partie, mettre dans chacun des répertoires run/Rxx/Regions le fichier RegionConfig.ini adapté.

Attention à bien mentionner un port différent pour chacune d’entre elles. Personnellement, j’utilise 9010 pour R01, 9011 pour R02,………

A suivre……….

Exemple d’automatisation de gestion de plusieurs régions sur opensim (2/3)

III – Automatisation des mises à jour

III.1 Adaptation du fichier OpenSim.ini

Dans le fichier OpenSim.ini générique qui se trouve dans le répertoire ../opensim_x.x.x/bin, nous utiliserons les symboles suivants (le script remplacera ces symboles par les valeurs correctes pour chaque région).

REGION_NAME
HTTP_PORT
DATABASE_NAME
DATABASE_PASSWORD
SERVER_IP
VOICE_IP
AV_CAPSULE (seulement pour les serveurs 64bits)

Ainsi vous ne devez mettre à jour qu’un fichier maître OpenSim.ini et les fichiers individuels seront créés automatiquement par le script.

Modifications à apporter :

[Startup]
…………………………………
; ## STORAGE
…………………………………
; Pour utiliser mysql décommentez et paramétrez içi:
storage_plugin= »OpenSim.Data.MySQL.dll »
storage_connection_string= »Data Source=localhost;Database=DATABASE_NAME;User ID=opensim;Password=DATABASE_PASSWORD; »;
; If you want to use a different database/server for estate data, then
……………………………………..
[Network]
……………………………………..
http_listener_port = HTTP_PORT
…………………………………….
[ODEPhysicsSettings]
……………………………………..
; ## Avatar Control
……………………………………..
av_capsule_standup_tensor_linux = AV_CAPSULE
………………………………………
[FreeSwitchVoice]
………………………………………
freeswitch_service_server = SERVER_IP
;freeswitch_service_port = 80
; this should be the same port the region listens on
freeswitch_service_port = HTTP_PORT
freeswitch_realm = VOICE_IP
freeswitch_sip_proxy = VOICE_IP:5060
freeswitch_attempt_stun = false
freeswitch_stun_server = VOICE_IP
freeswitch_echo_server = VOICE_IP
freeswitch_echo_port = 50505
freeswitch_well_known_ip = VOICE_IP

III.2 Scripts

Dans le répertoire home de l’utilisateur opensim, créer un sous-répertoire
bin où vous placerez les deux scripts suivants, après les avoir adaptés à votre usage (nombre de régions et paramètres en rouge):

  • updateos ( à utiliser avec le paramètre opensim_x.x.x)
#!/bin/sh
# updateos
echo Updating OpenSim…
cd /home/opensim/opensim/
mkdir run_new
cd run_new
mkdir R01 R02 R03 R04
mkdir R01/Regions R02/Regions R03/Regions R04/Regions
mkdir R01/ScriptEngines R02/ScriptEngines R03/ScriptEngines R04/ScriptEngines
cp ../run/R01/Regions/* R01/Regions
cp ../run/R02/Regions/* R02/Regions
cp ../run/R03/Regions/* R03/Regions
cp ../run/R04/Regions/* R04/Regions
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R01/g’ -e ‘s/HTTP_PORT/9010/g’ -e ‘s/DATABASE_NAME/R01/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’ ‘s/AV_CAPSULE/1700000/g’ > R01/OpenSim.ini
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R02/g’ -e ‘s/HTTP_PORT/9011/g’ -e ‘s/DATABASE_NAME/R02/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’  ‘s/AV_CAPSULE/1700000/g’ > R02/OpenSim.ini
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R03/g’ -e ‘s/HTTP_PORT/9012/g’ -e ‘s/DATABASE_NAME/R03/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’  ‘s/AV_CAPSULE/1700000/g’ > R03/OpenSim.ini
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R04/g’ -e ‘s/HTTP_PORT/9013/g’ -e ‘s/DATABASE_NAME/R04/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’  ‘s/AV_CAPSULE/1700000/g’ > R04/OpenSim.ini
cd R01
ln -s ../../$1/bin/* .
ln -s ../../$1/bin/.* .
cd ../R02
ln -s ../../$1/bin/* .
ln -s ../../$1/bin/.* .
cd ../R03
ln -s ../../$1/bin/* .
ln -s ../../$1/bin/.* .
cd ../R04
ln -s ../../$1/bin/* .
ln -s ../../$1/bin/.* .
cd ../..
  • refreshos ( à utiliser avec le paramètre opensim_x.x.x)
#!/bin/sh
# refreshos
echo Refreshing OpenSim INI Files…
cd /home/opensim/opensim/run/
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R01/g’ -e ‘s/HTTP_PORT/9010/g’ -e ‘s/DATABASE_NAME/R01/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’ ‘s/AV_CAPSULE/1700000/g’ > R01/OpenSim.ini
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R02/g’ -e ‘s/HTTP_PORT/9011/g’ -e ‘s/DATABASE_NAME/R02/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’  ‘s/AV_CAPSULE/1700000/g’ > R02/OpenSim.ini
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R03/g’ -e ‘s/HTTP_PORT/9012/g’ -e ‘s/DATABASE_NAME/R03/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’  ‘s/AV_CAPSULE/1700000/g’ > R03/OpenSim.ini
cat ../$1/bin/OpenSim.ini | sed -e ‘s/REGION_NAME/R04/g’ -e ‘s/HTTP_PORT/9013/g’ -e ‘s/DATABASE_NAME/R04/g’ -e ‘s/DATABASE_PASSWORD/Sn6i367/g’ -e ‘s/SERVER_IP/71.6.217.139/g’ -e ‘s/VOICE_IP/66.240.232.99/g’  ‘s/AV_CAPSULE/1700000/g’ > R04/OpenSim.ini
cd ../..

III.3 Test de l’installation

cd opensim/bin/
updateos opensim_0.6.9

Le script a créé un répertoire run_new avec les fichiers de configuration adaptés à chaque région.

Testez le bon fonctionnement de vos régions. Si tout est correct :

cd ..
mv run run_old
mv run_new run

Si vous devez modifier quelque chose dans le fichier OpenSim.ini pour la même version d’opensim, modifiez le fichier maitre dans opensim_x.x.x/bin/ et :

cd opensim/bin/
refreshos opensim_0.6.9

III.4 Récapitulation

Lors de la prochaine installation (dans le répertoire home de l’utilisateur opensim):

  • téléchargement de la nouvelle version pré-compilée dans le répertoire tmp, décompression et transfert vers le répertoire /opensim/opensim_x.x.x
  • transfert du fichier OpenSim.ini de l’ancienne version dans le répertoire bin de la nouvelle version et modifications si nécessaire
  • si nécessaire, modification des fichiers RegionConfig.ini dans les répertoires run/Rxx
  • lancer updateos opensim_x.x.x
  • vérifier le bon fonctionnement des régions run_new/Rxx
  • renommer run en run_old
  • renommer run_new en run

Exemple d’automatisation de gestion de plusieurs régions sur opensim (3/3)

IV – Automatisation de la gestion des régions avec monit

Sources :

Doc Monit : http://mmonit.com/monit/documentation/

Remote admin : http://opensimulator.org/wiki/RemoteAdmin

Article Snoopy Pfeffer : http://maxping.org/technobabble/platforms/open-simulator/opensim-linux-series-–-service-management-with-monit.aspx

Article Coyled : http://coyled.com/2010/07/07/monit-and-opensim/

IV-1 Mise en place des scripts

Copier dans le répertoire ServiceManagement les 8 scripts suivants :

  • broadcastos

Script Python qui envoie des messages aux utilisateurs Opensim. Le numéro de port http doit être fourni en tant que paramètre.

#!/usr/bin/python
# -*- encoding: utf-8 -*-
import ConfigParser
import xmlrpclib
import optparse
import os.path
if __name__ == ‘__main__’:
    parser = optparse.OptionParser()
    parser.add_option(‘-s’, ‘–server’, dest = ‘server’, help = ‘URI of the region server’, metavar = ‘SERVER’)
    parser.add_option(‘-p’, ‘–password’, dest = ‘password’, help = ‘password of the region server’, metavar = ‘PASSWD’)
    parser.add_option(‘-m’, ‘–message’, dest = ‘message’, help = ‘message to broadcast’, metavar = ‘MSG’)
    (options, args) = parser.parse_args()
    server = options.server
    password = options.password
    message = options.message
    gridServer = xmlrpclib.Server(server)
    res = gridServer.admin_broadcast({‘password’: password, ‘message’: message})
    if res [‘success’] == ‘true’:
        print ‘message was sent to %s’ % server
    else:
        print ‘sending message to %s failed’ % server

N.B. Pour les scripts en python attention a bien respecter l’indentation des conditions if else

  • clearos

Script pour nettoyer ScriptEngines . Il peut être utile d’exécuter cette commande après chaque mise à jour.

#!/bin/sh
rm -r /home/opensim/opensim/run/*/ScriptEngines/*
  • rmpidsos

Script pour nettoyer les fichiers pid après l’arrêt de tous les processus serveur OpenSim.

#!/bin/sh
rm -f /tmp/*.pid
  • shutdownos

Script Python qui arrête les processus serveur OpenSim. The Le numéro de port http doit être fourni en tant que paramètre.

#!/usr/bin/python
# -*- encoding: utf-8 -*-
import ConfigParser
import xmlrpclib
import optparse
import os.path
if __name__ == ‘__main__’:
    parser = optparse.OptionParser()
    parser.add_option(‘-s’, ‘–server’, dest = ‘server’, help = ‘URI of the region server’, metavar = ‘SERVER’)
    parser.add_option(‘-p’, ‘–password’, dest = ‘password’, help = ‘password of the region server’, metavar = ‘PASSWD’)
    (options, args) = parser.parse_args()
    server = options.server
    password = options.password
    gridServer = xmlrpclib.Server(server)
    res = gridServer.admin_shutdown({‘password’: password})
    if res[‘success’] == ‘true’:
        print ‘shutdown of %s initiated’ % server
    else:
        print ‘shutdown of %s failed’ % server
  • startbos

Script pour démarrer Opensim dans la console pour les essais (sans Monit et screen).  Le nom de la région doit être fourni en tant que paramètre.

#!/bin/sh
cd /home/opensim/opensim/run/$1/
mono ./OpenSim.exe -gridmode=true -smtag=$1
  • startqos

Script utilisé par Monit pour lancer Opensim (crée un fichier pid). . Le nom de la région doit être fourni en tant que paramètre.

#!/bin/sh
export PATH= »/home/opensim/bin/mono/bin:$PATH »
export PKG_CONFIG_PATH= »/home/opensim/bin/mono/lib/
pkgconfig:$PKG_CONFIG_PATH »
export MANPATH= »/home/opensim/bin/mono/share/man:$MANPATH »
export MONO_THREADS_PER_CPU=80
cd /home/opensim/opensim/run/$1/
screen -S $1 -d -m mono ./OpenSim.exe -gridmode=true -smtag=$1 &
  • stopos

Script qui est utilisé par Monit  pour arrêter un processus Opensim. Le nom de la région et le numéro de port http doivent être fournis en tant que paramètres. Ce script utilise le script « stopsoftos » ci-après.

#!/bin/sh
echo $1: stopping process
[ -e /tmp/$1.pid ] || exit 0
OPID=`cat /tmp/$1.pid`
/home/opensim/opensim/ServiceManagement/stopsoftos $2 &
sleep 90
PID=`cat /tmp/$1.pid`
if [ « $PID » = « $OPID » ]; then
kill -KILL $PID
rm /tmp/$1.pid
fi
  • stopsoftos

Script qui est utilisé par le script « stopos » pour l’arrêt d’un processus Opensim . Le numéro de port http doit être fourni en tant que paramètre.Ce script utilise les scripts  « broadcastos » et « shutdownos » pour envoyer des messages d’avertissement aux utilisateurs puis fermer Opensim.

#!/bin/sh
/home/opensim/opensim/ServiceManagement/broadcastos -s http://localhost:$1 -p votre_mot_de_passe -m « This region will restart in 1 minute! Please leave now! » &
sleep 30
/home/opensim/opensim/ServiceManagement/broadcastos -s http://localhost:$1 -p votre_mot_de_passe  -m « This region will restart in 30 seconds! Please leave now! » &
sleep 30
/home/opensim/opensim/ServiceManagement/shutdownos -s http://localhost:$1 -p votre_mot_de_passe  &

Utilisez votre mot de passe d’utilisateur opensim qui figurera aussi dans OpenSim.ini dans la section remote admin (voir ci-dessous).

IV-2 Modifications d’OpenSim.ini

  • création des fichiers pid (fichiers qui stockent les numéros de processus Linux) et paramétrage spécifique pour utiliser restart dans monit
[Startup]
……………………
; Place to create a PID file
PIDFile = « /tmp/REGION_NAME.pid »
……………………
InworldRestartShutsDown = true
  • activation de remote admin
RemoteAdmin]
    enabled = true
    access_password = votre_mot_de_passe_opensim
    port = HTTP_PORT
  • activation des webstats
[WebStats
………………………………………]
enabled=true

Si vous avez effectué les opération de la partie 2, modifiez le fichier maître dans opensim_x.x.x puis utilisez refreshos pour mettre à jour vos régions.

IV –3 Paramétrage de monit

Monit tourne sur le port 2812 et le fichier de configuration monitrc se trouve dans /etc/monit.

Voici un exemple de mon fichier /etc/monit/monitrc :

####################################################### Monit control file
######################################################
##
## Comments begin with a ‘#’ and extend through the end of the line. Keywords
## are case insensitive. All path’s MUST BE FULLY QUALIFIED, starting with ‘/’.
##
## Bellow is the example of some frequently used statements. For information
## about the control file, a complete list of statements and options please
## have a look in the monit manual.
##
##
######################################################
## Global section
######################################################
##
## Start monit in background (run as daemon) and check the services at 1-minute
## intervals.
#
set daemon 60
#
#
## Set syslog logging with the ‘daemon’ facility. If the FACILITY option is
## omited, monit will use ‘user’ facility by default. You can specify the
## path to the file for monit native logging.
#
# set logfile syslog facility log_daemon
set logfile /var/log/monit.log
#
## Set list of mailservers for alert delivery. Multiple servers may be
## specified using comma separator. By default monit uses port 25 – it is
## possible to override it with the PORT option.
#
# set mailserver mail.bar.baz, # primary mailserver
# backup.bar.baz port 10025, # backup mailserver on port 10025
# localhost # fallback relay
#
#
## By default monit will drop the event alert, in the case that there is no
## mailserver available. In the case that you want to keep the events for
## later delivery retry, you can use the EVENTQUEUE statement. The base
## directory where undelivered events will be stored is specified by the
## BASEDIR option. You can limit the maximal queue size using the SLOTS
## option (if omited then the queue is limited just by the backend filesystem).
#
# set eventqueue
# basedir /var/monit # set the base directory where events will be stored
# slots 100 # optionaly limit the queue size
#
#
## Monit by default uses the following alert mail format:
##
## -8<-
## From: monit@$HOST # sender
## Subject: monit alert – $EVENT $SERVICE # subject
##
## $EVENT Service $SERVICE #
## #
## Date: $DATE #
## Action: $ACTION #
## Host: $HOST # body
## Description: $DESCRIPTION #
## #
## Your faithful employee, #
## monit #
## -8<-
##
## You can override the alert message format or its parts such as subject
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.
## are expanded on runtime. For example to override the sender:
#
# set mail-format { from: monit@foo.bar }
#
#
## You can set the alert recipients here, which will receive the alert for
## each service. The event alerts may be restricted using the list.
#
# set alert sysadm@foo.bar # receive all alerts
# set alert manager@foo.bar only on { timeout } # receive just service-
# # timeout alert
#
#
## Monit has an embedded webserver, which can be used to view the
## configuration, actual services parameters or manage the services using the
## web interface.
#
set httpd port 2812 #and use address localhost
#allow localhost   # Allow localhost to connect
allow admin:monit # require user ‘admin’ with password ‘monit’
#ssl enable
#pemfile /etc/ssl/private/localhost.pem
#
#
####################################################
## Services
####################################################
##
## Check the general system resources such as load average, cpu and memory
## usage. Each rule specifies the tested resource, the limit and the action
## which will be performed in the case that the test failed.
#
check system ip_de_votre_serveur
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert
#
#
## Check a file for existence, checksum, permissions, uid and gid. In addition
## to the recipients in the global section, customized alert will be send to
## the additional recipient. The service may be grouped using the GROUP option.
#
## Check that a process is running, responding on the HTTP and HTTPS request,
## check its resource usage such as cpu and memory, number of childrens.
## In the case that the process is not running, monit will restart it by
## default. In the case that the service was restarted very often and the
## problem remains, it is possible to disable the monitoring using the
## TIMEOUT statement. The service depends on another service (apache_bin) which
## is defined in the monit control file as well.
#
# Monitor MySQL Service
check process mysql with pidfile /var/lib/mysql/votre_processus_mysql.pid
group database
start program « /etc/init.d/mysql start »
stop program « /etc/init.d/mysql stop »
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
#
# Monitor mono opensim Service for R01
check process opensim_R01 with pidfile /tmp/R01.pid
start program = « /home/opensim/opensim/ServiceManagement/startqos R01 »
stop program = « /home/opensim/opensim/ServiceManagement/stopos R01 9010 »
if totalmem > 900 Mb then alert
if totalmem > 1100 Mb then restart
if cpu usage > 20% then alert
if cpu usage > 24% for 3 cycles then restart
if failed host 127.0.0.1 port 9010 send « GET /SStats/ HTTP/1.0\r\nHost: localhost\r\n\r\n » expect « <!DOCTYPE html .* » within 5 cycles then restart
if 5 restarts within 5 cycles then timeout
#
# Monitor mono opensim Service for R02
check process opensim_R02 with pidfile /tmp/R02.pid
start program = « /home/opensim/opensim/ServiceManagement/startqos R02 »
stop program = « /home/opensim/opensim/ServiceManagement/stopos R02 9011 »
if totalmem > 900 Mb then alert
if totalmem > 1100 Mb then restart
if cpu usage > 20% then alert
if cpu usage > 24% for 3 cycles then restart
if failed host localhost port 9011 type TCP send « GET /SStats/ HTTP/1.0\r\nHost: localhost\r\n\r\n » expect « <!DOCTYPE html .* » within 5 cycles then restart
if 5 restarts within 5 cycles then timeout………………….etc

IV-4 Lancement de monit

Le fichier monitrc doit être configuré pour root.

Autorisez l’utilisation de monit en éditant le fichier /etc/default/monit et en mettant la variable sartup à 1.

Testez votre fichier de configuration en exécutant monit –t.

Si tout est bon, vous pouvez (connecté comme root) lancer le démon monit par :

/etc/init.d/monit start

Vous pouvez désormais vous connecter par http://votre_ip:2812/, login:admin mot de masse:monit (à modifier par la suite dans le fichier monitrc).

image

image

Pour arrêter monit :

/etc/init.d/monit stop

Attention : pensez à désactiver monit si vous êtes en test d’opensim ou de vos régions ! Sinon il relancera automatiquement à tout arrêt. Pensez aussi qu’il se lancera automatiquement après un reboot.

V – Automatisation des sauvegardes SQL

Sources :

AutoMySQLBackup : http://sourceforge.net/projects/automysqlbackup/

Cron : http://doc.ubuntu-fr.org/cron

V.1 Installation et paramétrage

Téléchargez ici AutoMySQLBackup dans votre répertoire opensim/bin/

Editez le fichier et créez automysqlbackup.conf dans un répertoire /etc/automysqlbackup/ comme indiqué.

Renseignez username (root) et son mot de passe dans automysqlbackup.conf

Si comme moi vous préférez une sauvegarde par base, renseignez DBNAMES= »R01 R02 R03…………”

Indiquez le répertoire de sauvegarde :

BACKUPDIR= »/home/opensim/opensim/backup/DB/ »

(J’ai créé un sous-répertoire DB pour les sauvegardes mysql)

Enfin renseignez l‘adresse email ou désactivez la fonction email.

Testez le bon fonctionnement du script.

V.2 Programmation des sauvegardes

Créez un fichier crontab pour root

sudo crontab -e

Ajoutez la ligne :

0 0 * * * /home/opensim/bin/automysqlbackup

et vos sauvegardes se lanceront tous les jours à minuit.

V.3 Restauration

En cas de problème pour restaurer une base :

cd /home/opensim/opensim/backup/DB/daily/
cp ma_sauvegarde.sql.gz /home
cd
gunzip ma_sauvegarde.sql.gz
mysql -u root -p maBase < ma_sauvegarde.sql
rm ma_sauvegarde.sql

Et pour vérifier l’intégrité d’une base :

mysqlcheck –databases Rxx –auto-repair –verbose -p