Tutoriais

Como configurar alertas de uso de CPU, RAM e disco

Como configurar alertas de uso de CPU, RAM e disco

Disco cheio derruba bancos de dados. Memória esgotada encerra processos. CPU travada em 100% deixa tudo lento. Com alertas, você age antes de o problema virar indisponibilidade.

Opção 1: script simples + Telegram

Ideal para quem tem um ou poucos servidores e quer algo leve.

Crie um bot no Telegram

  1. Fale com o @BotFather e crie um bot — anote o token;
  2. Envie uma mensagem para o bot;
  3. Descubra seu chat_id acessando https://api.telegram.org/botTOKEN/getUpdates.

Script de verificação

/usr/local/bin/alerta-recursos.sh:

#!/bin/bash
TOKEN="SEU_TOKEN"
CHAT_ID="SEU_CHAT_ID"
HOST=$(hostname)

LIMITE_DISCO=85
LIMITE_RAM=90
LIMITE_LOAD=$(nproc)

enviar() {
  curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
    -d chat_id="${CHAT_ID}" -d text="⚠️ ${HOST}: $1" > /dev/null
}

# Disco (todas as partições reais)
df -P -x tmpfs -x devtmpfs -x overlay | awk 'NR>1 {gsub("%","",$5); print $5, $6}' | \
while read uso ponto; do
  [ "$uso" -ge "$LIMITE_DISCO" ] && enviar "disco ${ponto} em ${uso}%"
done

# Memória (usa a coluna "available")
USO_RAM=$(free | awk '/Mem:/ {printf "%d", 100 - ($7/$2*100)}')
[ "$USO_RAM" -ge "$LIMITE_RAM" ] && enviar "memória em ${USO_RAM}%"

# Load average de 5 minutos
LOAD=$(awk '{print $2}' /proc/loadavg)
if awk "BEGIN {exit !($LOAD > $LIMITE_LOAD)}"; then
  enviar "load average (5 min) em ${LOAD} (vCPUs: $(nproc))"
fi
sudo chmod 700 /usr/local/bin/alerta-recursos.sh

Agende a cada 5 minutos

*/5 * * * * /usr/local/bin/alerta-recursos.sh

Esse script alerta a cada execução enquanto o problema persistir. Para evitar excesso de mensagens, você pode registrar o último alerta em um arquivo e só reenviar após um intervalo.

Opção 2: Netdata

O Netdata já vem com centenas de alertas pré-configurados (disco enchendo, RAM, load, serviços). Para notificar:

sudo /etc/netdata/edit-config health_alarm_notify.conf

Ative o canal desejado (Telegram, Discord, Slack, e-mail) e informe as credenciais. Os limites podem ser ajustados nos arquivos em health.d/.

Um alerta muito útil do Netdata é a previsão de disco cheio, que avisa com base na velocidade de crescimento.

Opção 3: Prometheus + Grafana Alerting

Se você já usa Prometheus e Grafana, crie regras como:

# Disco acima de 85%
(1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes) * 100 > 85

# Memória disponível abaixo de 10%
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10

# CPU acima de 90% por 10 minutos
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90

No Grafana, configure pontos de contato (Telegram, e-mail, webhook) e defina o período ("for") antes de disparar, evitando alertas por picos momentâneos.

Boas práticas de alertas

  1. Alerte sobre o que exige ação — alertas demais viram ruído e são ignorados;
  2. Use duração mínima: "CPU acima de 90% por 10 minutos", e não em qualquer pico;
  3. Tenha dois níveis: aviso (80%) e crítico (90–95%);
  4. Monitore o monitoramento: um alerta que nunca dispara pode estar quebrado;
  5. Documente a resposta: para cada alerta, o que fazer.

O que fazer quando o alerta chegar

  • Disco: du -sh /var/* | sort -h, limpe logs antigos, caches, backups locais; revise o logrotate;
  • RAM: htop ordenado por memória; ajuste PHP-FPM, buffer pool do banco, número de workers;
  • CPU: identifique o processo; verifique tráfego anormal, bots, consultas lentas ou processos suspeitos.

E se o recurso estiver sempre no limite, é hora de upgrade.

Conclusão

Alertas transformam surpresas em avisos antecipados. Configure os seus em um VPS-NVME-BR da VittHost e, quando precisar crescer, faça upgrade com facilidade.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS