and I get the original result with start program = "/etc/init.d/httpd restart"
[BST Sep 11 16:43:29] debug : monit: pidfile '/var/run/httpd.pid' does not exist [BST Sep 11 16:43:29] error : 'apache' process is not running [BST Sep 11 16:43:29] info : 'apache' trying to restart [BST Sep 11 16:43:29] debug : monit: pidfile '/var/run/httpd.pid' does not exist [BST Sep 11 16:43:29] debug : monit: pidfile '/var/run/httpd.pid' does not exist [BST Sep 11 16:43:29] info : 'apache' start: /etc/init.d/httpd [BST Sep 11 16:43:29] debug : monit: pidfile '/var/run/httpd.pid' does not exist [BST Sep 11 16:43:29] debug : monit: pidfile '/var/run/httpd.pid' does not exist [BST Sep 11 16:44:19] error : 'apache' failed to start Nick Upson On 11 September 2012 16:42, Nick Upson <[email protected]> wrote: > The problem appears to be that, according to the log monit does a > 'restart' but then does a 'start' as well > > Nick Upson > > > > > On 11 September 2012 16:28, Martin Pala <[email protected]> wrote: > >> Yes, if the pidfile is removed and Monit is set to use the pidfile, then >> it will try to restart the service as it's driven by the pidfile content >> and check it every cycle. Because the pidfile is missing, the "restart" >> action is reduced to plain "start" - if the apache start script doesn't >> create the missing pidfile in this case, then Monit thinks that the service >> is not running (as it has no key to the process' PID). >> >> => if the start of apache via Monit works (i.e. no environment problem), >> but apache start script just doesn't recreate the pidfile, then you can >> try replace the start action with restart to make sure that the apache >> script will create the pidfile: >> --8<-- >> check process apache with pidfile /var/run/httpd.pid >> start program = "/etc/init.d/httpd restart" >> stop program = "/etc/init.d/httpd stop" >> --8<-- >> >> Regards, >> Martin >> >> >> On Sep 11, 2012, at 5:15 PM, Nick Upson <[email protected]> wrote: >> >> The issue is not the environment, its the existance of the pid file (or >> not). I can recreate the problem by taking a monit system that has already >> started apache (proving its not the environment) and remove the pid file, I >> then get the same output as shown below, repeated every cycle, with no exit >> to the state. >> >> >> Nick Upson >> >> >> >> On 11 September 2012 15:55, Martin Pala <[email protected]> wrote: >> >>> Hi, >>> >>> the debug message about the non-existing pidfilewithin the same second >>> can be ignored - it's logged only in the debug mode by the method >>> Util_isProcessRunning() (the debug messages repetition is fixed in newer >>> Monit versions). When you filter out the debug messages, the event-action >>> sequence is showed: >>> >>> [BST Sep 5 18:55:07] error : 'apache' process is not running >>> [BST Sep 5 18:55:07] info : 'apache' trying to restart >>> [BST Sep 5 18:55:07] info : 'apache' start: /etc/init.d/httpd >>> [BST Sep 5 18:55:37] error : 'apache' failed to start >>> >>> => Monit detected that apache is not running at 18:55:07, it tried to >>> restart it, but apache didn't start within 30 seconds. >>> >>> The reason why apache didn't start via Monit is most probably its >>> dependence on some environment variable. Monit purges the environment for >>> security reasons when executing the program, so you get >>> only: PATH=/bin:/usr/bin:/sbin:/usr/sbin + MONIT_ variables. Sometimes >>> linux distributions use special file (such as /etc/apache2/envvars on >>> Debian) where you can set environment variables which are required for >>> Apache. >>> >>> You can wrap the start program in shell - it'll load the environment you >>> need: >>> >>> --8<-- >>> start program = "/bin/bash -c '/etc/init.d/httpd start'" >>> --8<-- >>> >>> Regards, >>> Martin >>> >>> >>> >>> On Sep 10, 2012, at 2:51 PM, Nick Upson <[email protected]> wrote: >>> >>> I think that my theory may hold water, from /etc/init.d/httpd >>> >>> # When stopping httpd a delay of >10 second is required before >>> SIGKILLing the >>> # httpd parent; this gives enough time for the httpd parent to SIGKILL >>> any >>> # errant children. >>> stop() { >>> echo -n $"Stopping $prog: " >>> killproc -p ${pidfile} -d 10 $httpd >>> RETVAL=$? >>> echo >>> [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} >>> } >>> >>> Nick Upson >>> >>> >>> >>> On 10 September 2012 12:56, Nick Upson <[email protected]> wrote: >>> >>>> I've just found a server where monit has been attempting to restart >>>> httpd for several days. >>>> >>>> the monit config entry is: >>>> >>>> check process apache with pidfile /var/run/httpd.pid >>>> start program = "/etc/init.d/httpd start" >>>> stop program = "/etc/init.d/httpd stop" >>>> >>>> output in the monit.log is: >>>> >>>> [BST Sep 5 18:55:07] debug : monit: pidfile '/var/run/httpd.pid' >>>> does not exist >>>> [BST Sep 5 18:55:07] error : 'apache' process is not running >>>> [BST Sep 5 18:55:07] info : 'apache' trying to restart >>>> [BST Sep 5 18:55:07] debug : monit: pidfile '/var/run/httpd.pid' >>>> does not exist >>>> [BST Sep 5 18:55:07] debug : monit: pidfile '/var/run/httpd.pid' >>>> does not exist >>>> [BST Sep 5 18:55:07] info : 'apache' start: /etc/init.d/httpd >>>> [BST Sep 5 18:55:07] debug : monit: pidfile '/var/run/httpd.pid' >>>> does not exist >>>> [BST Sep 5 18:55:07] debug : monit: pidfile '/var/run/httpd.pid' >>>> does not exist >>>> [BST Sep 5 18:55:37] error : 'apache' failed to start >>>> >>>> I think what is happening is that the restart and the start execution >>>> are over-lapping such that the removal of the pid file >>>> by the restart happens after the separate start. Why a restart is being >>>> attempted I do not understand. >>>> >>>> This was corrected on the server by doing a manual kill of the httpd >>>> processes >>>> >>>> >>>> and, BTW, reporting that the pid file does not exist as part of >>>> starting a process is, at best, redundant >>>> and at worse, confusing >>>> >>>> >>>> >>>> Nick Upson >>>> >>>> >>> -- >>> To unsubscribe: >>> https://lists.nongnu.org/mailman/listinfo/monit-general >>> >>> >>> >>> -- >>> To unsubscribe: >>> https://lists.nongnu.org/mailman/listinfo/monit-general >>> >> >> -- >> To unsubscribe: >> https://lists.nongnu.org/mailman/listinfo/monit-general >> >> >> >> -- >> To unsubscribe: >> https://lists.nongnu.org/mailman/listinfo/monit-general >> > >
-- To unsubscribe: https://lists.nongnu.org/mailman/listinfo/monit-general
