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
Understanding System auditing with auditd
Viewed 11779 times since Fri, Apr 5, 2019
systemd Auto-restart a crashed service in systemd
Viewed 4232 times since Fri, Jan 17, 2020
How To Add Swap Space on Ubuntu 16.04
Viewed 3143 times since Fri, Jun 8, 2018
How to schedule crontab in Unix Operating Systems
Viewed 2650 times since Fri, Jun 8, 2018
Creating SWAP partition using FDISK & FALLOCATE commands
Viewed 7257 times since Thu, Jan 16, 2020
RHEL: Getting/Setting hardware clock’s time
Viewed 4179 times since Sat, Jun 2, 2018
Linux RedHat How To Create An RPM Package
Viewed 4128 times since Sun, Jan 9, 2022
Linux - How to get CPU information
Viewed 2850 times since Fri, Jun 8, 2018
Top 4 Reasons for Node Reboot or Node Eviction in Real Application Cluster (RAC) Environment
Viewed 107844 times since Thu, Jun 21, 2018
RHEL: Display swap/RAM size
Viewed 4178 times since Sat, Jun 2, 2018