Shell Script to Monitor Load Average on a Linux server

Posted by admin     Category: Scripts

Load Average on a server reflects the current state of the server. Higher the load average, poorer is the server performance hence it is a necessity to monitor the load average on the server. The following shell script monitors the load average on the Linux server and inform the server administrator with the current running processes of the server if the load average is greater than the defined threshold.

Create a file, say, /root/monit_loadaverage.sh and paste the following script in it:

############### START OF THE SCRIPT ###############
#!/bin/bash
# Define Variables
CUR_TIME=`date +"%A %b %e %r"`
HOSTNAME=`hostname`
# Retrieve the load average of the past 1 minute
Load_AVG=`uptime | cut -d'l' -f2 | awk '{print $3}' | cut -d. -f1`
LOAD_CUR=`uptime | cut -d'l' -f2 | awk '{print $3 " " $4 " " $5}' | sed 's/,//'`
# Define Threshold. This value will be compared with the current load average.
# Set the value as per your wish.
LIMIT=5
# Compare the current load average with the Threshold and
# email the server administrator if the current load average is greater.
if [ $Load_AVG -gt $LIMIT ]
then
#Save the current running processes in a file
/bin/ps -auxf >> /root/ps_output
echo "Current Time :: $CUR_TIME" >> /tmp/monitload.txt
echo "Current Load Average :: $LOAD_CUR" >> /tmp/monitload.txt
echo "The list of current processes is attached with the email for your reference." >> /tmp/monitload.txt
echo "Please Check... ASAP."  >> /tmp/monitload.txt
# Send an email to the administrator of the server
/usr/bin/mutt -s "ALERT!!! High 1 minute load average on '$HOSTNAME'" -a /root/ps_output youremail@yourdomain.tld < /tmp/monitload.txt
fi
# Remove the temporary log files
/bin/rm -f /tmp/monitload.txt
/bin/rm -f /root/ps_output
############### END OF THE SCRIPT ###############

Now, schedule a cronjob to execute the script on per minute basis. Edit the cronjob file

# crontab -e

and place the following cronjob at the end of the file

* * * * * /bin/sh /root/monit_loadaverage.sh

restart the crond service

# service crond restart

In order to use “mutt” to send emails, you need to install the mutt package on the server. It allows you to send emails with attachments.

# yum install mutt

Note: Please place a comment if you receive any error message while executing this script OR you need some modifications in the script.

How to auto-start a VPS on a host server/node reboot?

Posted by admin     Category: VPS Management

Sometimes, we need to reboot a host server/node for the new changes to take effect OR if it’s inaccessible. Many a times a VPS don’t auto-start itself once the host node comes online.  The reason is the ONBOOT parameter in the VPS configuration file. The “onboot” parameter decides whether to start the VPS automatically once the host node comes online.

If it’s set to ‘yes’, the VPS will start automatically.
If it’s set to ‘no’, we will have to start the VPS manually.

To make the changes, edit the VPS configuration file

vi /etc/sysconfig/vz-scripts/VEID.conf

search for

ONBOOT=”no”

and change to

ONBOOT=”yes”

This change will auto-start the VPS next time the host node is rebooted.