0

I am practicing using linux/Ubuntu.

I have installed apache2 on my cloud server (Lightsail). I have also installed Monit to monitor Apache2. The monitoring is working correctly and Monit restarts Apache2 when it's down (I did sudo /etc/init.d/apache2 stop to test it). The IP (in browser) went unavailable and then came back online.

The issue I am facing is that when Monit restarts apache the sudo /etc/init.d/apache2 status shows the service as down, but apache is running (IP checked on browser).

ubuntu@webserver:~$ sudo /etc/init.d/apache2 status
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: inactive (dead) since Thu 2017-04-27 22:21:17 UTC; 2min 51s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 22026 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 20709 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
  Process: 21958 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 125ms


Apr 27 22:17:25 webserver systemd[1]: Starting LSB: Apache2 web server...
Apr 27 22:17:25 webserver apache2[21958]:  * Starting Apache httpd web server apache2
Apr 27 22:17:26 webserver apache2[21958]:  *
Apr 27 22:17:26 webserver systemd[1]: Started LSB: Apache2 web server.
Apr 27 22:21:17 webserver systemd[1]: Stopping LSB: Apache2 web server...
Apr 27 22:21:17 webserver apache2[22026]:  * Stopping Apache httpd web server apache2
Apr 27 22:21:17 webserver apache2[22026]:  *
Apr 27 22:21:17 webserver systemd[1]: Stopped LSB: Apache2 web server.

This is what sudo vim /etc/monit/monitrc has:

check process apache2 with pidfile /run/apache2/apache2.pid
    start program = "/etc/init.d/apache2 restart" with timeout 15 seconds
    stop program  = "/etc/init.d/apache2 stop"

How do I make sure that Apache2 is restarted correctly so that sudo /etc/init.d/apache2 status shows the correct status?

Edit 1: My /etc/monit/monitrc looks like this:

  set daemon 60
  set logfile /var/log/monit.log
  set idfile /var/lib/monit/id
  set statefile /var/lib/monit/state
set mailserver localhost
  set eventqueue
      basedir /var/lib/monit/events
      slots 100

set alert first-email@gmail.com
set alert second-email@domain-name.com

set httpd port 2812 and
    use address localhost
    allow localhost
    allow admin:monit

check process apache2 with pidfile /run/apache2/apache2.pid
    start program = "/etc/init.d/apache2 start" with timeout 60 seconds
    stop program  = "/etc/init.d/apache2 stop"

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
    start program = "/etc/init.d/mysql start" with timeout 60 seconds
    stop program = "/etc/init.d/mysql stop"

1 Answer 1

1

Changing the monit code to the following fixed the issue:

check process apache2 with pidfile /run/apache2/apache2.pid
    start program = "/bin/systemctl start apache2.service" with timeout 15 seconds
    stop program  = "/bin/systemctl stop apache2.service"
    restart program = "/bin/systemctl restart apache2.service"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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