Um site fora do ar custa dinheiro. Cada minuto de downtime representa visitantes perdidos, vendas não realizadas e credibilidade abalada. O problema é que, sem monitoramento, você só descobre que o site caiu quando alguém reclama.
Monitorar o servidor WordPress não é um luxo. É uma necessidade. Neste guia, cobrimos tudo: o que monitorar, quais ferramentas usar, como configurar alertas e como criar scripts de monitoramento automatizados.
Leia também: Como Migrar WordPress para VPS e VPS ou Hospedagem Compartilhada para WordPress? .
Por Que Monitorar?
Uptime
Se o site cair às 3 da manhã e você só descobrir às 9, foram 6 horas de downtime. Com monitoramento, você recebe um alerta em 1 minuto e pode agir imediatamente.
Performance
Um servidor pode estar "funcionando" mas com performance degradada. Páginas que levam 8 segundos para carregar estão tecnicamente online, mas para o visitante é como se estivessem fora do ar. Monitoramento identifica degradação antes que se torne um problema visível.
Segurança
Picos incomuns de tráfego, consumo anormal de CPU ou processos estranhos podem indicar um ataque ou infecção por malware. Monitoramento permite detectar ameaças cedo.
Capacidade
Monitorar o uso de recursos ao longo do tempo mostra tendências. Você consegue prever quando vai precisar de mais RAM, mais disco ou um upgrade de servidor.
O Que Monitorar
Recursos do Servidor
| Métrica | O Que Indica | Ideal |
|---|---|---|
| RAM | Memória em uso | Abaixo de 80% |
| Disco | Espaço utilizado | Abaixo de 85% |
| I/O de disco | Velocidade de leitura/escrita | Sem picos constantes |
| Rede | Tráfego de entrada/saída | Sem picos anormais |
Serviços Específicos
| Serviço | O Que Monitorar |
|---|---|
| MySQL/MariaDB | Conexões ativas, queries lentas, uso de memória |
| Nginx | Requisições por segundo, erros 5xx, tempo de resposta |
| SSL | Validade do certificado (dias até expirar) |
WordPress
| Métrica | O Que Indica |
|---|---|
| HTTP Status Code | Se o site está respondendo corretamente (200) |
| Cron Jobs | Se tarefas agendadas estão rodando |
| Erro Logs | Erros PHP, warnings, notices |
Monitoramento de Uptime
UptimeRobot
O UptimeRobot é gratuito para até 50 monitores com verificação a cada 5 minutos.
Configuração:
- Crie uma conta em https://uptimerobot.com
- Clique em Add New Monitor
- Configure:
Monitor Type: HTTP(s) Friendly Name: Meu Site WordPress URL: https://seusite.com.br Monitoring Interval: 5 minutes
- Configure alertas:
Alert Contacts: seu@email.com Alert type: Email + SMS (se disponível)
- Adicione monitores extras:
Monitor 2: https://seusite.com.br/wp-admin/ (verifica se o admin está acessível) Monitor 3: https://seusite.com.br/wp-cron.php (verifica se o cron roda)
BetterUptime
Alternativa mais moderna ao UptimeRobot. O plano gratuito inclui monitoramento a cada 3 minutos, página de status pública e integração com Slack.
Configuração:
- Crie uma conta em https://betteruptime.com
- Adicione seu site como monitor HTTP
- Configure alertas por e-mail, SMS ou integração com Slack/Telegram
- Crie uma página de status pública (opcional)
Netdata: Dashboard de Recursos do Servidor
O Netdata é a melhor ferramenta gratuita para monitorar recursos do servidor em tempo real. Ele coleta dados a cada segundo e exibe dashboards interativos.
Instalação
# Instalar Netdata curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh bash /tmp/netdata-kickstart.sh --stable-channel
Após a instalação, o Netdata roda na porta 19999:
http://SEU_IP:19999
Configurar Acesso Seguro via Nginx
Não exponha o Netdata diretamente. Configure um proxy reverso com autenticação:
# Criar senha para acesso sudo apt install apache2-utils -y sudo htpasswd -c /etc/nginx/.htpasswd admin
# /etc/nginx/sites-available/netdata.conf
server {
listen 443 ssl;
server_name monitor.seusite.com.br;
ssl_certificate /etc/letsencrypt/live/monitor.seusite.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.seusite.com.br/privkey.pem;
auth_basic "Monitoramento";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
sudo ln -s /etc/nginx/sites-available/netdata.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
O Que o Netdata Monitora
- CPU por core (uso, iowait, steal)
- RAM (usada, cache, buffers, swap)
- Disco (IOPS, throughput, latência)
- Rede (bandwidth, pacotes, erros)
- PHP-FPM (processos, requests, latência)
- MySQL (queries, conexões, buffer pool)
- Nginx (connections, requests)
Monitoramento via Linha de Comando
Para verificações rápidas sem dashboard, use estes comandos.
htop: Visão Geral
# Instalar sudo apt install htop -y # Executar htop
O htop mostra em tempo real:
- Barras de CPU por core
- Uso de memória e swap
- Lista de processos ordenada por consumo
- Load average
Comandos Essenciais
# Espaço em disco df -h # Resultado típico: # Filesystem Size Used Avail Use% Mounted on # /dev/sda1 160G 45G 115G 28% / # Memória RAM free -h # Resultado típico: # total used free shared buff/cache available # 8.0Gi 2.1Gi 3.5Gi 120Mi 2.4Gi 5.6Gi # Load average (carga do sistema) uptime # Resultado típico: # 14:32:01 up 45 days, load average: 0.35, 0.42, 0.38 # Os 3 números = média de 1min, 5min, 15min # Ideal: abaixo do número de CPUs # I/O de disco iostat -x 1 5 # Conexões de rede ativas ss -tuln # Processos PHP-FPM ps aux | grep php-fpm | wc -l # Processos MySQL mysqladmin -u root -p processlist
Verificar Uso de Disco por Diretório
# Tamanho total do site
du -sh /var/www/seusite/
# Tamanho da pasta uploads (geralmente a maior)
du -sh /var/www/seusite/wp-content/uploads/
# Top 10 maiores diretórios
du -h /var/www/seusite/ --max-depth=2 | sort -rh | head -10
# Encontrar arquivos grandes (acima de 100MB)
find /var/www/seusite/ -type f -size +100M -exec ls -lh {} \;
Monitoramento Específico do WordPress
Query Monitor (Plugin)
O Query Monitor é o melhor plugin para debugging de performance no WordPress.
Instalação:
wp plugin install query-monitor --activate
O que ele mostra:
- Todas as queries SQL executadas na página
- Tempo de execução de cada query
- Queries lentas (acima de 50ms)
- Hooks e filtros executados
- Requisições HTTP feitas pelo WordPress
- Erros PHP
- Uso de memória por componente
Como usar:
- Acesse qualquer página do site logado como admin
- Clique na barra do Query Monitor no topo
- Analise as abas:
- Queries: ordene por tempo para encontrar queries lentas
- PHP Errors: identifique warnings e notices
- HTTP API Calls: veja chamadas externas que podem estar travando
WP Health Check
O WordPress tem uma ferramenta de saúde integrada:
- Acesse Ferramentas > Saúde do Site
- Revise os itens marcados como "Deve ser melhorado" e "Crítico"
- Na aba Info , verifique configurações do servidor
Logs de Erro
Log de Erros do Nginx
# Erros do Nginx sudo tail -50 /var/log/nginx/error.log # Filtrar erros específicos sudo grep "PHP Fatal" /var/log/nginx/error.log | tail -20 # Monitorar em tempo real sudo tail -f /var/log/nginx/error.log
Log de Erros do PHP
Ative o log de erros do WordPress no wp-config.php :
// Ativar debug log
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
# Ver o log do WordPress tail -50 /var/www/seusite/wp-content/debug.log # Filtrar erros fatais grep -i "fatal\|error" /var/www/seusite/wp-content/debug.log | tail -20
Log de Queries Lentas do MySQL
Ative no MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow-query.log long_query_time = 1 log_queries_not_using_indexes = 1
sudo systemctl restart mariadb # Ver queries lentas sudo tail -50 /var/log/mysql/slow-query.log
Configurando Alertas
Alertas por E-mail com Cron
Crie um script de monitoramento que roda via cron:
sudo nano /usr/local/bin/monitor-wordpress.sh
#!/bin/bash
SITE_URL="https://seusite.com.br"
EMAIL="admin@seusite.com.br"
LOG_FILE="/var/log/monitor-wordpress.log"
# Verificar se o site está respondendo
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$SITE_URL" --max-time 10)
if [ "$HTTP_CODE" != "200" ]; then
echo "$(date): ALERTA - Site retornou HTTP $HTTP_CODE" >> "$LOG_FILE"
echo "ALERTA: $SITE_URL retornou HTTP $HTTP_CODE em $(date)" | \
mail -s "ALERTA: Site fora do ar" "$EMAIL"
fi
# Verificar uso de disco
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$DISK_USAGE" -gt 85 ]; then
echo "$(date): ALERTA - Disco em ${DISK_USAGE}%" >> "$LOG_FILE"
echo "ALERTA: Uso de disco em ${DISK_USAGE}%" | \
mail -s "ALERTA: Disco quase cheio" "$EMAIL"
fi
# Verificar uso de RAM
RAM_USAGE=$(free | grep Mem | awk '{printf("%.0f", $3/$2 * 100)}')
if [ "$RAM_USAGE" -gt 90 ]; then
echo "$(date): ALERTA - RAM em ${RAM_USAGE}%" >> "$LOG_FILE"
echo "ALERTA: Uso de RAM em ${RAM_USAGE}%" | \
mail -s "ALERTA: RAM quase cheia" "$EMAIL"
fi
# Verificar se o PHP-FPM está rodando
if ! systemctl is-active --quiet php8.2-fpm; then
echo "$(date): ALERTA - PHP-FPM parado" >> "$LOG_FILE"
echo "ALERTA: PHP-FPM não está rodando!" | \
mail -s "ALERTA: PHP-FPM parado" "$EMAIL"
sudo systemctl restart php8.2-fpm
fi
# Verificar se o MySQL está rodando
if ! systemctl is-active --quiet mariadb; then
echo "$(date): ALERTA - MariaDB parado" >> "$LOG_FILE"
echo "ALERTA: MariaDB não está rodando!" | \
mail -s "ALERTA: MariaDB parado" "$EMAIL"
sudo systemctl restart mariadb
fi
sudo chmod +x /usr/local/bin/monitor-wordpress.sh
Adicione ao cron para rodar a cada 5 minutos:
sudo crontab -e
*/5 * * * * /usr/local/bin/monitor-wordpress.sh
Alertas por Slack
Use webhooks do Slack para receber alertas em um canal:
#!/bin/bash
SLACK_WEBHOOK="https://hooks.slack.com/services/SEU/WEBHOOK/URL"
SITE_URL="https://seusite.com.br"
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$SITE_URL" --max-time 10)
if [ "$HTTP_CODE" != "200" ]; then
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"ALERTA: $SITE_URL retornou HTTP $HTTP_CODE\"}" \
"$SLACK_WEBHOOK"
fi
Alertas por Telegram
Crie um bot no Telegram e use a API para enviar mensagens:
#!/bin/bash
TELEGRAM_BOT_TOKEN="SEU_BOT_TOKEN"
TELEGRAM_CHAT_ID="SEU_CHAT_ID"
SITE_URL="https://seusite.com.br"
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$SITE_URL" --max-time 10)
if [ "$HTTP_CODE" != "200" ]; then
MESSAGE="ALERTA: $SITE_URL retornou HTTP $HTTP_CODE em $(date '+%d/%m/%Y %H:%M')"
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d "chat_id=${TELEGRAM_CHAT_ID}" \
-d "text=${MESSAGE}"
fi
Monitoramento Avançado com Cron e Curl
Script de Verificação de Tempo de Resposta
sudo nano /usr/local/bin/check-response-time.sh
#!/bin/bash
SITE_URL="https://seusite.com.br"
LOG_FILE="/var/log/response-time.log"
MAX_TIME=3 # Alerta se o tempo de resposta passar de 3 segundos
RESPONSE_TIME=$(curl -s -o /dev/null -w "%{time_total}" "$SITE_URL" --max-time 10)
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${RESPONSE_TIME}s" >> "$LOG_FILE"
# Comparar usando bc para decimais
SLOW=$(echo "$RESPONSE_TIME > $MAX_TIME" | bc)
if [ "$SLOW" -eq 1 ]; then
echo "$(date): LENTO - Tempo de resposta: ${RESPONSE_TIME}s" >> "$LOG_FILE"
# Enviar alerta (e-mail, Slack, Telegram)
fi
Script de Monitoramento de SSL
sudo nano /usr/local/bin/check-ssl.sh
#!/bin/bash
DOMAIN="seusite.com.br"
DAYS_WARN=14
EMAIL="admin@seusite.com.br"
EXPIRY_DATE=$(echo | openssl s_client -servername "$DOMAIN" -connect "$DOMAIN:443" 2>/dev/null | \
openssl x509 -noout -enddate | cut -d= -f2)
EXPIRY_EPOCH=$(date -d "$EXPIRY_DATE" +%s)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
if [ "$DAYS_LEFT" -lt "$DAYS_WARN" ]; then
echo "ALERTA: SSL de $DOMAIN expira em $DAYS_LEFT dias" | \
mail -s "ALERTA: SSL expirando" "$EMAIL"
fi
New Relic e Datadog para Monitoramento Avançado
Para sites de alto tráfego ou e-commerce, ferramentas avançadas oferecem APM (Application Performance Monitoring).
New Relic
- Monitora performance do PHP em nível de transação
- Identifica queries lentas automaticamente
- Mapeia dependências externas
- Alertas inteligentes baseados em anomalias
- Plano gratuito disponível (com limitações)
Datadog
- Dashboards customizáveis
- Integração com mais de 400 serviços
- Log management centralizado
- APM para PHP e MySQL
- Alertas com machine learning
Ambas as ferramentas são excelentes, mas geralmente são necessárias apenas para sites com alto tráfego ou requisitos de SLA rigorosos.
Checklist de Monitoramento
Monitoramento Básico (Todo Site Deve Ter)
- [ ] Monitor de uptime configurado (UptimeRobot/BetterUptime)
- [ ] Alertas de downtime por e-mail ativados
- [ ] Log de erros do PHP ativado ( WP_DEBUG_LOG )
- [ ] Verificação periódica de espaço em disco
- [ ] Backup automático funcionando e verificado
Monitoramento Intermediário (VPS/Sites Comerciais)
- [ ] Netdata instalado e acessível via HTTPS
- [ ] Script de monitoramento via cron (a cada 5 minutos)
- [ ] Alertas de uso de disco acima de 85%
- [ ] Alertas de uso de RAM acima de 90%
- [ ] Log de queries lentas do MySQL ativado
- [ ] Query Monitor instalado para debugging
- [ ] Monitoramento de SSL (dias até expiração)
Monitoramento Avançado (E-commerce/Alto Tráfego)
- [ ] APM configurado (New Relic/Datadog)
- [ ] Alertas por Slack ou Telegram
- [ ] Monitoramento de PHP-FPM (processos, fila)
- [ ] Monitoramento de tempo de resposta
- [ ] Dashboard centralizado de métricas
- [ ] Revisão semanal dos logs e métricas
- [ ] Plano de ação documentado para incidentes
Resumo: Ferramentas por Categoria
| Categoria | Ferramenta | Custo |
|---|---|---|
| Uptime | BetterUptime | Gratuito (plano básico) |
| Servidor | Netdata | Gratuito |
| Servidor | htop | Gratuito |
| WordPress | Query Monitor | Gratuito |
| WordPress | WP Health Check | Gratuito (integrado) |
| Alertas | Cron + curl | Gratuito |
| Alertas | Slack webhook | Gratuito |
| APM | New Relic | Gratuito (básico) |
| APM | Datadog | Pago |
Leia também: Como Configurar Nginx para WordPress e Como Configurar PHP 8 no WordPress .
A HOSTWP Monitora Seu Servidor 24/7
Configurar monitoramento é trabalhoso. Manter o monitoramento funcionando, analisar os alertas e agir rapidamente quando algo dá errado exige dedicação constante. Um alerta às 3 da manhã não adianta nada se ninguém está acordado para resolver.
Na HOSTWP, monitoramos os servidores dos nossos clientes em tempo real. CPU, RAM, disco, uptime, SSL, backups, tudo. Quando algo sai do normal, agimos antes que se torne um problema para o seu site.
Não quer perder noites de sono com servidor? A HOSTWP cuida de tudo, do servidor ao site.
Fale com a gente no WhatsApp e tenha monitoramento profissional no seu WordPress.