[Seaside] Monit on Ubuntu / Debian to monitor Seaside images

Sebastian Sastre ssastre at seaswork.com
Sat Feb 9 02:04:57 UTC 2008


Very good,
 
    I think we can give a number count in the name of the process. Lets say
 
    seasideService1.1  in port 101001
    seasideService1.2  in port 101002
    seasideService1.3  in port 101003
 
    seasideService2.1 in port 102001
    seasideService2.2  in port 102002
    
    seasideServiceN.1 in port 10N001
    ...
    seasideServiceN.M in port 10N00M
 
    for an automatic installation of a service some script factory will be
needed but is very easy to make once we have the script to start stop
images. Just writting the template script with customized process name port
and path.
 
    I've not worked yet on the balancer part but I think we can use HAProxy
as Ramon's blog says making it to balance load using the rigth set of
services.
 
    cheers,
 
Sebastian Sastre

 

 


  _____  

De: seaside-bounces at lists.squeakfoundation.org
[mailto:seaside-bounces at lists.squeakfoundation.org] En nombre de Rajeev
Lochan
Enviado el: Viernes, 08 de Febrero de 2008 17:00
Para: Seaside - general discussion
Asunto: Re: [Seaside] Monit on Ubuntu / Debian to monitor Seaside images


Thanks for your kind help Sebastian.
Following your instructions, I have managed to write init script for start
and stop. I was lucky to get code from
http://www.nabble.com/attachment/8445249/1/squeak_http_service

and after some tweaking, I have the following code for /etc/init.d/seaside

#########################################################################
#!/bin/sh

# Script to start a Squeak(Seaside) Image which runs Kom HTTP Server in
-nodisplay mode.
# Because main purpose is to run as service from /etc/init.d/seaside,
# this can be started by root, but runs under regular user

# Check and run what user asked for.

case "$1" in
    start)
         echo -n "Starting Seaside "
    if [ "$SQUEAK_HTTP_PID" != "" ]; then
       echo "SQUEAK_HTTP Already running, exiting"
       # exit 1
    else

       # Change directory and run Squeak headless
       cd /home/rajeev/caartz
        /usr/bin/squeakvm -nodisplay caartz01 "" port 9091 &
           SQUEAK_HTTP_PID=`ps -eo pid,command | grep "squeak" | grep -v
grep | awk '{ print $1 }'`
           cd /var/run
           echo "Seaside is Started and is running with PID"
           echo $SQUEAK_HTTP_PID

           echo $SQUEAK_HTTP_PID > squeak.pid
         fi
        ;;
    stop)
         echo -n "Shutting down Seaside "
           cd /var/run     
        SQUEAK_HTTP_PID=`head squeak.pid` 
    if [ "$SQUEAK_HTTP_PID" = "" ]; then
       echo "Seaside Not running!"
    else
       #kill -SIGINT $SQUEAK_HTTP_PID
       kill -HUP $SQUEAK_HTTP_PID
           rm -rf squeak.pid
    fi
        ;;
    pid)
        cd /var/run
        SQUEAK_HTTP_PID=`head squeak.pid` 
        
    echo "You asked for PID: here:"
    echo $SQUEAK_HTTP_PID    
    ;;
    *)
        echo "Usage: $0 {start|stop|pid}"
        exit 1
        ;;
esac


##########################################################################

I then add the following code in monitrc

check process squeakvm with pidfile /var/run/squeak.pid
 group server
 start program = "/etc/init.d/seaside start"
 stop program = "/etc/init.d/seaside stop" 
 
 if cpu > 60% for 2 cycles then alert
 if cpu > 80% for 5 cycles then restart
 if totalmem > 200.0 MB for 2 cycles then restart
 
 if loadavg(5min) greater than 10 for 8 cycles then restart
 if 5 restarts within 5 cycles then timeout
#####################################################################

And to my excitement, Monit works for the above set of code.
1) I am able to start a seaside image, grep for 'squeak' in the ps and
assign its PID to a variable and then echo that into /var/run/squeak.pid
(here squeak.pid is created or overwritten)

2) When I stop the image, the PID is read from /var/run/squeak.pid and the
process is killed, then the file squeak.pid is deleted

The setup works well. I did the following to test

$ pkill squeakvm  
or
$ sudo /etc/init.d/seaside stop

In both cases, after daemon checking time of 60 seconds, Seaside image was
started automatically.

So far so good, now my only concern in this regard is how to run Multiple
seaside/squeak images ?

AFAIK, the default process name for all the squeak instances running are
'squeakvm' , how to change this to suit image name or the best thing would
be to have seaside_9091  (port number.. the way mongrel_8010 is named)

If we get unique process name, then using Monit would become easier.

Thanks & Regards,
Rajeev


On Feb 7, 2008 6:46 PM, Sebastian Sastre <ssastre at seaswork.com> wrote:


Well done,
 
    if you read the monit documentation you will figure out quickly how to
use it. And yes you have to set a name for each process/image which monit
only can discern by looking its pid file. That's why I've made those squeak
production images to make a pid file with the name of the service (only if
in unix like OS) and delete it when shutdown. And the script that is named
with the name of the service.
 
    I'm also using two scripts one is SERVICENAME and the other is
SERVICENAMEg. The second is to open the image with full display. This can be
done in the same script by a different command like startHeadfull instead of
start and that comand uses the headfull invocation of squeak.
 
    So the scripts to start and stop looks pretty much as those but I modify
them to allow me to pass as argument a configuration file (just a .st file
defining a dictionary of options). I think they will work for any linux. I
needed to make a directory under /var/run to store only pids of seaside
images to make things more simple.
 
    cheers,
 
Sebastian Sastre

 


  _____  


De: seaside-bounces at lists.squeakfoundation.org
[mailto:seaside-bounces at lists.squeakfoundation.org] En nombre de Rajeev
Lochan

Enviado el: Jueves, 07 de Febrero de 2008 10:34
Para: Seaside - general discussion
Asunto: Re: [Seaside] Monit on Ubuntu / Debian to monitor Seaside images


Hi Sebastian,
I am figuring out a bit of what you sent me in your reply. OJ7WRE is the
name of your Seaside service. I am now searching for init script for Squeak
image. Till now, this is the nearest things I have got

http://wiki.squeak.org/swiki/124     for RedHat Distro
http://wiki.squeak.org/swiki/123     for Solaris

Which one to go for ?, Is there any other thing much more specific to Debian
/ Ubuntu . 

Thanks for your help,
Rajeev


On Feb 7, 2008 2:28 AM, Sebastian Sastre <ssastre at seaswork.com> wrote:


Hi Rajeev,
 
    Monit its simple and yet powerful.
 
    This is how the monitrc file looks like to monitor a squeak image:
 
############################################################################
###
## Monitoring DEVELOPMENT Service OJ7WRE
############################################################################
###
 
 check process OJ7WRE with pidfile /var/run/services/OJ7WRE.pid
 group server
 start program = "/etc/init.d/OJ7WRE start"
 stop program = "/etc/init.d/OJ7WRE stop"
 
 if cpu > 60% for 2 cycles then alert
 if cpu > 80% for 5 cycles then restart
 if totalmem > 200.0 MB for 2 cycles then restart
 
 if loadavg(5min) greater than 10 for 8 cycles then restart
 if 5 restarts within 5 cycles then timeout
############################################################################
###
 
    the start and stop script is doing more or less what you are doing
manually. I send a kill -15 to close image gently. Also I needed to make the
pid file when the image starts and remove before image quits. I have an
object in the image dedicated to startup and shutdown production stuff
inside the image.
 
    For a "more monitored" services you can make monit to send you an email
to your cell phone if it reach some point (like a service restart or fail to
start or CPU 100% for more than 5 min or apache is down or whatever).
 
    cheers,
 
Sebastian Sastre






  _____  

De: seaside-bounces at lists.squeakfoundation.org
[mailto:seaside-bounces at lists.squeakfoundation.org] En nombre de Rajeev
Lochan
Enviado el: Miércoles, 06 de Febrero de 2008 17:36
Para: Seaside - general discussion
Asunto: [Seaside] Monit on Ubuntu / Debian to monitor Seaside images


Hi,
I have been working towards setting up a dedicated server (Ubuntu) to host
my Seaside app as per Ramon's Blog
http://onsmalltalk.com/programming/smalltalk/scaling-seaside-redux-enter-the
-penguin/

Till now, I have been successful in having Apache serve static content and
Load balance between 3 images of my Seaside App. Sticky sessions are working
and everything is going well so far. But I had a problem when installing
Daemontools (which Ramon has written in his blog and also Lukas has written
in Mailing lists), the recent versions of Ubuntu, dont support Daemontools
out of the box. 

In one of the comments to Ramon's post, I could learn that some of the
seasiders have used Monit to do much more than want Daemontools does. Could
you please guide me how to go about.

I came across a blog on Rails using Monit
http://www.igvita.com/2006/11/07/monit-makes-mongrel-play-nice/
In that, what is the equivalent code to Seaside of the following code ?


start program = "/usr/local/bin/ruby /usr/local/bin/mongrel_rails start -d
-e production -p 8010 -a 127.0.0.1 -P
/home/user/current/log/mongrel.8010.pid -c /home/user/rails/current"






    stop program  = "/usr/local/bin/ruby /usr/local/bin/mongrel_rails stop
-P /home/user/current/log/mongrel.8010.pid"
Till now, I have been starting the images manually by 
/seaside$ squeakvm  -nodisplay seasidedemo "" port 9090 &

and to kill it, i use $ pkill squeakvm    or $ kill [PID of SqueakVM]

I suppose, we will also have to change the following code

if totalmem is greater than 60.0 MB for 5 cycles then restart








When an image is running on my server (Pentium Dual Core 2.8 GHz with 1 GB
RAM), it shows almost 3-4% CPU and 3-4% RAM , should we shift the memory cap
from 60 MB to 100 MB / image ?


Is there any other options we have ? 

Thanks for the help,
 
Rajeev 

Co-founder, AR-CAD.com

http://www.ar-cad.com
+91 9243468076 (Bangalore)
080 65355873 


_______________________________________________
seaside mailing list
seaside at lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside






-- 
Rajeev Lochan

Co-founder, AR-CAD.com

http://www.ar-cad.com
+91 9243468076 (Bangalore)
080 65355873 


_______________________________________________
seaside mailing list
seaside at lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside






-- 
Rajeev Lochan

Co-founder, AR-CAD.com

http://www.ar-cad.com
+91 9243468076 (Bangalore)
080 65355873 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20080209/241521c9/attachment-0001.htm


More information about the seaside mailing list