Otomatis restart service Nginx, Apache dan MySQL Jika down

By | November 21, 2018

Merancang script yang dapat memonitor service Nginx atau Apache dan MySQL. Ketika diantara service tersebut down karenanya script akan otomatis me-restart service tersebut agar dapat ON kembali tanpa mesti menjalankan secara manual.

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

  • Memeriksa service Nginx/Apache, php-fpm dan MySQL atau lainnya, dapat diatur
  • Bila service tak aktif, karenanya akan dicoba start kembali dan mengirimkan notifikasi ke email
  • Bila gagal me-restart, karenanya akan mengirimkan email pemberitahuan, kemudian exit

1. Bikin file start_service.sh

nano start_service.sh

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

#!/bin/bash

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

##set email Kamu
EMAIL=email@idnetter.com

##daftar service yang ingin dicek, selaku contoh nginx dapat 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 $?)

##Bila service tak 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 ]]
##Bila restart berhasil
then

##hapus file di pada /tmp seandainya ada
if [ -f /tmp/$i ];
then
rm /tmp/$i
fi

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

else
##Bila gagal restart

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

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

##kirim email berita buruk
MESSAGE=$i dikala ini down di $(hostname) at $(date)
SUBJECT= $i down di $(hostname) $(date)
echo $MESSAGE Script mencoba auto restart, tapi tak 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


Sumber https://idnetter.com