BLOGS

Servera pieskatīšanas skripts

Ja var ticēt Mērfija likumiem, tad problēmas vienmēr uzrodas brīdī, kad esi ļoti aizņemts. Šis BASH skripts palīdzēs pieskatīt servera noslodzi un brīvo diska vietu, kas dos iespēju novērst problēmas laicīgi. Lai skripts strādātu korekti, uz servera nepieciešams korekti konfigurēts SMTP serveris un GNU Mailutils.

Skripta regulāru palaišanu nodrošinās Cron. Ar komandu "crontab -e" atveram cron pievienojam ierakstu

*/2 * * * * /vieta-kur-stav/skripts.sh >/dev/null 2>&1

Lai skripts tiktu izsaukts reizi divās minūtēs. Ar komandu "chmod +x skripts.sh" iedodam šim skriptam execute tiesības. Norādam epastu, uz kuru sūtīt brīdinājumus, izmainot MAIL rindiņu. PROCENTI="80" norādā, ka paziņojumi par aizņemto diska vietu tiks sūtīti, kad kādā no partīcijām būs aizņemti 80% diska vietas, savukārt rinda LOADAVG="1" norāda, ka paziņojumi par servera noslodzi tiks sūtīti, ja vidējā noslodze pārsniegs 1. Ja serverim ir vairāki procesori vai kodoli, tad LOADAVG būtu uz kodolu/procesoru skaitu. Piemēram, ja ir viens 4 kodolu procesors, tad LOADAVG jamaina uz 4.


#!/bin/bash

MAIL="admin@domain.tld"
PROCENTI="80"
LOADAVG="1"

LOAD=$(cat /proc/loadavg | cut -d " " -f1 | cut -d "." -f1)

df -P | grep -vE '^Filesystem|none|udev|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  PERC=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  PARTITION=$(echo $output | awk '{ print $2 }' )
  if [ $PERC -ge $PROCENTI ]; then
  TEMPFILE=$(mktemp)
  df -hP > $TEMPFILE
  mail -s "Running out of space \"$PARTITION ($PERC%)\" on $(hostname) $(date)" $MAIL < $TEMPFILE
  rm -rf $TEMPFILE
fi
done


if [ $LOAD -ge $LOADAVG ]; then
  TEMPFILE=$(mktemp)
  TOP=$(top -b -n1)
  NETSTAT=$(netstat -anutp)
  PS=$(ps auxfww)
  WHO=$(w)
  echo -e "$TOP\n\n\n\n$PS\n\n\n\n$NETSTAT\n\n\n\n$WHO" > $TEMPFILE
  mail -s "Load average $LOAD on $(hostname) $(date)" $MAIL < $TEMPFILE
  rm -rf $TEMPFILE
fi