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
- 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.