Documentação

Documentação codeDB

Guia completo de instalação, configuração e uso da plataforma — do primeiro acesso ao monitoramento em produção.

Guia do Usuário

O que é o codeDBComo funcionaPré-requisitosPrimeiros PassosInstalação do AgenteUsando o DashboardQuery IntelligenceIncidentesDashboard GerencialRelatórios SemanaisInsights InteligentesModo TV / WallConfigurando AlertasSegurança e LGPDHealth ScoreAnálise de IncidentesPadrões e CorrelaçõesAPI PúblicaDisponibilidade e CoberturaJanelas de ManutençãoMembros e ColaboraçãoPlanos e AssinaturaRegras de Uso

Apêndice Técnico

A — ArquiteturaB — Config.envC — Permissões SQL ServerD — Múltiplas InstânciasE — Ciclo de Vida da AssinaturaF — Versões e AtualizaçõesG — Referência da API PúblicaH — Controle de Acesso e RolesI — Segurança e LGPD

O que é o codeDB

O codeDB é uma plataforma SaaS de monitoramento de SQL Server que coleta métricas em tempo real diretamente das instâncias do seu servidor Windows e as apresenta em um portal web com dashboards, alertas automáticos e relatórios históricos.

A plataforma foi criada para DBAs e gestores de TI que precisam de visibilidade contínua sobre a saúde do banco de dados sem a complexidade de configurar ferramentas de observabilidade do zero.

TempDB — uso em tempo real
Queries lentas e bloqueios
SQL Agent Jobs
I/O e latência de disco
Memória e PLE
Alertas por e-mail

Como funciona

O codeDB é composto por três partes que trabalham em conjunto:

Agente (Windows)

Executável instalado no servidor Windows. A cada 5 minutos consulta as DMVs do SQL Server e envia as métricas para a API.

API (Nuvem)

Backend hospedado na nuvem. Recebe os snapshots, calcula o health score, avalia regras de alerta e persiste os dados.

Portal (Web)

Acesse pelo navegador em qualquer lugar. Visualize dashboards em tempo real, configure alertas e gerencie sua assinatura.

Fluxo resumido: Agente (coleta a cada 5 min) → API codeDB (processa e armazena) → Portal Web (exibe em tempo real).


Pré-requisitos

Servidor onde o agente será instalado

RequisitoVersão mínimaObservação
Windows Server2012 R2 ou superiorTambém funciona em Windows 10/11 Pro
SQL Server2012 ou superiorExpress, Standard, Enterprise, Developer
ODBC Driver for SQL Serverv17 (recomendado) ou v18Download gratuito na Microsoft
.NET Framework4.7.2 ou superiorNormalmente já presente no Windows Server
Acesso à internetPorta 443 (HTTPS)Para envio de dados ao codeDB

Permissões no SQL Server

O login configurado no agente precisa da permissão VIEW SERVER STATE para consultar as DMVs de monitoramento. Veja o script completo na seção C — Permissões SQL Server do apêndice técnico.


Primeiros Passos

1

Crie sua conta

Acesse o portal codeDB e clique em Começar Gratuitamente. Preencha nome, e-mail, senha, CPF/CNPJ e nome da empresa. Você terá 30 dias de trial gratuito sem precisar inserir cartão de crédito.

2

Crie um Ambiente

Após o login, o assistente de onboarding será exibido automaticamente. Clique em Criar Ambiente e dê um nome (ex: "Produção", "Desenvolvimento"). Um token de agente será gerado para este ambiente — guarde-o com segurança, ele é exibido apenas uma vez.

3

Baixe e instale o agente

Clique em Baixar Agente para baixar o instalador codeDB-Agent-Setup.exe. Execute-o no servidor Windows onde o SQL Server está instalado.

4

Configure e aguarde

O instalador abre o Gerenciador de Instâncias automaticamente. Insira o token do ambiente, selecione a instância SQL e salve. Em até 5 minutos os primeiros dados aparecerão no portal.


Instalação do Agente

Passo 1 — Executar o instalador

Execute codeDB-Agent-Setup.exe como administrador. O instalador copiará os arquivos para C:\codeDB-Agent\, instalará o gerenciador de serviço NSSM e registrará o agente como serviço Windows com inicialização automática.

Passo 2 — Gerenciador de Instâncias (GUI)

Ao final da instalação, o codeDB Agent Config é aberto automaticamente. Nele você irá:

  • Inserir o Agent Token gerado no portal
  • Selecionar a instância SQL Server (servidor e porta)
  • Escolher o tipo de autenticação (Windows Auth ou SQL Login)
  • Inserir usuário/senha do SQL (armazenados com criptografia AES)
  • Clicar em Salvar e Iniciar Serviço

Passo 3 — Verificar o serviço

Após salvar, o serviço codeDB-Agent aparece no Gerenciador de Serviços do Windows (services.msc) com status Em execução. O serviço reinicia automaticamente em caso de falha.

Adicionando mais instâncias SQL

Se o servidor hospedar mais de uma instância SQL Server, abra o codeDB Agent Config novamente, clique em + Adicionar Instância e insira o token de um segundo ambiente criado no portal. Cada ambiente monitora uma instância separada.


Usando o Dashboard

Visão geral

A tela principal do portal exibe um card por instância monitorada com o Health Score (0–100), contador de alertas ativos e hora da última coleta. A cor indica a situação atual:

Verde (80–100) — Saudável

Amarelo (50–79) — Atenção

Vermelho (0–49) — Crítico

Detalhes de uma instância — 9 abas

Clique em qualquer card para abrir o painel de instância com 9 abas, atualizadas automaticamente a cada 60 segundos:

AbaConteúdo
1 — Visão GeralHealth Score ao vivo, KPIs principais, sessões ativas, top queries, TempDB
2 — PerformanceWait stats, PLE, buffer cache hit ratio, I/O por arquivo
3 — Sessões e BloqueiosSessões ativas, queries em execução, chains de bloqueio
4 — Jobs e BackupsStatus dos SQL Agent Jobs, histórico de falhas, status de backups
5 — CapacidadeTamanho de dados e log por banco (.mdf/.ldf); espaço em disco por volume; projeção de crescimento
6 — Insights InteligentesRecomendações automáticas baseadas em regras e histórico
7 — AnomaliasDetecção de anomalias estatísticas em métricas históricas
8 — Análise de IncidentesRoot Cause Timeline: causa raiz, sequência de eventos, Health Score
9 — Query IntelligenceRanking de queries por impacto (Score 0-100), tendências de crescimento e degradação, sugestões de índice e correlação com incidentes

Query Intelligence

Disponível na aba 9 — Query Intelligence dentro do painel de uma instância. Identifica automaticamente as consultas SQL que merecem atenção usando regras determinísticas (sem IA) — não armazena todas as queries, apenas as que satisfazem critérios de relevância.

Os dados são agregados diariamente às 01:50 BRT e ficam disponíveis em quatro sub-abas:

Sub-abaO que mostra
Top ImpactRanking de queries por Impact Score (0–100). O score é calculado por percentil relativo: um score 85 significa que a query consome mais que 85% das outras queries do ambiente.
CrescendoQueries com CPU crescendo mais de 20% em 7 dias (regressão linear). Badge '+XX% em 7d'. Requer 7 dias de histórico.
DegradadasQueries com CPU atual acima de 1,5× o baseline dos últimos 14 dias. Badge 'XX× baseline'. Requer 14 dias de histórico.
Missing IndexesSugestões de índice detectadas automaticamente pelo SQL Server. DDL do CREATE INDEX pronto para copiar.
RecomendaçõesRegras QRULE_* disparadas, com severidade, explicação e ação recomendada.

Regras QRULE_* — o que cada uma detecta

RegraCondiçãoAtiva desde
QRULE_001CPU excessiva: avg_cpu_ms > 5.000ms com ≥ 10 execuçõesDia 1
QRULE_002Alta frequência: > 50.000 execuções por dia (possível loop de aplicação)Dia 1
QRULE_003Leitura excessiva: avg_logical_reads > 100.000 páginas por execuçãoDia 1
QRULE_004Crescimento acelerado: CPU cresceu > 20% em 7 dias (regressão linear)Dia 7
QRULE_005Degradação vs baseline: CPU atual > 1,5× a média dos 14 dias anterioresDia 14
QRULE_006Índice ausente: alta leitura física + sugestão de índice detectada no mesmo bancoDia 1
QRULE_007Correlação com incidente: query estava ativa durante janela de incidente (48h)Dia 1
QRULE_009Concentração de CPU: query representa > 30% do total de CPU da instância no diaDia 1

As regras QRULE_004 e QRULE_005 exigem histórico mínimo (7 e 14 dias, respectivamente) — elas ativam automaticamente conforme os dados acumulam, sem nenhuma configuração necessária.

Impact Score (0–100)

O Impact Score é calculado diariamente para cada query com base em 6 dimensões ponderadas:

DimensãoPeso
CPU acumulada (total_cpu_ms)30%
Leituras lógicas totais25%
Elapsed × execuções20%
Writes totais10%
Frequência de execução10%
Tendência de CPU (slope 7d)5%

O score é relativo ao ambiente — não há threshold fixo. Queries com score alto são as que mais consomem recursos em comparação com as demais queries da mesma instância. Clique em qualquer query para abrir um drawer com o gráfico de tendência (Avg CPU e Max CPU nos últimos 14 dias) e o texto SQL da query.


Incidentes

Acesse em Incidentes no menu lateral. Esta tela centraliza, em três abas, toda a inteligência sobre problemas passados e recorrentes em todas as instâncias do ambiente.

AbaO que mostra
IncidentesLista de todos os incidentes detectados: instância, causa raiz (com confiança), duração, queda de Health Score e status. Permite filtrar por período (7–90 dias) e exportar o relatório HTML de cada incidente (ícone ⬇).
Padrões RecorrentesProblemas que se repetem no mesmo dia da semana e bloco de horário — sinal de causa sistêmica (ex: job de manutenção, pico de carga diário). Mínimo de 2 ocorrências nos últimos 90 dias.
CorrelaçõesIncidentes que afetaram múltiplas instâncias em menos de 15 minutos — indica problema de infraestrutura compartilhada (storage, hypervisor, rede).

Dashboard Gerencial

Acesse em Executive no menu lateral. Visão consolidada de saúde de todos os ambientes — projetada para gestores e líderes de TI que precisam de uma leitura rápida sem entrar em cada instância individualmente.

KPI / SeçãoO que representa
Instâncias monitoradasTotal de SQL Servers ativos no ambiente e período selecionados
Health Score médioMédia do score de todas as instâncias no período
Disponibilidade (%)Percentual de tempo com SQL Server comprovadamente disponível (excluindo UNKNOWN, manutenção e gaps de monitoramento)
Cobertura de Monitoramento (%)Percentual do tempo em que o codeDB conseguiu observar o ambiente — reduz quando o agente fica offline, mas não penaliza a disponibilidade do cliente
Alertas disparadosTotal de alertas no período
Instâncias críticasQuantidade com Health Score abaixo de 50
Riscos de capacidadeBancos ou volumes que esgotam espaço em menos de 90 dias
Anomalias ativas (7d)Métricas com desvio significativo vs. baseline histórica
Ranking de instânciasHealth Score atual, médio, disponibilidade, cobertura e incidentes por instância

O codeDB separa Disponibilidade de Cobertura de Monitoramento: uma indisponibilidade da própria plataforma codeDB nunca reduz a disponibilidade do seu SQL Server. Consulte a seção Disponibilidade e Cobertura para entender o modelo de estados UP / DOWN / UNKNOWN.


Relatórios Semanais

Acesse em Relatórios no menu lateral. Todo domingo à noite o codeDB gera e envia automaticamente um relatório por e-mail para os responsáveis do ambiente. O e-mail chega segunda-feira às 08h (BRT) e resume toda a semana.

Seção do relatórioConteúdo
Health Score por instânciaRanking do pior ao melhor, com média da semana
AlertasTotal disparados, críticos e resolvidos no período
DisponibilidadePercentual de uptime por instância
Riscos de backupBancos com backup atrasado ou com falha
Insights automáticosRecomendações geradas durante a semana
Top incidentesOs 3 com maior queda de Health Score, com causa raiz e recomendação

Na página de Relatórios você também pode disparar o envio manualmente e consultar o histórico de envios anteriores com data, destinatário e status (enviado / falhou / ignorado).


Insights Inteligentes

Acesse em Insights no menu lateral. Lista centralizada das recomendações operacionais geradas diariamente pelo codeDB para todas as instâncias do ambiente, com base em 14 regras que cruzam métricas históricas, tendências e padrões de uso.

SeveridadeExemplos de insight gerado
Crítico 🔴Disco esgota em menos de 7 dias; TempDB com apenas 1 arquivo sob alta contenção
Atenção 🟡PLE médio abaixo de 1.000s nos últimos 7 dias; job de backup com falha recorrente
Info ⚪Índice fragmentado acima de 80%; query com varredura completa em tabela grande

Filtre por ambiente e severidade. Clique em qualquer insight para abrir diretamente o painel da instância afetada.


Modo TV / Wall

Disponível dentro do painel de uma instância, no ícone de TV no canto superior. O Modo TV exibe o monitoramento em tela cheia, pensado para NOCs, war rooms e monitores em salas de operação — atualiza automaticamente a cada 30 segundos sem interação.

CategoriaWidgets disponíveis
KPIsHealth Score (gauge colorido), PLE, TempDB %, sessões ativas, bloqueios, RAM %, buffer cache, queries longas, deadlocks, jobs com falha
GráficosTop wait types (barras), latência de I/O, histórico de Health Score (24h)
ListasAlertas disparados no momento, status de backups por banco

Os widgets são configuráveis: ative, desative e reordene pelo painel de configurações (ícone de engrenagem). Preferências ficam salvas no perfil. O gauge do Health Score muda de cor conforme o status: verde (≥ 80), amarelo (50–79), laranja (30–49) e vermelho (< 30).


Segurança e LGPD

Autenticação em dois fatores (MFA)

O codeDB suporta TOTP (Time-based One-Time Password) para proteger sua conta com um segundo fator além da senha. Use Google Authenticator, Authy, Microsoft Authenticator ou qualquer app compatível com TOTP.

1

Acesse seu Perfil

Clique no seu avatar no canto superior direito e acesse Perfil.

2

Ative o MFA

Na seção Segurança, clique em Ativar autenticação em dois fatores. Um QR Code será exibido para parear com o seu app autenticador.

3

Confirme com o código

Insira o código de 6 dígitos gerado pelo app para confirmar o pareamento. A partir desse momento, cada login exigirá o código atual.

O secret TOTP é armazenado criptografado no banco de dados — nunca em texto claro. Para desativar o MFA, acesse o mesmo menu e informe a senha e um código válido.

Proteção de tokens e chaves

ItemComo é protegido
Token do agentVerificado via SHA-256 — nunca armazenado em texto claro
API KeysArmazenadas como hash SHA-256 — visíveis apenas no momento da criação
Auto-update do agentInstalador verificado por SHA-256 antes da aplicação; sem correspondência o update é bloqueado
Senha do banco (Config.env)Criptografada com Fernet/AES-128 — prefixo ENC: no arquivo

Trate tokens e API Keys como senhas: não inclua em código-fonte, repositórios Git ou logs. Use variáveis de ambiente ou cofres de secrets (AWS Secrets Manager, Azure Key Vault, etc.).

Privacidade de queries coletadas

Cada ambiente tem um modo de visibilidade para o texto das queries SQL coletadas pelo agente. Configure em Configurações → card do ambiente → Privacidade de Queries:

ModoComportamento
full (padrão)Texto completo da query armazenado e visível no portal
maskedTexto truncado/ofuscado antes do armazenamento
disabledTexto nunca armazenado — apenas estatísticas de performance

Seus direitos — LGPD Art. 18

DireitoComo exercer no codeDB
Exclusão de conta e dadosPerfil → Excluir minha conta (requer senha + MFA se ativo). Todos os dados do workspace são removidos permanentemente.
Portabilidade / exportaçãoConfigurações → Exportar dados. Gera um arquivo ZIP com todos os dados do ambiente, disponível por 48h para download.
Visualizar dados coletadosDashboard, alertas, incidentes e histórico — todos visíveis e acessíveis pelo portal.
Anonimização de IPEndereços IP são truncados automaticamente antes do armazenamento (/24 IPv4, /48 IPv6).

Para detalhes completos consulte a Política de Privacidade e a Política de Cookies.

Termos de Uso e modelo de contrato

O codeDB usa o modelo click-wrap: ao clicar em "Criar Conta", o usuário aceita os Termos de Uso e a Política de Privacidade. Não há contrato separado para assinar. O aceite é registrado automaticamente no momento do cadastro, vinculado ao usuário e ao workspace.

DocumentoOnde encontrar
Termos de Uso/termos
Política de Privacidade/privacidade
Política de Cookies/cookies

Na primeira visita ao portal, um banner de cookies permite aceitar, recusar ou configurar as preferências de rastreamento. O consentimento é registrado no backend com timestamp e IP anonimizado. Para organizações que exigem MSA, DPA ou SLA assinado, entre em contato com o suporte — o aceite click-wrap atende à maioria dos casos.


Health Score

O Health Score é um número de 0 a 100 que resume a saúde da instância SQL Server em um único valor, calculado a cada 5 minutos.

ScoreClassificaçãoO que significa
90–100ExcelenteInstância funcionando dentro dos parâmetros ideais
70–89BomPequenas anomalias, sem impacto relevante
50–69AtençãoDegradação moderada — investigar logo
30–49CríticoProblema ativo afetando performance
0–29EmergênciaSituação grave, intervenção imediata necessária

O que compõe o score

  • PLE (Page Life Expectancy) — principal indicador de pressão de memória. Valores abaixo de 300s penalizam significativamente o score.
  • Buffer Cache Hit Ratio — abaixo de 95% indica leituras físicas frequentes do disco.
  • TempDB — uso acima de 85% começa a penalizar o score.
  • Bloqueios ativos — penalidade proporcional ao número de sessões bloqueadas.
  • Jobs com falha — cada SQL Agent Job com falha reduz o score.
  • Latência de I/O — arquivos com latência acima de 50ms indicam gargalo de disco.
  • Wait stats dominantes — tipos de espera com mais de 40% do tempo total.
  • Espaço em disco — volume com menos de 20% livre desconta 10 pts; menos de 10% desconta 25 pts (apenas o volume mais crítico penaliza).
  • Crescimento súbito de log — arquivo .ldf crescendo ≥ 500 MB em um ciclo (~5 min) desconta 10 pts; ≥ 2.000 MB desconta 20 pts.

Quando o Health Score cai 10 ou mais pontos em dois snapshots consecutivos (~10 minutos), o sistema detecta automaticamente um incidente e inicia a análise de causa raiz.


Análise de Incidentes

A Análise de Incidentes (Root Cause Timeline) é a funcionalidade central do codeDB. Em vez de alertas isolados, ela constrói a narrativa completa de um incidente: o que aconteceu, em que sequência, qual a causa provável e o que fazer.

Acesse em Aba 7 — Análise de Incidentes dentro do painel de uma instância, ou em Incidentes no menu lateral para a visão global de todas as instâncias.

Como incidentes são detectados e encerrados

EventoCritério
Abertura de incidenteHealth Score cai ≥ 10 pontos em 2 snapshots consecutivos (~10 min)
Encerramento de incidenteScore sobe de forma estável por 3 snapshots consecutivos e fica ≥ 5 pts acima do mínimo atingido

Fechamento refinado: oscilações pequenas (≤ 4 pontos) no Health Score não reiniciam o contador de estabilidade. Apenas quedas de ≥ 5 pontos recomeçam a contagem — evitando que ruído de coleta prolongue artificialmente um incidente que já foi resolvido.

Tipos de evento na timeline

SeveridadeTipos de evento
Críticohealth_drop, ple_critical, tempdb_critical, alert_fired (crítico)
Atençãople_warning, memory_pressure, blocking_start, wait_spike, tempdb_high, job_failure, deadlock, io_latency_high
Infohealth_recover, blocking_end, alert_resolved

Agrupamento por hora: quando um incidente tem mais de 20 eventos, a timeline os agrupa automaticamente em blocos de 1 hora — por exemplo: "09/06 09:00–10:00 — 12 críticos, 8 atenção". Cada grupo é colapsável, permitindo navegar rapidamente em incidentes de longa duração sem perder o detalhe de nenhum evento.

Os 6 tipos de causa raiz

O codeDB classifica automaticamente a causa raiz entre 6 tipos. Expanda cada um para ver os sinais que confirmam o diagnóstico e as ações recomendadas.

Sinais: PLE abaixo de 300s, Buffer Cache Hit Ratio abaixo de 95%, wait type RESOURCE_SEMAPHORE com alto percentual.

Ações: Verificar MAX SERVER MEMORY; identificar queries com Memory Grant excessivo; verificar outros processos consumindo RAM no servidor.

Sinais: Latência de leitura ou escrita acima de 50ms em arquivos de dados, wait types PAGEIOLATCH_SH, PAGEIOLATCH_EX ou WRITELOG dominantes.

Ações: Verificar fragmentação de índices; verificar VLFs no log; avaliar migração para SSD; separar arquivos de dados e log em discos diferentes.

Sinais: active_blocks acima de zero por múltiplos snapshots, wait types LCK_M_X, LCK_M_S ou LCK_M_U com alto percentual.

Ações: Identificar o head blocker e a query em execução; verificar transações abertas sem COMMIT; considerar READ COMMITTED SNAPSHOT (RCSI).

Sinais: Wait type SOS_SCHEDULER_YIELD dominante, CXPACKET alto (paralelismo excessivo), muitas sessões com alto consumo de CPU simultâneas.

Ações: Identificar queries com maior consumo de CPU; ajustar MAXDOP e Cost Threshold for Parallelism; verificar estatísticas desatualizadas.

Sinais: usage_pct acima de 85% (atenção) ou 95% (crítico), wait types PAGELATCH_UP ou PAGELATCH_EX no TempDB.

Ações: Identificar sessões que mais consomem TempDB (Aba 2); adicionar mais arquivos de dados ao TempDB; verificar cursors e tabelas temporárias desnecessários.

Sinais: failed_jobs ≥ 1.

Ações: Verificar histórico do job no SQL Agent para o erro exato; verificar permissões da conta do job; jobs de manutenção com falha causam degradação progressiva.

Nível de confiança da causa raiz

ConfiançaO que significa
AltaMúltiplos indicadores convergindo — diagnóstico confiável
MédiaAlguns indicadores presentes — investigar, mas considerar causas alternativas
BaixaPoucos dados disponíveis — incidente breve ou problema menos comum

Padrões Recorrentes e Correlações

Padrões Recorrentes

Disponível em Incidentes → aba Padrões Recorrentes. O codeDB analisa os últimos 90 dias e identifica o mesmo tipo de problema acontecendo no mesmo dia da semana e no mesmo bloco de horário — sinal de uma causa sistêmica recorrente (ex: job de manutenção semanal, pico de carga diário).

CampoSignificado
DiaDia da semana em que o padrão ocorre
HorárioBloco de 4 horas (ex: 08–12h)
Causa RaizTipo de problema que se repete
OcorrênciasNúmero de vezes detectado no período analisado (mín. 2)
Queda MédiaMédia de pontos de Health Score perdidos por incidente
Duração MédiaMédia de minutos de duração do incidente

Exemplo: Segunda | 00–04h | Pressão de Memória | 4 ocorrências | −18 pts | 45 min — toda segunda de madrugada há pressão de memória por ~45 min. Hipótese provável: job de rebuild de índices consumindo muita memória. Ação: revisar o job ou ajustar MAX MEMORY GRANT.

Correlações entre Instâncias

Disponível em Incidentes → aba Correlações. Quando múltiplas instâncias do mesmo ambiente sofrem incidentes em um intervalo de 15 minutos entre si, o codeDB as agrupa como incidentes correlacionados — sinal de uma causa compartilhada de infraestrutura.

CenárioCausa provável
3 instâncias com gargalo de I/O simultâneoStorage compartilhado (SAN/NAS) com problema
2 instâncias com pressão de memória ao mesmo tempoMemória insuficiente no hypervisor (VMs)
Múltiplas instâncias com jobs falhandoSQL Agent ou conta de serviço com problema
Incidentes em todas as instâncias de um ambienteProblema de rede ou no host físico

API Pública

O codeDB disponibiliza uma API REST pública que permite integrar dados de incidentes e status das instâncias com ferramentas externas como Zabbix, Microsoft Teams, Grafana, ServiceNow e qualquer sistema que faça chamadas HTTP.

Criando uma API Key

1

Acesse Configurações no menu lateral

Role até a seção API Keys — Integração Pública.

2

Clique em Nova API Key

Informe um nome descritivo (ex: "Zabbix Produção", "Teams NOC").

3

Copie a chave gerada

A chave tem o formato cdb_v1_<48 caracteres> e é exibida apenas uma vez. Trate-a como uma senha — use variáveis de ambiente, nunca inclua em código-fonte ou repositórios Git.

Endpoints disponíveis

EndpointDescriçãoParâmetros
GET /api/v1/incidentsLista incidentes detectados e classificadosdays (1–90), instance_id, environment_id
GET /api/v1/instancesLista instâncias monitoradas com status básico

Exemplos de uso

curl (Linux/macOS):

# Listar incidentes das últimas 24h
curl -s -H "X-API-Key: cdb_v1_SUA_CHAVE" \
  "https://<api>/api/v1/incidents?days=1"

# Verificar instâncias ativas
curl -s -H "X-API-Key: cdb_v1_SUA_CHAVE" \
  "https://<api>/api/v1/instances"

PowerShell:

$headers = @{ "X-API-Key" = "cdb_v1_SUA_CHAVE" }
$resp = Invoke-RestMethod -Uri "https://<api>/api/v1/incidents?days=1" -Headers $headers

$ativos = ($resp.incidents | Where-Object { $_.status -eq "active" }).Count
Write-Host "Incidentes ativos: $ativos"

$resp.incidents | Where-Object { $_.status -eq "active" } | ForEach-Object {
  $rc = $_.root_cause
  Write-Warning "$($rc.label) | Queda: $($_.max_health_drop) pts | Conf: $($rc.confidence)"
}

Integração com Zabbix (External Check):

Crie o script /usr/lib/zabbix/externalscripts/check_codedb.py no servidor Zabbix, depois crie itens e triggers com base nos valores retornados:

#!/usr/bin/env python3
# check_codedb.py <metric>
# Métricas: active_incidents | incidents_today | max_health_drop | agent_offline_count
import sys, json, urllib.request

API_BASE = "https://<api>"
API_KEY  = "cdb_v1_SUA_CHAVE"

def api_get(path):
    req = urllib.request.Request(f"{API_BASE}{path}", headers={"X-API-Key": API_KEY})
    with urllib.request.urlopen(req, timeout=10) as r:
        return json.loads(r.read())

metric = sys.argv[1] if len(sys.argv) > 1 else "active_incidents"
data = api_get("/api/v1/incidents?days=1")
incidents = data.get("incidents", [])

if metric == "active_incidents":
    print(sum(1 for i in incidents if i["status"] == "active"))
elif metric == "incidents_today":
    print(len(incidents))
elif metric == "max_health_drop":
    drops = [i["max_health_drop"] for i in incidents if i["max_health_drop"]]
    print(max(drops) if drops else 0)

No Zabbix, crie um item do tipo External check com chave check_codedb.py[active_incidents] e uma trigger: last(...)>0 para alertar quando houver incidentes ativos.

Integração com Microsoft Teams:

Configure um Incoming Webhook no canal do Teams e use o script abaixo agendado via cron ou Task Scheduler (a cada 5 min):

#!/usr/bin/env python3
import json, urllib.request
from datetime import datetime, timezone

API_BASE      = "https://<api>"
API_KEY       = "cdb_v1_SUA_CHAVE"
TEAMS_WEBHOOK = "https://outlook.office.com/webhook/SEU_WEBHOOK"

def api_get(path):
    req = urllib.request.Request(f"{API_BASE}{path}", headers={"X-API-Key": API_KEY})
    with urllib.request.urlopen(req, timeout=10) as r:
        return json.loads(r.read())

data = api_get("/api/v1/incidents?days=1")
for inc in data["incidents"]:
    if inc["status"] != "active":
        continue
    rc = inc.get("root_cause") or {}
    card = {
        "@type": "MessageCard",
        "themeColor": "FF0000",
        "summary": f"codeDB: {rc.get('label', 'Incidente')}",
        "sections": [{
            "activityTitle": f"Incidente Detectado — {rc.get('label','')}",
            "activitySubtitle": f"Confiança: {rc.get('confidence','')} | Queda: -{inc['max_health_drop']} pts",
            "facts": [{"name": "Recomendação", "value": rc.get("recommendation", "")}]
        }]
    }
    req = urllib.request.Request(
        TEAMS_WEBHOOK, json.dumps(card).encode(), {"Content-Type": "application/json"}
    )
    urllib.request.urlopen(req, timeout=10)

Membros e Colaboração

O codeDB suporta múltiplos usuários por workspace (tenant). O owner pode convidar colegas para colaborar, atribuindo a cada um uma role com nível de acesso específico. Todos os membros compartilham os mesmos ambientes, instâncias e dados de monitoramento da organização.

Roles disponíveis

RolePermissõesQuem pode atribuir
Proprietário (owner)Acesso total: gerenciar membros, ambientes, instâncias, cobrança e cancelamentoApenas outros owners
Administrador (admin)Criar/editar/deletar ambientes, convidar membros, gerar tokens de agenteOwner ou admin
Analista (analyst)Acesso de leitura ao dashboard, alertas, incidentes e relatórios. Não pode alterar configurações.Owner ou admin

Convidar um membro

1

Acesse Membros no menu lateral

Clique em Membros no sidebar do dashboard.

2

Clique em Convidar membro

Informe o e-mail do colega e escolha a role desejada (Analista é o padrão recomendado para quem só precisa visualizar dados).

3

Convite enviado por e-mail

O codeDB envia um e-mail com um link de convite válido por 7 dias. O link leva para a página de aceite em /invite/{token}.

4

Convidado aceita o convite

Se já tiver conta, faz login e clica em "Aceitar convite". Se não tiver conta, cria uma — o sistema detecta o convite pendente e vincula o novo usuário ao workspace automaticamente, sem criar um novo tenant em separado.

Fluxo de aceite detalhado

A página de aceite de convite (/invite/{token}) funciona em três cenários:

  • Usuário já logado com o e-mail correto: botão "Aceitar convite" visível — um clique vincula ao workspace e redireciona ao dashboard.
  • Usuário não logado: dois botões — "Entrar na minha conta" (vai para login com ?redirect=/invite/{token}) e "Criar conta nova" (vai para registro com e-mail pré-preenchido).
  • Usuário logado com e-mail diferente: alerta informando que o convite é para outro e-mail — é necessário sair e entrar com o e-mail correto.

Usuário com múltiplos workspaces

Um mesmo e-mail pode pertencer a mais de um workspace (ex: funcionário que monitora infraestrutura de dois clientes diferentes). Neste caso, ao fazer login, o codeDB exibe um seletor de workspace. O usuário escolhe em qual workspace quer entrar e pode trocar a qualquer momento refazendo o login.

Gerenciar membros existentes

Na tela Membros, o owner pode:

  • Alterar a role de qualquer membro (ícone de lápis)
  • Remover um membro — o usuário perde o acesso imediatamente
  • Cancelar um convite pendente — o link de convite é invalidado

O owner não pode remover a si mesmo nem alterar sua própria role. Convites são exibidos com o badge Aguardando aceite enquanto pendentes.

Limite de membros por plano

O número máximo de membros (incluindo convites pendentes) depende do plano contratado. Ao atingir o limite, novos convites são bloqueados com sugestão de upgrade. Administradores codeDB podem conceder limites customizados via painel administrativo.


Configurando Alertas

As regras de alerta são configuradas em Configurações → Regras de Alerta. Quando uma condição é atingida, um e-mail é enviado para os membros do ambiente.

Tipos de regras disponíveis

TipoDispara quandoExemplo de threshold
TempDB % de usoUso total do TempDB ≥ threshold (%)80%
Sessão longaQuery em execução ≥ threshold (minutos)30 minutos
TempDB por sessãoUso de TempDB de uma sessão ≥ threshold (MB)500 MB
Jobs com falhaNúmero de SQL Agent Jobs com falha ≥ threshold1
PLE baixoPage Life Expectancy < threshold (segundos)300 s
BloqueiosSessões bloqueadas ≥ threshold1
Crescimento de logArquivo .ldf de qualquer banco cresce ≥ threshold em um ciclo (~5 min)500 MB
Espaço em discoQualquer volume de disco com espaço livre < threshold15%

Supressão de alertas

Para evitar spam de e-mail em situações persistentes, o codeDB aplica supressão automática: após o primeiro disparo, novos e-mails são enviados somente após um número configurável de ciclos de coleta consecutivos sem melhora.


Planos e Assinatura

Trial gratuito

Todo novo cadastro recebe 30 dias de trial gratuito com acesso completo ao plano Professional — sem cartão de crédito, sem compromisso. Ao final do trial, escolha um plano para continuar.

Planos disponíveis

PlanoPreço mensalAmbientesInstânciasMembrosRetenção
StarterR$ 49/mês1327 dias
ProfessionalR$ 149/mês3101030 dias
BusinessR$ 399/mês10303090 dias
EnterpriseSob consultaIlimitadosIlimitadasIlimitadosPersonalizada

Todos os planos pagos oferecem desconto de ~20% na cobrança anual. O gerenciamento de pagamento, troca de plano e histórico de faturas está disponível em Faturamento no portal.

Cancelamento e dados

Você pode cancelar a assinatura a qualquer momento pelo portal. Após o cancelamento, os dados ficam retidos por 30 dias. Durante esse período é possível reativar a assinatura sem perda de histórico. Após 30 dias, os dados são removidos permanentemente.


Regras de Uso

O que o agente coleta

O agente coleta exclusivamente métricas de desempenho e estrutura do SQL Server via DMVs (Dynamic Management Views). Não são coletados dados de negócio armazenados nas tabelas do banco (registros de clientes, transações, etc.).

Dados coletados: uso de TempDB, sessões ativas (com texto da query em execução), estatísticas de I/O, memória, waits, SQL Agent Jobs, detalhes de conexão e estatísticas de queries (query plan hash + SQL text resumido).

Armazenamento e retenção

Os snapshots são armazenados em banco de dados PostgreSQL hospedado na nuvem e retidos pelo período definido no plano contratado (7, 30 ou 90 dias). Após esse período os dados são removidos automaticamente.

Privacidade e LGPD

Os dados de identificação pessoal coletados no cadastro (nome, e-mail, CPF/CNPJ, empresa) são usados exclusivamente para gestão da conta e faturamento. O codeDB não compartilha dados pessoais com terceiros, exceto processadores de pagamento (Stripe).

Para exercer seus direitos de titularidade (LGPD Art. 18): exportação de dados em Configurações → Exportar dados; exclusão de conta em Perfil → Excluir minha conta. Recomendamos ativar o MFA (Perfil → Segurança) para proteção adicional. Consulte a Política de Privacidade para detalhes completos.

Responsabilidades do usuário

  • Manter o agente atualizado para a versão atual recomendada
  • Guardar com segurança o token de agente (ele tem acesso de escrita aos snapshots)
  • Não utilizar a plataforma para monitorar sistemas sem autorização do proprietário
  • Não fazer engenharia reversa do agente ou da API
  • Respeitar os limites de instâncias e ambientes do plano contratado

Disponibilidade e Cobertura de Monitoramento

O codeDB calcula a disponibilidade dos seus ambientes de forma independente da sua própria infraestrutura. Uma eventual indisponibilidade da plataforma codeDB — por exemplo, o banco de dados do SaaS offline — nunca reduz a disponibilidade do seu SQL Server.

As duas métricas

MétricaO que medeImpactado por queda do codeDB?
Disponibilidade (%)Percentual de tempo com SQL Server comprovadamente disponível, sobre o tempo observadoNão
Cobertura de Monitoramento (%)Percentual do tempo total em que o codeDB conseguiu observar o ambienteSim — reduz, mas não penaliza o SLA

Modelo de estados (UP / DOWN / UNKNOWN)

A cada ciclo de coleta, o codeDB classifica o período entre snapshots em um de cinco estados:

EstadoSignificadoImpacta disponibilidade?
UPSnapshot recebido dentro do intervalo esperado (≤ 7,5 min). SQL Server respondendo.Não — estado normal
DOWNReinicialização do SQL Server detectada via instance_start_time. Indisponibilidade comprovada.Sim — conta como downtime real
UNKNOWNGap sem evidência de falha: agente parado, rede instável, causa desconhecida.Não — excluído do denominador
MAINTENANCEPeríodo coberto por uma janela de manutenção planejada pelo tenant.Não — excluído do cálculo
MONITORING_GAPGap durante indisponibilidade registrada da plataforma codeDB.Não — excluído do cálculo

Como a reinicialização é detectada

O agente envia em cada snapshot o valor de instance_start_time — o timestamp de quando o SQL Server foi iniciado. Quando o snapshot seguinte chega com um instance_start_time mais recente, o sistema confirma que houve reinicialização e registra o período como DOWN. Ausência de dados nunca é suficiente para decrementar o SLA.

Exemplo prático — 30 dias

SituaçãoDuraçãoEstado
SQL Server respondendo normalmente43.170 minUP
Reinicialização do SQL Server15 minDOWN
codeDB offline (manutenção da plataforma)240 minMONITORING_GAP
Agente parado (update de servidor)60 minUNKNOWN
Manutenção planejada (janela configurada)120 minMAINTENANCE

Resultado: Disponibilidade = 99,97% · Cobertura = 98,61%. O codeDB foi incapaz de observar o ambiente em 1,39% do tempo — mas isso não penaliza o SLA do cliente.


Janelas de Manutenção

As Janelas de Manutenção permitem registrar antecipadamente períodos em que um ambiente ou instância ficará offline de forma planejada — patches, backups, restart agendado, upgrades de SO, entre outros.

O que acontece durante uma janela

ComportamentoDurante a janela
AlertasSuprimidos automaticamente — nenhum e-mail ou notificação é enviado
DisponibilidadePeríodo excluído do cálculo (estado MAINTENANCE)
Health Score médioPeríodo excluído das médias e histórico
Relatório SemanalPeríodo reportado como manutenção, separado do downtime real

Como criar uma janela

1

Acesse Configurações → Manutenção

No menu lateral, expanda Configurações e clique em Manutenção.

2

Clique em Nova Janela

Preencha título, data/hora de início e fim, ambiente ou instância (opcional) e motivo.

3

Configure os comportamentos

Ative ou desative: suprimir alertas, excluir de disponibilidade e excluir de health score. Por padrão, todos os três estão ativados.

4

Clique em Criar Janela

A janela entra em vigor imediatamente. Janelas históricas (períodos passados) também podem ser cadastradas — o cálculo de disponibilidade é corrigido na próxima consulta ao dashboard.

Boas práticas

  • Crie a janela antes da manutenção para suprimir alertas automaticamente
  • Adicione margem de 30 min antes e depois do horário previsto
  • Use o campo Motivo para facilitar auditoria e contexto no relatório semanal
  • Para remover uma janela histórica, os períodos voltam a ser calculados normalmente na próxima consulta

Apêndice Técnico

Esta seção é destinada a administradores de sistemas e desenvolvedores que precisam de detalhes sobre arquitetura, configuração avançada e integração.

O codeDB é composto por três serviços independentes, cada um com stack e hospedagem próprios:

ServiçoStackHospedagem
codedb-agentPython 3.11 + pyodbc + PyInstaller → .exeServidor do cliente (Windows)
codedb-saas (API)FastAPI + SQLAlchemy async + PostgreSQL + RedisRender (Docker)
codedb-portal (Web)Next.js 15 + MUI + TanStack Query + RechartsVercel

A API expõe endpoints REST protegidos por JWT. O agente autentica via token Bearer específico por ambiente. O portal usa NextAuth.js com access token (15 min) e refresh token (7 dias com rotação automática) em cookies httponly.

Multi-tenancy: todas as tabelas possuem coluna tenant_id. O contexto do tenant é injetado via dependência FastAPI em todas as rotas autenticadas, garantindo isolamento de dados por organização.

O arquivo C:\codeDB-Agent\Config.env contém todas as configurações do agente. Senhas são armazenadas com prefixo ENC: (criptografia Fernet/AES-128 gerenciada pelo Gerenciador de Instâncias).

VariávelTipoExemplo / Padrão
AGENT_TOKENstring (obrigatório)gerado no portal
CODEDB_API_URLURLhttps://monitorsql.onrender.com
DB_SERVERstringSERVIDOR\INSTANCIA
DB_PORTint1433
DB_DRIVERstringODBC Driver 17 for SQL Server
DB_WINDOWS_AUTHbooltrue
DB_USERstringsa (se SQL Auth)
DB_PASSWORDstring (criptografada)ENC:gAAAAA...
COLLECTION_INTERVAL_SECint300 (5 minutos)
LOG_LEVELstringINFO

Para múltiplas instâncias, adicione prefixo INSTANCE_2_, INSTANCE_3_, etc. nas variáveis de cada instância adicional.

Execute os scripts abaixo no SQL Server Management Studio (ou sqlcmd) para conceder as permissões mínimas necessárias ao login do agente:

-- 1. Permissão para consultar as DMVs de monitoramento
USE master;
GRANT VIEW SERVER STATE TO [seu_login_aqui];

-- 2. Permissão para leitura do status dos SQL Agent Jobs
USE msdb;
ALTER ROLE SQLAgentOperatorRole ADD MEMBER [seu_login_aqui];

-- 3. (Opcional) Se usar banco DBAMonitor criado pelo instalador
USE DBAMonitor;
ALTER ROLE db_datareader ADD MEMBER [seu_login_aqui];
ALTER ROLE db_datawriter ADD MEMBER [seu_login_aqui];

Substitua [seu_login_aqui] pelo login SQL criado para o agente. O agente também suporta Autenticação do Windows — nesse caso, a conta de serviço Windows precisa das mesmas permissões acima.

Um único servidor Windows pode monitorar várias instâncias SQL Server. No portal, crie um Ambiente separado para cada instância — cada ambiente terá seu próprio token.

No arquivo Config.env, cada instância adicional usa o prefixo INSTANCE_N_:

# Instância 1 (principal — sem prefixo)
AGENT_TOKEN=token_do_ambiente_producao
DB_SERVER=SERVIDOR\SQL2019
DB_WINDOWS_AUTH=true

# Instância 2
INSTANCE_2_AGENT_TOKEN=token_do_ambiente_homologacao
INSTANCE_2_DB_SERVER=SERVIDOR\SQL2016
INSTANCE_2_DB_WINDOWS_AUTH=false
INSTANCE_2_DB_USER=monitor_user
INSTANCE_2_DB_PASSWORD=ENC:gAAAAA...

O Gerenciador de Instâncias (GUI) cuida automaticamente da geração desses prefixos ao adicionar novas instâncias pela interface.

StatusDescriçãoColeta de dados
trialingPeríodo de trial ativo (30 dias)Ativa
activeAssinatura paga em diaAtiva
past_dueFalha no pagamento — grace period de 10 diasAtiva (temporariamente)
suspendedGrace period expirado — acesso bloqueadoBloqueada
cancelledCancelado — dados retidos por 30 diasBloqueada

Webhooks do Stripe sincronizam automaticamente mudanças de status. O agente verifica o status da licença a cada ciclo de coleta (com cache de 1 hora) — se o tenant estiver suspenso, os snapshots são rejeitados pela API.

O agente verifica periodicamente se há uma versão mais recente disponível via GET /agent/download-info. Quando uma atualização está disponível, um aviso é exibido no portal.

Para atualizar manualmente:

  1. Baixe o novo instalador pelo portal (Configurações → Download do Agente)
  2. Execute o instalador como administrador — ele para o serviço, atualiza os binários e reinicia
  3. As configurações do Config.env são preservadas durante a atualização

A versão mínima suportada é controlada pelo backend. Agentes abaixo da versão mínima têm a coleta bloqueada e exibem alerta no portal para forçar a atualização.

A API pública permite integrar dados do codeDB com sistemas externos. Toda chamada requer autenticação via API Key gerada em Configurações → API Keys.

HeaderValor
X-API-Keycdb_v1_<sua-chave> (recomendado)
AuthorizationBearer cdb_v1_<sua-chave> (alternativo)

GET /api/v1/incidents

ParâmetroTipoPadrãoDescrição
daysinteiro7Janela de busca em dias (1–90)
instance_idUUIDFiltrar por instância específica
environment_idUUIDFiltrar por ambiente
// Exemplo de resposta
{
  "incidents": [
    {
      "id": "a1b2c3d4-...",
      "instance_id": "e5f6g7h8-...",
      "started_at": "2026-06-09T22:34:00+00:00",
      "resolved_at": "2026-06-09T23:02:00+00:00",
      "duration_minutes": 28,
      "status": "resolved",          // "active" | "resolved"
      "max_health_drop": 18,
      "root_cause": {
        "type": "memory_pressure",
        "label": "Pressão de Memória",
        "confidence": "high",        // "high" | "medium" | "low"
        "recommendation": "Verificar MAX SERVER MEMORY..."
      }
    }
  ],
  "total": 1,
  "period_days": 7
}

GET /api/v1/instances

// Exemplo de resposta
{
  "instances": [
    {
      "id": "e5f6g7h8-...",
      "name": "PROD-SQL-01",
      "server_host": "192.168.1.10",
      "is_active": true,
      "agent_last_seen": "2026-06-10T14:55:00+00:00"
    }
  ],
  "total": 1
}

Códigos de resposta

CódigoSignificado
200Sucesso
401API Key ausente, inválida ou revogada
403Escopo insuficiente para o endpoint solicitado
429Rate limit atingido — aguarde antes de tentar novamente

O codeDB implementa um modelo de controle de acesso baseado em roles (RBAC) por tenant. Cada usuário pode pertencer a múltiplos workspaces com roles diferentes em cada um.

Modelo de dados

TabelaResponsabilidade
usersIdentidade global do usuário — e-mail, senha, MFA. Independente de tenant.
tenantsWorkspace/empresa. Contém plano, status e configurações de cobrança.
tenant_membersJunção user ↔ tenant com role. Um usuário pode ter N linhas (um por tenant).
member_invitesConvites pendentes. Armazena e-mail convidado, token, role e expiração. Independente de ter conta prévia.

Roles e permissões por endpoint

OperaçãoRole mínima
Visualizar dashboard, alertas, incidentes, relatóriosanalyst
Criar/editar/deletar ambientes e regras de alertaadmin
Gerar token de agenteadmin
Convidar membrosadmin
Alterar role de membroowner
Remover membroowner
Cancelar convite pendenteadmin
Gerenciar cobrança e assinaturaowner
Cancelar/deletar workspaceowner

Isolamento de dados multi-tenant

Todas as tabelas de dados (environments, instances, snapshots, alerts, incidents) possuem coluna tenant_id. As queries sempre filtram por tenant_id via dependência FastAPI get_current_tenant(), que valida o header X-Tenant-Id e a membership do usuário antes de executar qualquer operação. Não há Row-Level Security no PostgreSQL — o isolamento é feito na camada de aplicação.

Fluxo de convite (backend)

EtapaEndpointO que acontece
Owner envia convitePOST /members/inviteCria registro em member_invites com token de 64 chars (URL-safe) e expiração de 7 dias. Envia e-mail via Brevo/SMTP.
Convidado visita o linkGET /invites/{token}Endpoint público. Retorna nome do tenant, nome do convidante e role. Valida expiração.
Convidado aceitaPOST /invites/{token}/acceptRequer JWT do convidado. Valida e-mail, cria TenantMember, marca invite como aceito.
Novo usuário se cadastraPOST /auth/registerBackend detecta convite pendente para o e-mail → aceita automaticamente em vez de criar novo tenant.

Seleção de workspace no login

O endpoint POST /auth/login retorna a lista completa de tenants do usuário no campo tenants[]. Quando há mais de um, o portal exibe um diálogo de seleção. O tenant escolhido é salvo em sessionStorage como cdb_tenant_id e enviado em todas as requisições via header X-Tenant-Id.

Tokens JWT e tenant_id

O JWT de acesso (15 min) embarca tenant_id e role do primeiro tenant do usuário. Porém, o controle real de acesso é feito via X-Tenant-Idheader — o backend valida a membership em tempo real a cada requisição. O campo do JWT serve apenas como referência inicial para o portal restaurar a sessão após recarga.

Resumo das camadas de segurança e conformidade implementadas na plataforma.

Autenticação e sessão

MecanismoDetalhe
JWT httpOnlyAccess token (15 min) + refresh token (7 dias) em cookies httpOnly — não acessíveis via JavaScript
Rotação de refresh tokenCada uso do refresh token gera um novo par access+refresh; o token anterior é invalidado imediatamente
MFA / TOTPSecret armazenado criptografado (Fernet AES-128, prefixo enc::); TOTP RFC-6238 via pyotp
bcryptSenhas de usuário hasheadas com bcrypt (fator de custo auto-ajustado)

Proteção de dados sensíveis

DadoProteção
Token do agentVerificado via SHA-256; nunca armazenado em texto claro
API KeysArmazenadas como SHA-256 (64 chars hex); reveladas apenas no momento da criação
Pacote de auto-updateSHA-256 publicado via AGENT_PACKAGE_SHA256 no backend; agent verifica antes de aplicar
Senhas no Config.envCriptografia Fernet/AES-128 com prefixo ENC:; gerenciada pelo codeDB Agent Config

Rate limiting

Implementado via slowapi. Endpoints sensíveis têm limite por IP/minuto. Quando o limite é excedido, a API retorna 429 Too Many Requests com header Retry-After. Exemplos de limites: consentimento de cookies (10/min), login e registro (configurável por ambiente de deploy).

Privacidade e anonimização (LGPD)

MedidaDetalhe
IP truncationEndereços IP truncados antes do armazenamento: /24 para IPv4, /48 para IPv6
query_text_modeColuna em environments; valores: full | masked | disabled. Controla se o texto das queries é armazenado.
Exclusão self-serviceDELETE /users/me remove o usuário; DELETE /tenants/{id} purga todos os dados do workspace em cascata
Exportação de dadosPOST /export/request gera ZIP com todos os dados do tenant; disponível por 48h via GET /export/download/{id}
Consentimento de cookiesPOST /consent registra flags (necessary, analytics, marketing) com IP truncado e timestamp

Aceite de Termos (modelo click-wrap)

O aceite dos Termos de Uso e da Política de Privacidade ocorre implicitamente no momento do cadastro — não há contrato separado. A tela /auth/register exibe o aviso: "Ao criar a conta, você concorda com os Termos de Uso e a Política de Privacidade."

DocumentoURL
Termos de Uso/termos
Política de Privacidade/privacidade
Política de Cookies/cookies
codeDB

Monitoramento inteligente de SQL Server com agente local seguro e diagnósticos em tempo real.

ProdutoRecursosPreçosChangelog

© 2026 codeDB. Todos os direitos reservados.

codeDB — Monitoramento de SQL Server | Alertas e Diagnósticos em Tempo Real