Shell skripts, lai nosūtītu brīdinājumu e-pastā, kad atmiņa kļūst zema


Spēcīgs Unix/Linux čaulas programmu, piemēram, bash, aspekts ir viņu apbrīnojamais atbalsts kopīgiem programmēšanas komponentiem, kas ļauj pieņemt lēmumus, atkārtoti izpildīt komandas, izveidot jaunas funkcijas un vēl daudz vairāk. Jūs varat rakstīt komandas failā, kas pazīstams kā čaulas skripts, un izpildīt tās kolektīvi.

Tas piedāvā uzticamus un efektīvus sistēmas administrēšanas līdzekļus. Varat rakstīt skriptus, lai automatizētu uzdevumus, piemēram, ikdienas dublējumus, sistēmas atjauninājumus utt. izveidot jaunas pielāgotas komandas/utilītas/rīkus un ne tikai. Varat rakstīt skriptus, kas palīdzēs jums sekot līdzi serverī notiekošajam.

Viena no servera kritiskajām sastāvdaļām ir atmiņa (RAM), tā lielā mērā ietekmē sistēmas vispārējo veiktspēju.

Šajā rakstā mēs dalīsimies ar nelielu, bet noderīgu čaulas skriptu, lai brīdinājuma e-pastu nosūtītu vienam vai vairākiem sistēmas administratoriem, ja servera atmiņa ir maz.

Šis skripts ir īpaši noderīgs, lai sekotu Linux VPS (virtuālajiem privātajiem serveriem) ar nelielu atmiņas apjomu, teiksim, apmēram 1 GB (aptuveni 990 MB).

  1. CentOS/RHEL 7 ražošanas serveris ar mailx utilītu, kas instalēta ar strādājošu postfix pasta serveri.

Šādi darbojas skripts alertmemory.sh: vispirms tas pārbauda brīvās atmiņas lielumu, pēc tam nosaka, vai brīvās atmiņas apjoms ir mazāks vai vienāds ar norādīto izmēru (šīs rokasgrāmatas vajadzībām 100 MB), ko izmanto kā atskaites punktu vismazāk pieņemamais brīvās atmiņas lielums.

Ja šis nosacījums ir patiess, tas ģenerēs sarakstu ar top 10 procesiem, kas patērē servera RAM, un nosūta brīdinājuma e-pastu uz norādītajām e-pasta adresēm.

Piezīme. Lai izpildītu Linux izplatīšanas prasības, jums būs jāveic dažas izmaiņas skriptā (jo īpaši pasta sūtītāja utilītā, izmantojiet atbilstošos karodziņus).

#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :[email 
#License       : GNU GPL-3	
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="[email "
## sending mail to
to="[email "
## send carbon copy to
also_to="[email "

## get total free memory size in megabytes(MB) 
free=$(free -mt | grep Total | awk '{print $4}')

## check if free memory is less or equals to  100MB
if [[ "$free" -le 100  ]]; then
        ## get top processes consuming system memory and save to temporary file 
        ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt

        file=/tmp/top_proccesses_consuming_memory.txt
        ## send email if system memory is running low
        echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi

exit 0

Pēc skripta /etc/scripts/alertmemory.sh izveides padariet to izpildāmu un saitiet ar vietni cron.hourly.

# chmod +x /etc/scripts/alertmemory.sh
# ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

Tas nozīmē, ka iepriekš minētais skripts tiks palaists ik pēc 1 stundas, kamēr darbojas serveris.

Padoms. Varat pārbaudīt, vai tas darbojas, kā paredzēts, iestatīt etalona vērtību nedaudz augstu, lai viegli aktivizētu nosūtāmo e-pastu, un norādiet nelielu aptuveni 5 minūšu intervālu.

Pēc tam turpiniet pārbaudīt no komandrindas, izmantojot skriptā paredzēto bezmaksas komandu. Kad esat apstiprinājis, ka tas darbojas, definējiet faktiskās vērtības, kuras vēlaties izmantot.

Zemāk ir ekrānuzņēmums, kurā parādīts brīdinājuma e-pasta paraugs.

Tas ir viss! Šajā rakstā mēs paskaidrojām, kā izmantot čaulas skriptu, lai nosūtītu brīdinājuma e-pastus sistēmas administratoriem, ja servera atmiņa (RAM) ir maz. Izmantojot tālāk sniegto atsauksmju veidlapu, varat kopīgot domas par šo tēmu.