Monit on CentOS causes httpd.pid not to be created

bizna picture bizna · Apr 28, 2011 · Viewed 7.8k times · Source

The solution was to replace this line:

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

With this line:

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

And I also removed the 'group apache'.

Original post:

After installing Monit on CentOS, and setting an alert for the Apache (httpd) service, the service no longer creates the /var/run/httpd.pid file.

The httpd service IS running properly.

On top of it, as if that's not enough, Monit reports the status of the service as: Execution failed

Naturally, the only way to restart such a service is by killing it, since the 'restart' script doesn't see any running process.

These are the contents of the /etc/monit.d/monitrc file:

set daemon  10
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: [email protected] }
set alert [email protected]
set httpd port 2812 and
#     SSL ENABLE
#     PEMFILE  /var/certs/monit.pem
allow user:password

check process apache with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program  = "/etc/init.d/httpd stop"
if cpu is greater than 180% for 1 cycles then alert
if totalmem > 1200 MB for 2 cycles then restart
if children > 250 then restart

check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh for 5 cycles then restart
if 5 restarts within 25 cycles then timeout

Output of "service httpd restart":

Stopping httpd:                                            [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                       [FAILED]

Any help will be greatly appreciated.

Answer

nophone picture nophone · Aug 8, 2011

Try to replace stop program with /usr/sbin/httpd -k stop. It work for me.