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
20 IPtables Examples For New SysAdmins
Viewed 1116 times since Fri, May 15, 2020
bash mistakes This page is a compilation of common mistakes made by bash users. Each example is flawed in some way.
Viewed 7339 times since Sun, Dec 6, 2020
How to Migrate from RHEL 8 to CentOS 8
Viewed 1063 times since Fri, May 15, 2020
stunnel Howto A Guide to create SSL access to a HTTP-only webserver with stunnel
Viewed 1074 times since Fri, Sep 28, 2018
Linux ssh Hide OpenSSH Version Banner
Viewed 12898 times since Wed, Apr 22, 2020
RHCS: Configure an active/backup pacemaker cluster
Viewed 6041 times since Sun, Jun 3, 2018
How to encrypt a partition with DM-Crypt LUKS on Linux
Viewed 1152 times since Fri, Jul 13, 2018
RHEL7: Create and configure LUKS-encrypted partitions and logical volumes to prompt for password and mount a decrypted file system at boot.
Viewed 4200 times since Mon, Aug 6, 2018
Red Hat ADDING SWAP SPACE
Viewed 1021 times since Fri, Jun 8, 2018
How to automate SSH login with password? ssh autologin
Viewed 1095 times since Fri, Jun 8, 2018