Shell skripta za slanje upozorenja e-poštom kada memorija postane niska


Snažan aspekt Unix/Linux shell programa kao što je bash je njihova nevjerovatna podrška za uobičajene programske konstrukcije koje vam omogućavaju da donosite odluke, izvršavate komande uzastopno, kreirate nove funkcije i još mnogo toga. Možete pisati naredbe u datoteku poznatu kao shell skripta i izvoditi ih zajedno.

Ovo vam nudi pouzdan i efikasan način administracije sistema. Možete pisati skripte za automatizaciju zadataka, na primjer dnevne sigurnosne kopije, ažuriranja sistema itd; kreirajte nove prilagođene komande/uslužne programe/alatke i dalje. Možete napisati skripte koje će vam pomoći da budete u toku sa onim što se odvija na serveru.

Jedna od kritičnih komponenti servera je memorija (RAM), koja u velikoj mjeri utiče na ukupne performanse sistema.

U ovom članku ćemo podijeliti malu, ali korisnu shell skriptu za slanje e-pošte s upozorenjem jednom ili više sistemskih administratora, ako je memorija servera ponestala.

Ova skripta je posebno korisna za držanje na oku Linux VPS (Virtualni privatni serveri) sa malom količinom memorije, recimo od oko 1GB ( približno 990 MB).

Postavljanje okruženja za testiranje

  1. Produkcijski server CentOS/RHEL 7 sa mailx uslužnim programom instaliranim sa ispravnim postfix serverom pošte.

Ovako radi skripta alertmemory.sh: prvo provjerava veličinu slobodne memorije, a zatim utvrđuje da li je količina slobodne memorije manja ili jednaka navedenoj veličini (100 MB za potrebe ovog vodiča), koji se koristi kao referentna vrijednost za najmanju prihvatljivu veličinu slobodne memorije.

Ako je ovaj uslov tačan, generirat će listu prvih 10 procesa koji troše RAM servera i šalje e-poštu upozorenja na određene adrese e-pošte.

Napomena: Morat ćete napraviti nekoliko promjena u skripti (posebno uslužni program za pošiljaoca pošte, koristite odgovarajuće zastavice) kako biste ispunili zahtjeve vaših Linux distribucija.


#!/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

Nakon kreiranja skripte /etc/scripts/alertmemory.sh, učinite je izvršnom i simbolizirajte je na cron.hourly.


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

To znači da će se gornja skripta pokrenuti nakon svakih 1 sat sve dok server radi.

Savjet: Možete testirati da li radi kako je predviđeno, podesiti vrijednost referentne vrijednosti malo visoko kako biste lako pokrenuli slanje e-pošte i odredite mali interval od oko 5 minuta.

Zatim nastavite s provjerom iz komandne linije koristeći besplatnu naredbu koja se nalazi u skripti. Kada potvrdite da radi, definirajte stvarne vrijednosti koje želite koristiti.

Ispod je snimak ekrana koji prikazuje primjer e-pošte upozorenja.

To je sve! U ovom članku smo objasnili kako koristiti shell skriptu za slanje e-poruka s upozorenjima sistemskim administratorima u slučaju da je memorija servera (RAM) pri kraju. Možete podijeliti bilo koje misli u vezi sa ovom temom, s nama putem obrasca za povratne informacije ispod.