Un script de Shell per enviar una alerta per correu electrònic quan la memòria es fa baixa


Un aspecte potent dels programes d'intèrpret d'ordres Unix/Linux, com ara bash, és el seu sorprenent suport per a construccions de programació comuns que us permeten prendre decisions, executar ordres repetidament, crear noves funcions i molt més. Podeu escriure ordres en un fitxer conegut com a script shell i executar-les col·lectivament.

Això us ofereix un mitjà fiable i eficaç d'administració del sistema. Podeu escriure scripts per automatitzar tasques, per exemple, còpies de seguretat diàries, actualitzacions del sistema, etc.; crear noves ordres/utilitats/eines personalitzades i més enllà. Podeu escriure scripts per ajudar-vos a mantenir-vos al dia amb el que es desenvolupa en un servidor.

Un dels components crítics d'un servidor és la memòria (RAM), té un gran impacte en el rendiment global d'un sistema.

En aquest article, compartirem un script d'intèrpret d'ordres petit però útil per enviar un correu electrònic d'alerta a un o més administradors del sistema, si la memòria del servidor s'esgota.

Aquest script és especialment útil per vigilar els VPS de Linux (servidors privats virtuals) amb una petita quantitat de memòria, per exemple, aproximadament 1 GB (aproximadament 990 MB).

  1. Un servidor de producció CentOS/RHEL 7 amb la utilitat mailx instal·lada amb un servidor de correu postfix que funcioni.

Així és com funciona l'script alertmemory.sh: primer comprova la mida de la memòria lliure i després determina si la quantitat de memòria lliure és menor o igual a una mida especificada (100 MB per als propòsits d'aquesta guia), que s'utilitza com a punt de referència per a la mida de memòria lliure menys acceptable.

Si aquesta condició és certa, generarà una llista dels 10 principals processos que consumeixen RAM del servidor i enviarà un correu electrònic d'alerta a les adreces de correu electrònic especificades.

Nota: Haureu de fer uns quants canvis a l'script (especialment la utilitat del remitent de correu, utilitzeu els senyaladors adequats) per complir els vostres requisits de distribució de Linux.

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

Després de crear el vostre script /etc/scripts/alertmemory.sh, feu-lo executable i enllaceu simbòlicament a cron.hourly.

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

Això vol dir que l'script anterior s'executarà cada 1 hora mentre el servidor estigui en execució.

Consell: podeu provar si funciona segons el previst, establir el valor de referència una mica alt per activar fàcilment un correu electrònic i especificar un petit interval d'uns 5 minuts.

A continuació, continueu comprovant des de la línia d'ordres utilitzant l'ordre gratuït proporcionat a l'script. Un cop confirmeu que funciona, definiu els valors reals que voleu utilitzar.

A continuació es mostra una captura de pantalla que mostra un correu electrònic d'alerta de mostra.

Això és tot! En aquest article, vam explicar com utilitzar l'script de shell per enviar correus electrònics d'alerta als administradors del sistema en cas que la memòria del servidor (RAM) s'esgoti. Podeu compartir qualsevol reflexió relacionada amb aquest tema amb nosaltres mitjançant el formulari de comentaris que trobareu a continuació.