„Shell“ scenarijus, skirtas išsiųsti įspėjimą el. paštu, kai pritrūksta atminties


Galingas Unix/Linux apvalkalo programų, tokių kaip bash, aspektas yra nuostabus įprastų programavimo konstrukcijų palaikymas, leidžiantis priimti sprendimus, pakartotinai vykdyti komandas, kurti naujas funkcijas ir dar daugiau. Galite rašyti komandas į failą, vadinamą apvalkalo scenarijumi, ir vykdyti jas kartu.

Tai suteikia jums patikimą ir veiksmingą sistemos administravimo priemonę. Galite rašyti scenarijus, kad automatizuotų užduotis, pavyzdžiui, kasdieninį atsarginių kopijų kūrimą, sistemos atnaujinimus ir pan.; kurti naujas pasirinktines komandas/paslaugas/įrankius ir ne tik. Galite rašyti scenarijus, kurie padės jums neatsilikti nuo to, kas vyksta serveryje.

Vienas iš svarbiausių serverio komponentų yra atmintis (RAM), kuri daro didelę įtaką bendram sistemos veikimui.

Šiame straipsnyje pasidalinsime nedideliu, bet naudingu apvalkalo scenarijumi, skirtu išsiųsti įspėjimo el. laišką vienam ar keliems sistemos administratoriams, jei senka serverio atmintis.

Šis scenarijus yra ypač naudingas norint stebėti Linux VPS (virtualius privačius serverius) su nedideliu atminties kiekiu, tarkime, apie 1 GB ( maždaug 990 MB).

Bandymo aplinkos sąranka

  1. CentOS/RHEL 7 gamybos serveris su įdiegta mailx paslaugų programa su veikiančiu postfix pašto serveriu.

Taip veikia scenarijus alertmemory.sh: pirmiausia jis patikrina laisvos atminties dydį, tada nustato, ar laisvos atminties kiekis yra mažesnis ar lygus nurodytam dydžiui (100 MB šio vadovo tikslais), naudojamas kaip mažiausio priimtino laisvos atminties dydžio palyginimas.

Jei ši sąlyga yra teisinga, ji sugeneruos 10 populiariausių procesų, naudojančių serverio RAM, sąrašą ir išsiųs įspėjimo el. laišką nurodytais el. pašto adresais.

Pastaba: turėsite atlikti keletą scenarijaus pakeitimų (ypač pašto siuntėjo paslaugų programoje, naudokite atitinkamas vėliavėles), kad atitiktumėte „Linux“ platinimo reikalavimus.


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

Sukūrę scenarijų /etc/scripts/alertmemory.sh, padarykite jį vykdomąjį ir susiekite su nuoroda į cron.hourly.


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

Tai reiškia, kad aukščiau pateiktas scenarijus bus paleistas kas 1 valandą tol, kol veikia serveris.

Patarimas: galite patikrinti, ar jis veikia taip, kaip numatyta, nustatyti šiek tiek aukštą lyginamojo taško reikšmę, kad būtų lengviau išsiųsti el. laišką, ir nurodyti nedidelį intervalą apie 5 minutes.

Tada toliau tikrinkite iš komandinės eilutės naudodami nemokamą komandą, pateiktą scenarijuje. Kai patvirtinsite, kad jis veikia, apibrėžkite tikrąsias reikšmes, kurias norite naudoti.

Žemiau yra ekrano kopija, kurioje rodomas įspėjimo el. pašto pavyzdys.

Tai viskas! Šiame straipsnyje paaiškinome, kaip naudoti apvalkalo scenarijų siunčiant įspėjimo el. laiškus sistemos administratoriams, jei pritrūksta serverio atminties (RAM). Galite pasidalinti su mumis mintimis, susijusiomis su šia tema, naudodami toliau pateiktą atsiliepimų formą.