monit-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Very simple monit of a perl file - how to do it?


From: Bruce B
Subject: Re: Very simple monit of a perl file - how to do it?
Date: Wed, 29 Dec 2010 12:58:12 -0500

Seems that I solved the output problem and so my script is now ready for implementation in Monit. Let's move on to what happens when the server restarts and also what to put in monit.conf and how to test that monit works and re-spawns the program when needed.

Here is what I have in my daemon file:
start() {
        echo -n "Starting HoldReport:  "
        nohup perl /usr/src/holdReport/holdreport.pl & >> /dev/null
        sleep 2
}
stop() {
        echo -n "Stopping HoldReport: "
        kill `cat /var/log/manager.pid`
}

Here is output of "ps aux" for the program:

root     11747  0.9  0.4  16572  9204 pts/1    S    12:55   0:00 perl /usr/src/holdReport/holdreport.pl

Regards,

On Wed, Dec 29, 2010 at 11:03 AM, Bruce B <address@hidden> wrote:
Thanks for the amazing details.

A- I have installed Monit using Yum Repository for CentOS and I can't locate the monitrc file but I have monit.conf and monit.d directory which is empty.

B- Here is the file I created for daemon but when I run the ./xyz.pl start it hangs for ever. I know it's started already because I can see it in "ps aux" but it just hangs there. This was the exact same behavour when I run the file directly from the shell prompt as well. What is the work-around to this?

#!/bin/sh
# description: Starts/stops HoldReport Recording program - Records duration of HOLD to SQL

start() {
        echo -n "Starting HoldReport:  "
        nohup perl /usr/src/holdReport/holdreport.pl >> /dev/null
        sleep 2
}
stop() {
        echo -n "Stopping HoldReport: "
        kill `cat /var/log/manager.pid` 
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: holdreport {start|stop|restart}"
        exit
esac

C- Now that I have a start/stop script what should go in my monit.conf file?

Thanks


On Wed, Dec 29, 2010 at 2:27 AM, EzCom Keith <address@hidden> wrote:
On Tue, Dec 28, 2010 at 9:10 PM, Bruce B <address@hidden> wrote:
Thanks for the feedback. To clarify things:

I have a perl program named "test.pl" which runs fine if I simply run it like this at the shell level:

nohup perl /tmp/test.pl >> /dev/null

Once above line is entered, the program test.pl creates a /var/log/test.pid file which includes the PID of the program running and keeps doing the things I need it to do which is some report recording to SQL. So, I guess as you suggested I can run monit after running the program and have it monitor the PID file however I am not sure at all how to do it. Because all the examples have PROCESS in the first line and I don't think my simple program is a process like HTTP or others. Plus I don't have a START or STOP script for it. I only do "nohup" because I want it it to run if I am closing the terminal window and ">> /dev/null" is so there are no outputs on the screen.

I hope I am a bit more clear and I appreciate if you can give me a sample of what should go in the /etc/monit.conf.

In addition, I would appreciate it if you point me to monit.log (or whatever it's called) and also let me know what happens if the system is restarted? Should I expect Monit to start the program for me automatically?

Thanks,



On Tue, Dec 28, 2010 at 10:19 PM, EzCom Keith <address@hidden> wrote:
On Tue, Dec 28, 2010 at 3:22 PM, Bruce B <address@hidden> wrote:
Anything to this guys?

Thanks,


On Mon, Dec 27, 2010 at 9:57 PM, Bruce B <address@hidden> wrote:
Hi Everyone,

I am very new to monit. I have a perl program (test.pl) which should be running 24/7 and should re-spawn if it goes dead. Of course monit is the right tool for it but I have no clue how to use it.

Here is what I do to start the program each time:

nohup perl /usr/src/test.pl >> /dev/null

The program actually creates a file with PID in it in /var/log/test.pid

I have the following so far in my /etc/monit.conf    ( I am running CentOS) and it doesn't seem to work. 

check process holdreport with pidfile /var/log/test.pid
   start program = "/usr/src/holdReport/startTest.sh"
   if 5 restarts within 5 cycles then timeout

And startTest.sh includes:
nohup perl /usr/src/test.pl >> /dev/null


I would love to receive alerts to my gmail if program shuts down. Please enlighten me on that too.

Thanks,
Bruce



--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general

Sorry Bruce,

Not enough info for me to be much help. When you say "it doesn't seem to work", what does that mean, exactly?
I can assume that if you run sh /usr/src/holdReport/startTest.sh from your shell, the script creates a pid file and
begins to do its job. So what happens when you request Monit to start monitoring? Does it do anything at all?
Can you post the relevant section of your Monit log? Best thing to do is (especially if this is the only process you
are attempting to monitor atm), rm -f your entire monit log. Manually start your perl script, then start monit. Check
the Monit webserver and note anything it says there regarding your script (also note if it does not even exist there).

Shut down Monit, and cat your monit log, copy/paste it to here.

As stated in an earlier thread, I used the 'wrapper' technique, outlined in the Monit FAQ, to successfully monitor
a PHP script that runs 24/7. It was surprisingly easy, and worked as advertised. Review that section, and see if
any of it can help you try a few things.

http://mmonit.com/wiki/Monit/FAQ

Best,
- Keith

--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general


--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general

Ok, lotta questions.. let's get the easy ones outta the way ; D

In your monitrc file, you can specify the monit logfile in this way:

set logfile /var/log/monit.log

Of course, your path and filename can be whatever you wish, but this is what's usual (I run CentOS as well).

Making a start/stop/restart (pretty much daemonizing) is also really simple. If you examine the files in your
/etc/rc.d/init.d directory, those are all generally daemon start stop scripts. Viewing some of the smaller files
will give you a quick tutorial. You can also Google for more information there if anything isn't clear. I would
suggest that you get your script daemonized in this way, and when you have it correct, you should be able
to start your process with:
/etc/rc.d/init.d/test start  (replace 'test' with whatever you used for your daemon file name)

You should then be able to do:
/etc/rc.d/init.d/test status
and the system should tell you 'test' is running, it's stopped. or it appears dead but PID exists.

You should also be able to do 'stop' and 'restart'. All of these commands will be in your daemon file once you
have it setup. Test them all from the prompt, and verify they all behave exactly as expected. If your .pl script
has a bang at the top (ex., #!/usr/bin/perl -qC [or whatever]), you can probably delete the .sh startup script period.

When that is working to your satisfaction, you might be able to figure out the rest of the stuff you'll need for your
monitrc, and if not, post back and we'll get that going.

As for your actual file, I have some questions (off topic to Monit, my apologies). When you say you don't want
output after you've left the terminal, does this script normally have output? If it does, are you aware of the screen
command? It allows you to run a process, detach it, and logout of your shell. You can log back in, and re-attach
to it at will. It will also capture output to a file if you might ever want to look backwards. If your script truly runs
completely blind, then I guess the way you're doing it will work. If you're satisfied that your script is running and
doing exactly as you want in the environment as you have it, then disregard this part... ; )

As far as what happens at system restart, we are getting way ahead of ourselves. Let's get your script running
as a service, and Monit monitoring it, and then move on from there.

Best,
- Keith

--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general



reply via email to

[Prev in Thread] Current Thread [Next in Thread]