Como Monitorar seu Servidor WordPress

Aprenda a monitorar seu servidor WordPress. Ferramentas gratuitas, alertas, scripts e checklist de monitoramento completo.

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:

  1. Crie uma conta em https://uptimerobot.com
  2. Clique em Add New Monitor
  3. Configure:
Monitor Type: HTTP(s)
Friendly Name: Meu Site WordPress
URL: https://seusite.com.br
Monitoring Interval: 5 minutes
  1. Configure alertas:
Alert Contacts: seu@email.com
Alert type: Email + SMS (se disponível)
  1. 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:

  1. Crie uma conta em https://betteruptime.com
  2. Adicione seu site como monitor HTTP
  3. Configure alertas por e-mail, SMS ou integração com Slack/Telegram
  4. 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:

  1. Acesse qualquer página do site logado como admin
  2. Clique na barra do Query Monitor no topo
  3. Analise as abas:
  4. Queries: ordene por tempo para encontrar queries lentas
  5. PHP Errors: identifique warnings e notices
  6. HTTP API Calls: veja chamadas externas que podem estar travando

WP Health Check

O WordPress tem uma ferramenta de saúde integrada:

  1. Acesse Ferramentas > Saúde do Site
  2. Revise os itens marcados como "Deve ser melhorado" e "Crítico"
  3. 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.

Artigos relacionados