Wyszukiwanie w witrynie

Skrypt powłoki wysyłający powiadomienie e-mail w przypadku niskiego poziomu pamięci


Potężną cechą programów powłoki w systemie Unix/Linux, takich jak bash, jest ich niesamowita obsługa popularnych konstrukcji programistycznych, które umożliwiają podejmowanie decyzji, wielokrotne wykonywanie poleceń, tworzenie nowych funkcji i wiele więcej. Możesz pisać polecenia w pliku zwanym skryptem powłoki i wykonywać je zbiorczo.

Zapewnia to niezawodny i skuteczny sposób administrowania systemem. Możesz pisać skrypty automatyzujące zadania, na przykład codzienne kopie zapasowe, aktualizacje systemu itp.; twórz nowe niestandardowe polecenia/narzędzia/narzędzia i nie tylko. Możesz pisać skrypty, które pomogą Ci nadążać za tym, co dzieje się na serwerze.

Jednym z kluczowych elementów serwera jest pamięć (RAM), która ma ogromny wpływ na ogólną wydajność systemu.

W tym artykule udostępnimy mały, ale przydatny skrypt powłoki, który pozwoli wysłać wiadomość e-mail z ostrzeżeniem do jednego lub większej liczby administratorów systemu, jeśli kończy się pamięć serwera.

Ten skrypt jest szczególnie przydatny do monitorowania Linux VPS (wirtualnych serwerów prywatnych) z małą ilością pamięci, powiedzmy około 1 GB ( około 990 MB).

Konfiguracja środowiska testowego

  1. Serwer produkcyjny CentOS/RHEL 7 z zainstalowanym narzędziem mailx i działającym serwerem pocztowym Postfix.

Tak działa skrypt alertmemory.sh: najpierw sprawdza ilość wolnej pamięci, a następnie określa, czy ilość wolnej pamięci jest mniejsza lub równa podanemu rozmiarowi (100 MB na potrzeby tego przewodnika), używany jako punkt odniesienia dla najmniejszego akceptowalnego rozmiaru wolnej pamięci.

Jeśli ten warunek jest spełniony, wygeneruje listę 10 procesów najczęściej zużywających pamięć RAM serwera i wyśle wiadomość e-mail z alertem na określone adresy e-mail.

Uwaga: będziesz musiał wprowadzić kilka zmian w skrypcie (szczególnie w narzędziu nadawcy poczty, użyj odpowiednich flag), aby spełnić wymagania dystrybucji Linuksa.


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

Po utworzeniu skryptu /etc/scripts/alertmemory.sh nadaj mu charakter wykonywalny i dołącz symbolicznie do cron.hourly.


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

Oznacza to, że powyższy skrypt będzie uruchamiany co 1 godzinę, o ile serwer będzie uruchomiony.

Wskazówka: możesz sprawdzić, czy działa zgodnie z oczekiwaniami, ustawić nieco wyższą wartość wzorcową, aby łatwo zainicjować wysłanie wiadomości e-mail, i określić mały odstęp czasu około 5 minut.

Następnie kontynuuj sprawdzanie z wiersza poleceń, korzystając z bezpłatnego polecenia dostarczonego w skrypcie. Po potwierdzeniu, że działa, zdefiniuj rzeczywiste wartości, których chcesz użyć.

Poniżej znajduje się zrzut ekranu przedstawiający przykładową wiadomość e-mail z alertem.

To wszystko! W tym artykule wyjaśniliśmy, jak używać skryptu powłoki do wysyłania wiadomości e-mail z alertami do administratorów systemu w przypadku niskiego poziomu pamięci serwera (RAM). Możesz podzielić się z nami swoimi przemyśleniami na ten temat, korzystając z poniższego formularza opinii.