#!/bin/bash
#
# Script to notify admin user if Linux,FreeBSD load crossed certain limit
# It will send an email notification to admin.
# This is free script under GNU GPL version 2.0 or above.
# Support/FeedBack/comment : http://cyberciti.biz/fb/
# Tested os:
# * RedHat Linux
# * Debain Linux
# * FreeBSD
# Set up limit below
NOTIFY="6.0"
# admin user email id
EMAIL="root"
# Subject for email
SUBJECT="Alert $(hostname) load average"
# Os Specifc tweaks do not change anything below ;)
OS="$(uname)"
TRUE="1"
if [ "$OS" == "FreeBSD" ]; then
TEMPFILE="$(mktemp /tmp/$(basename $0).tmp.XXX)"
FTEXT='load averages:'
elif [ "$OS" == "Linux" ]; then
TEMPFILE="$(mktemp)"
FTEXT='load average:'
fi
# mail message
# keep it short coz we may send it to page or as an short message (SMS)
echo "Load average Crossed allowed limit $NOTIFY." >> $TEMPFILE
echo "Hostname: $(hostname)" >> $TEMPFILE
echo "Local Date & Time : $(date)" >> $TEMPFILE
# Look if it crossed limit
# compare it with last 15 min load average
RESULT=$(echo "$F15M > $NOTIFY" | bc)
# if so send an email
if [ "$RESULT" == "$TRUE" ]; then
mail -s "$SUBJECT" "$EMAIL" < $TEMPFILE
fi
Comanda uptime, care intradevar da "incarcarea sistemului" ofera de fapt, prin cele 3 numere afisate ca medie in ultimele 5, 10 si 15 minute, numarul de procese care stau in coada de procesare (o explicatie foarte simplista ce-i drept). Pentru orice server care ofera servicii publice acest numar nu trebuie sa treaca de 2 (sa zicem cu indulgenta 3). Daca deja sistemul este suprasolicitat si deci in coada de procesare stau mai mult de 2-3 procese, mail-ul trimis ca sa anunte acest lucru va veni cu ceva intarziere sau deloc. Din acest motiv (si altele) monitorizarea unor servere / sisteme / servicii se face pe masini dedicate care nu ofera servicii externe (singura aparare cu adevarat eficienta la DoS sau DDoS) si care au solutii de fail-over software si hardware. Haideti sa facem o sectiune de discutii mai advanced cu exemple concrete si cu solutii enterprise testate si lucrate.