Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I've just installed and configured monit according to the monit documentation. All services apart from Apache are listed as Running, but Apache says Not Monitored.

The relevant lines in monit's config are:

check process apache with pidfile /var/run/httpd.pid
        group www
        start program = "/etc/init.d/httpd start"
        stop program = "/etc/init.d/httpd stop"
        if failed host localhost port 80
        protocol http then restart
        if 5 restarts within 5 cycles then timeout

I can access http://localhost/server-status and http://localhost fine from the server. Monit lists Monitoring mode for Apache as active.

Server is running CentOS 5.4.

PID file is correct for parent httpd server:

[server ~]$ cat /var/run/httpd.pid
2905
[server ~]$ ps auxc | grep httpd
root      2905  0.0  0.9  26952  4808 ?        Ss   11:36   0:00 httpd
share|improve this question
add comment

2 Answers

up vote 5 down vote accepted

Make sure the contents of the pid file match up with the Apache master process's pid (i.e., the httpd process that runs as root). It's possible the pid file is stale.

If it's stale, get the pid of the Apache master process, and do something like "echo 1234 > /var/run/httpd.pid", where 1234 is the pid in question.

After that, run monit monitor apache to restart monitoring of that service.

share|improve this answer
1  
The PID file was correct, but running monit monitor apache got it started, and now it seems to be working fine after restarting the service. I should also have tried clicking the Enable Monitor button on the web interface. –  dunxd Feb 24 '12 at 22:46
add comment

You don't provide the OS version/distribution, but on CentOS 6, the PID file you should be monitoring is located at: /var/run/httpd/httpd.pid

So change to:

check process apache with pidfile /var/run/httpd/httpd.pid

Incidentally, CentOS 5 has the Apache PID file in: /var/run/httpd.pid

Edit: Also quote the PID path.

There's a note on the Monit mailing list about the protocol test you're using:

http://lists.gnu.org/archive/html/monit-general/2004-12/msg00057.html

You may need to pass a hostname or site name if you're using name-based virtual hosts.

share|improve this answer
    
It's CentOS 5.4. PID file is correct. –  dunxd Feb 23 '12 at 21:56
    
Using your config on a CentOS 5 server, I get Process 'apache' status Does not exist monitoring status monitored –  ewwhite Feb 23 '12 at 22:03
    
Where are you seeing that output? –  dunxd Feb 23 '12 at 22:10
    
You should quote your pidfile path "/var/run/httpd/httpd.pid". Also see the note I placed in the initial answer about a possible need for a VirtualHosts directive. –  ewwhite Feb 23 '12 at 22:13
    
Makes no difference quoted or not. –  dunxd Feb 23 '12 at 22:21
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.