Otomatis restart service Nginx, Apache dan MySQL Jika down

Membuat script yang bisa memonitor service Nginx atau Apache dan MySQL. Ketika salah satu service tersebut down maka script akan otomatis me-restart service tersebut agar bisa ON kembali tanpa harus melakukan secara manual.

Script ini saya ambil dari sierracircle, MIT License. Cara kerja script ini adalah

  • Memeriksa service Nginx/Apache, php-fpm dan MySQL atau lainnya, bisa diatur
  • Jika service tidak aktif, maka akan dicoba start kembali dan mengirimkan notifikasi ke email
  • Jika gagal me-restart, maka akan mengirimkan email pemberitahuan, kemudian exit

1. Buat file start_service.sh

nano start_service.sh

Isinya seperti berikut, (ganti nama servicenya nginx atau apache, juga emailnya)

#!/bin/bash

##Path, OK untuk Ubuntu 14.04 and 16.04, update 18.x
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

##set email Anda
EMAIL="[email protected]"

##daftar service yang ingin dicek, sebagai contoh nginx bisa diganti apache, php-fpm atau yang lain
SERVICES=( 'nginx' 'mysql' )


for i in "${SERVICES[@]}"
do
##Cek service
`pgrep $i >/dev/null 2>&1`
STATS=$(echo $?)

##Jika service tidak aktif
if [[  $STATS == 1  ]]

then
   ##restart service
   service $i start

   ##cek restart berhasil atau gagal
   `pgrep $i >/dev/null 2>&1`
   RESTART=$(echo $?)

if [[  $RESTART == 0  ]]
##Jika restart berhasil
then

   ##hapus file di dalam /tmp jika ada
   if [ -f "/tmp/$i" ]; 
   then
      rm /tmp/$i
   fi

   ##kirim email
   MESSAGE="$i tidak aktif, tapi sudah berhasil diatasi (restart). Terjadi pada $(hostname) $(date)  "
   SUBJECT="$i tidak aktif telah berhasil direstart pada $(hostname) $(date) "
   echo $MESSAGE | mail -s "$SUBJECT" "$EMAIL"

   else
      ##Jika gagal restart

    ##cek jika ada ile di /tmp
    if [ ! -f "/tmp/$i" ]; then

     ##membuat file di /tmp (log)
     touch /tmp/$i

     ##kirim email berita buruk
     MESSAGE="$i saat ini down pada $(hostname)  at $(date)  "
     SUBJECT=" $i  down pada $(hostname) $(date) "
     echo $MESSAGE  " Script mencoba auto restart, tapi tidak berhasil, ini buruk, segera cek dan perbaiki"  | mail -s "$SUBJECT" "$EMAIL"
    fi
  fi
 fi

  done
exit 0;

2. CHMOD

chmod agar dapat dieksekusi

chmod +x start_service.sh

3. Install cron job

*/1 * * * * /root/start_service.sh

6 thoughts on “Otomatis restart service Nginx, Apache dan MySQL Jika down

  1. adri yanto

    Gimana Settingnya Untuk DEBIAN 8 Mas? Apakah Sama?? Terima Kasih

    1. Omar

      iya, sama.

  2. Don Patria

    untuk centos 7 apakah sama om?

    1. Omar

      iya bisa

  3. Rizki

    Gmna kalo servernya yang down apakah bisa serverny merestart otomatis lalu di kirim notifikasi melalui email mas? Terimakasih

    1. Omar

      Halo, Coba cek uptimerobot.com atau pinguzo.com

Add a comment