Como configurar um Script de monitoramento de Carga do Servidor (CPU LOAD)

Jefferson A. Voigt
Atualizado em 15/01/2020
Este tutorial mostra como criar um script simples em Bash para monitorar a carga do servidor e reiniciar o serviço Apache (httpd) caso o uso da CPU esteja muito alto.

1. Criar o script de monitoramento

No seu servidor, acesse via SSH com usuário root ou com permissões sudo e crie um arquivo chamado httpd_monitor.sh dentro do diretório /root com o seguinte conteúdo:

#!/bin/bash

# Limite de CPU load
LOAD_LIMIT=10.0

# Caminho para o log
LOG_FILE="/var/log/httpd_monitor.log"

# E-mail de notificação
EMAIL="seuemail@seudominio.com"

# Coleta o load médio de 1 minuto (primeiro valor de uptime)
CURRENT_LOAD=$(uptime | awk -F'load average: ' '{ print $2 }' | cut -d, -f1)

# Converte os valores para comparação com bc
LOAD_OK=$(echo "$CURRENT_LOAD >= $LOAD_LIMIT" | bc)

# Se load for maior ou igual ao limite, reinicia o httpd
if [ "$LOAD_OK" -eq 1 ]; then
systemctl restart httpd
MSG="$(date '+%Y-%m-%d %H:%M:%S') - Load: $CURRENT_LOAD - httpd reiniciado"
echo "$MSG" >> "$LOG_FILE"

# Envia notificação
echo -e "$MSG\n\nServidor: $(hostname)" | mail -s "ALERTA: httpd reiniciado por alta carga ($CURRENT_LOAD)" "$EMAIL"
fi

Salve o arquivo.

2. Definir permissão de execução

Para permitir a execução do script, rode o comando:

chmod +x /root/httpd_monitor.sh

3. Configurar o cron para executar o script periodicamente

Edite o crontab para executar o monitor a cada 5 minutos executando este comando via SSH:

crontab -e

Adicione a seguinte linha:

*/5 * * * * /root/httpd_monitor.sh

Salve e feche o arquivo digitando :wq.

4. Verificar o funcionamento

O script vai monitorar a carga do servidor a cada 5 minutos. Se a carga estiver acima de 10.0, o serviço httpd será reiniciado automaticamente e a ação registrada no arquivo de log /var/log/httpd_monitor.log.

Importante

Ajuste o valor da variável LOAD_LIMIT no script conforme a capacidade do seu servidor e da variável EMAIL com o seu endereço de e-mail.

Certifique-se que o serviço Apache está instalado e que o comando service httpd restart funciona no seu sistema.

Para distribuições que usam systemd, talvez seja necessário substituir por:

systemctl restart httpd

Se precisar de ajuda, conte com o suporte da DDR Host.
Este artigo foi útil? 0 usuários acharam isso útil