GlitchTip: Monitorização de Erros Auto-Alojado Alternativa ao Sentry

O GlitchTip é uma plataforma de código aberto de monitorização de erros que oferece compatibilidade total com a API do Sentry. Permite às equipas recolher, agrupar e resolver erros de aplicações sem custos de subscrição SaaS, alojando a instância nos próprios servidores via Docker.

ℹ O GlitchTip é compatível com a API do Sentry — as SDKs do Sentry funcionam sem alterações.

1. Introdução ao GlitchTip

O GlitchTip é um projecto de código aberto (licença MIT) desenvolvido em Django que replica a funcionalidade central do Sentry: captura de erros, agrupamento automático por semelhança, rastos de pilha detalhados e gestão de projectos. A principal vantagem é a compatibilidade com o protocolo do Sentry, o que significa que qualquer SDK oficial do Sentry — Python, JavaScript, Go, Java, Ruby, entre outros — funciona imediatamente sem adaptações.

Para PME que necessitam de observabilidade de aplicações mas não justificam o custo do plano Sentry SaaS, o GlitchTip oferece uma alternativa auto-alojada com controlo total sobre os dados. Os requisitos são modestos: 512 MB de RAM e PostgreSQL são suficientes para equipas pequenas (o mínimo oficial é 256 MB na configuração all-in-one, até 128 MB com swap). A documentação oficial cobre instalação, configuração e operação.

2. Instalação com Docker

A instalação recomendada utiliza Docker Compose com PostgreSQL, Valkey (ou Redis) e a imagem oficial glitchtip/glitchtip:6 em modo all-in-one. A documentação oficial não pede clone do código: basta descarregar o compose.sample.yml e editar as variáveis de ambiente — o código-fonte divide-se em dois repositórios (glitchtip-backend e glitchtip-frontend), relevantes apenas para quem compila ou contribui, não para quem instala.

# Descarregar o compose oficial e preparar a configuração
wget https://glitchtip.com/assets/compose.sample.yml -O compose.yml

# Editar as variáveis essenciais no compose.yml (secção x-environment)
#   SECRET_KEY: gerar com openssl rand -hex 32
#   DATABASE_URL: postgres://postgres:password@postgres:5432/postgres
#   GLITCHTIP_DOMAIN: https://glitchtip.exemplo.pt
#   DEFAULT_FROM_EMAIL: [email protected]

# Iniciar os serviços (postgres, valkey, web)
docker compose up -d

# Criar utilizador administrador
docker compose exec web ./manage.py createsuperuser

Após o arranque, a interface web fica disponível em http://localhost:8000. O superuser criado no último passo permite aceder ao painel de administração onde se criam projectos e equipas.

⚠ Configurar limitação de taxa para evitar enchimento da base de dados em produção.

3. Configurar Projectos e DSN

Depois de iniciar sessão no painel web, criar um projecto novo associado a uma equipa. Cada projecto gera uma DSN (Data Source Name) única que identifica a origem dos eventos. A DSN segue o formato https://[email protected]/1 onde o número final é o ID do projecto.

A DSN está disponível em Project Settings > Client Keys. Copiar o valor completo — inclui protocolo, chave pública, host e ID do projecto. Esta DSN é o único parâmetro necessário para inicializar qualquer SDK do Sentry na aplicação cliente.

4. Integrar com Aplicações

A integração usa as SDKs oficiais do Sentry — não existem SDKs próprias do GlitchTip. Isto significa documentação extensa, suporte para dezenas de frameworks e compatibilidade garantida. Basta substituir a DSN do Sentry pela DSN do GlitchTip.

Python

# Instalar SDK do Sentry para Python
pip install sentry-sdk

# Inicializar na aplicação
import sentry_sdk

sentry_sdk.init(
    dsn="https://[email protected]/1",
    traces_sample_rate=0.2,
    environment="production"
)

JavaScript

# Instalar SDK do Sentry para browser
npm install @sentry/browser

# Inicializar na aplicação
import * as Sentry from "@sentry/browser";

Sentry.init({
  dsn: "https://[email protected]/1",
  tracesSampleRate: 0.2,
  environment: "production"
});

O parâmetro traces_sample_rate controla a percentagem de transacções capturadas para monitorização de desempenho. Em produção, valores entre 0.1 e 0.5 equilibram visibilidade e volume de dados.

5. Alertas e Notificações

O GlitchTip suporta notificações por email nativamente. Para integração com chat e gestão de incidentes, oferece webhooks que enviam payloads JSON para endpoints externos. A configuração faz-se em Project Settings > Alerts, onde se definem regras por severidade, frequência e tipo de evento.

Canal Configuração Latência
Email Nativo, sem configuração extra Imediato
Webhook URL endpoint + segredo opcional Sub-segundo
Slack/Discord Via webhook incoming 1-3 segundos

Para equipas que já usam conjunto de observabilidade, o GlitchTip complementa ferramentas como o VictoriaMetrics para métricas e o Grafana Alloy para telemetria. Enquanto estas cobrem métricas e registos, o GlitchTip foca-se em erros de aplicação com rastos de pilha estruturados.

6. Comparação com Sentry

O GlitchTip não replica todas as funcionalidades do Sentry SaaS, mas cobre as essenciais para a maioria das PME. A tabela seguinte resume as diferenças principais:

Funcionalidade GlitchTip Sentry SaaS
Licença MIT (código aberto) Proprietária
Alojamento Auto-alojado (Docker) SaaS
Custo Gratuito (custo de infra) Plano pago por eventos
SDKs compatíveis Todas as do Sentry Nativas
Monitorização de desempenho Básico (rastreio) Completo
Session replay Não Sim
Controlo de dados Total (local) Limitado

A decisão entre GlitchTip e Sentry depende do orçamento, requisitos de privacidade e necessidade de funcionalidades avançadas como reprodução de sessão. Para PME com restrições orçamentais ou requisitos RGPD de dados local, o GlitchTip é frequentemente a opção mais adequada.

7. Erros Comuns e Lista de Verificação

Durante a instalação e configuração do GlitchTip, alguns problemas surgem frequentemente. A lista seguinte resume os mais comuns e as respectivas soluções:

Problema Causa Solução
Eventos não chegam DSN incorrecta ou URL errada Verificar DSN em Client Keys
Base de dados cresce rápido Sem limitação de taxa configurado Definir quotas por projecto
Worker não processa Redis não acessível Verificar REDIS_URL no .env
Erros 502 no painel Infraestrutura não iniciou Verificar registos do docker-compose

Lista de verificação para produção:

  • Configurar HTTPS com certificados Let’s Encrypt ou proxy inverso (Nginx/Caddy)
  • Definir SECRET_KEY com valor aleatório de pelo menos 50 caracteres
  • Activar limitação de taxa em Project Settings para limitar eventos por minuto
  • Configurar backups periódicos da base de dados PostgreSQL
  • Definir retenção de eventos (predefinido 30 dias, ajustar conforme volume)
  • Configurar alertas por email ou webhook para erros críticos
  • Monitorizar recursos do contentor com Prometheus ou Netdata

Para monitorização do próprio GlitchTip, recomenda-se integrar com o conjunto coberto no Dia 25 do Curso Linux 30 Dias — Monitorização com Prometheus e Grafana. As métricas de contentor Docker, latência de PostgreSQL e fila de Redis do GlitchTip podem ser recolhidas pelo mesmo conjunto de observabilidade.

Artigos Relacionados: