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 chamadohttpd_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
# 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ávelLOAD_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.