Pesquisa de site

Um script de shell para enviar alerta por e-mail quando a memória estiver baixa


Um aspecto poderoso dos programas shell Unix/Linux, como o bash, é seu incrível suporte para construções de programação comuns que permitem tomar decisões, executar comandos repetidamente, criar novas funções e muito mais. Você pode escrever comandos em um arquivo conhecido como shell script e executá-los coletivamente.

Isso oferece um meio confiável e eficaz de administração do sistema. Você pode escrever scripts para automatizar tarefas, por exemplo, backups diários, atualizações de sistema, etc; crie novos comandos/utilitários/ferramentas personalizados e muito mais. Você pode escrever scripts para ajudá-lo a acompanhar o que está acontecendo em um servidor.

Um dos componentes críticos de um servidor é a memória (RAM), que tem um grande impacto no desempenho geral de um sistema.

Neste artigo, compartilharemos um script de shell pequeno, mas útil, para enviar um e-mail de alerta a um ou mais administradores de sistema, se a memória do servidor estiver acabando.

Este script é particularmente útil para ficar de olho em Linux VPS (servidores virtuais privados) com pequena quantidade de memória, digamos cerca de 1GB ( aproximadamente 990 MB).

Testando a configuração do ambiente

  1. Um servidor de produção CentOS/RHEL 7 com utilitário mailx instalado com servidor de correio postfix funcional.

É assim que o script alertmemory.sh funciona: primeiro ele verifica o tamanho da memória livre e depois determina se a quantidade de memória livre é menor ou igual a um tamanho especificado (100 MB para os fins deste guia), usado como referência para o tamanho de memória livre menos aceitável.

Se esta condição for verdadeira, ele gerará uma lista dos 10 principais processos que consomem RAM do servidor e enviará um email de alerta para endereços de email especificados.

Nota: Você terá que fazer algumas alterações no script (especialmente no utilitário de envio de e-mail, use os sinalizadores apropriados) para atender aos requisitos de sua distribuição 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

Depois de criar seu script /etc/scripts/alertmemory.sh, torne-o executável e crie um link simbólico para cron.hourly.


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

Isso significa que o script acima será executado a cada 1 hora enquanto o servidor estiver em execução.

Dica: você pode testar se está funcionando conforme o esperado, definir o valor do benchmark um pouco alto para acionar facilmente o envio de um e-mail e especificar um pequeno intervalo de cerca de 5 minutos.

Em seguida, continue verificando na linha de comando usando o comando gratuito fornecido no script. Depois de confirmar que está funcionando, defina os valores reais que gostaria de usar.

Abaixo está uma captura de tela mostrando um exemplo de e-mail de alerta.

Isso é tudo! Neste artigo, explicamos como usar o shell script para enviar e-mails de alerta aos administradores do sistema caso a memória do servidor (RAM) esteja acabando. Você pode compartilhar conosco quaisquer idéias relacionadas a este tópico por meio do formulário de feedback abaixo.