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
Gimana Settingnya Untuk DEBIAN 8 Mas? Apakah Sama?? Terima Kasih
iya, sama.
untuk centos 7 apakah sama om?
iya bisa
Gmna kalo servernya yang down apakah bisa serverny merestart otomatis lalu di kirim notifikasi melalui email mas? Terimakasih
Halo, Coba cek uptimerobot.com atau pinguzo.com