[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