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

Reply via email to