Shell-skripti sähköpostin hälytyksen lähettämiseen, kun muisti loppuu


Tehokas piirre Unix/Linux shell-ohjelmissa, kuten bash, on niiden hämmästyttävä tuki yleisille ohjelmointirakenteille, joiden avulla voit tehdä päätöksiä, suorittaa komentoja toistuvasti, luoda uusia toimintoja ja paljon muuta. Voit kirjoittaa komentoja tiedostoon, joka tunnetaan nimellä shell-skripti, ja suorittaa ne yhdessä.

Tämä tarjoaa sinulle luotettavan ja tehokkaan järjestelmän hallinnan. Voit kirjoittaa komentosarjoja tehtävien automatisoimiseksi, esimerkiksi päivittäiset varmuuskopiot, järjestelmäpäivitykset jne. luoda uusia mukautettuja komentoja/apuohjelmia/työkaluja ja muita. Voit kirjoittaa skriptejä, jotka auttavat sinua pysymään ajan tasalla palvelimen tapahtumista.

Yksi palvelimen kriittisistä osista on muisti (RAM), sillä se vaikuttaa suuresti järjestelmän yleiseen suorituskykyyn.

Tässä artikkelissa jaamme pienen mutta hyödyllisen komentotulkkikomentosarjan hälytyssähköpostin lähettämiseksi yhdelle tai useammalle järjestelmänvalvojalle, jos palvelimen muisti on vähissä.

Tämä komentosarja on erityisen hyödyllinen, kun haluat pitää silmällä Linux VPS:ää (Virtual Private Servers), jossa on vähän muistia, esimerkiksi noin 1 Gt ( noin 990 Mt).

Testausympäristön asetukset

  1. CentOS/RHEL 7 -tuotantopalvelin, jossa on asennettuna mailx-apuohjelma ja toimiva postfix-postipalvelin.

Näin alertmemory.sh-komentosarja toimii: se tarkistaa ensin vapaan muistin koon ja määrittää sitten, onko vapaan muistin määrä pienempi tai yhtä suuri kuin määritetty koko (100 Mt tämän oppaan tarkoituksia varten), käytetään vertailukohtana pienimmän hyväksyttävän vapaan muistin koon osalta.

Jos tämä ehto on totta, se luo luettelon 10 eniten palvelimen RAM-muistia kuluttavasta prosessista ja lähettää hälytyssähköpostin tiettyihin sähköpostiosoitteisiin.

Huomaa: Sinun on tehtävä muutamia muutoksia komentosarjaan (etenkin sähköpostin lähettäjäohjelmaan, käytä asianmukaisia lippuja) täyttääksesi Linux-jakeluvaatimukset.


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

Kun olet luonut skriptin /etc/scripts/alertmemory.sh, tee siitä suoritettava ja lisää linkki osoitteeseen cron.hourly.


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

Tämä tarkoittaa, että yllä oleva komentosarja suoritetaan tunnin välein niin kauan kuin palvelin on käynnissä.

Vinkki: voit testata, toimiiko se suunnitellulla tavalla, asettaa vertailuarvon hieman korkeaksi, jotta sähköpostin lähetys käynnistyy helposti, ja määrittää pienen välin noin 5 minuuttia.

Jatka sitten tarkistamista komentoriviltä käyttämällä skriptin ilmaista komentoa. Kun olet varmistanut, että se toimii, määritä todelliset arvot, joita haluat käyttää.

Alla on kuvakaappaus, jossa näkyy esimerkki varoitussähköpostista.

Siinä kaikki! Tässä artikkelissa selitimme, kuinka komentotulkkikomentosarjaa käytetään hälytyssähköpostien lähettämiseen järjestelmänvalvojille, jos palvelimen muisti (RAM) on vähissä. Voit jakaa tähän aiheeseen liittyviä ajatuksia kanssamme alla olevan palautelomakkeen kautta.