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