WatchDog watchdog.sh script for checking server running

#!/bin/bash
# Service watchdog script
# Put in crontab to automatially restart services (and optionally email you) if they die for some reason.
# Note: You need to run this as root otherwise you won't be able to restart services.
#
# Example crontab usage:
#
# Strict check for apache2 service every 5 minutes, pipe results to /dev/null
# */5 * * * * sh /root/watchdog.sh apache2 "" > /dev/null
#
# "Loose" check for mysqld every 5 minutes, second parameter is the name of the service
# to restart, in case the application and service names differ. Also emails a report to admin@domain.com
# about the restart.
# */5 * * * * sh /root/watchdog.sh mysqld mysql admin@domain.com > /dev/null
 
# Common daemon names:
# Apache:
# apache2 - Debian/Ubuntu
# httpd - RHEL/CentOS/Fedora
# ---
# MySQL:
# mysql - Debian/Ubuntu
# mysqld - RHEL/CentOS/Fedora
# ---
# Service name
DATE=`date +%Y-%m-%d--%H-%M-%S`
SERVICE_NAME="$1"
SERVICE_RESTARTNAME="$2"
EXTRA_PGREP_PARAMS="-x" #Extra parameters to pgrep, for example -x is good to do exact matching
MAIL_TO="$3" #Email to send restart notifications to
 
#path to pgrep command, for example /usr/bin/pgrep
PGREP="pgrep"
 
#Check if we have have a second param
if [ -z $SERVICE_RESTARTNAME ]
then
RESTART="/sbin/service ${SERVICE_NAME} restart" #No second param
else
RESTART="/sbin/service ${SERVICE_RESTARTNAME} restart" #Second param
fi
 
pids=`$PGREP ${EXTRA_PGREP_PARAMS} ${SERVICE_NAME}`
 
#if we get no pids, service is not running
if [ "$pids" == "" ]
then
$RESTART
if [ -z $MAIL_TO ]
then
echo "$DATE : ${SERVICE_NAME} restarted - no email report configured."
else
echo "$DATE : Performing restart of ${SERVICE_NAME}" | mail -s "Service failure: ${SERVICE_NAME}" ${MAIL_TO}
fi
else
echo "$DATE : Service ${SERVICE_NAME} is still working!"
fi
 
# copylefted from https://gist.github.com/vodolaz095/5073080
 
 
#!/bin/bash
mailto="mymail@mydomain"
 
/bin/bash /root/watchdog.sh mysqld mysqld "$mailto"
/bin/bash /root/watchdog.sh httpd httpd "$mailto"
/bin/bash /root/watchdog.sh pound pound "$mailto"
/bin/bash /root/watchdog.sh redis-server redis "$mailto"
/bin/bash /root/watchdog.sh memcached memcached "$mailto"

/bin/bash /root/watchdog.sh searchd searchd "$mailto"

0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
Do you Know These 5 Use of V$session View ?
Viewed 52146 times since Thu, Jun 21, 2018
chrt command: Set / Manipulate Real Time Attributes of a Linux Process
Viewed 9784 times since Mon, Feb 17, 2020
How to configure an SSH proxy server with Squid
Viewed 1668 times since Sun, Dec 6, 2020
Open SSL Encrypt & Decrypt Files With Password Using OpenSSL
Viewed 4209 times since Mon, Feb 18, 2019
How To Ping Specific Port Number
Viewed 2204 times since Mon, Jun 1, 2020
Logrotate Example for Custom Logs
Viewed 1683 times since Sun, Jan 12, 2020
What Is /dev/shm And Its Practical Usage
Viewed 6592 times since Tue, Mar 12, 2019
How to maximise SSD performance with Linux
Viewed 6699 times since Fri, May 15, 2020
Red Hat Cluster Tutorial
Viewed 1358 times since Sun, Jun 3, 2018
LVM: Mount LVM Partition(s) in Rescue Mode
Viewed 3177 times since Sat, Jun 2, 2018