Referência
Mapa das crates do Sentry e convenções da referência de API
Referência
Esta seção é a referência de API das crates públicas do Sentry. Ela documenta a superfície que um autor de plugin (traits Source/Action/providers) ou um operador (types de config, repos de storage, runtime da edge) toca — não cada função privada.
Convenções
- Cada item documentado (struct, enum, trait, fn, módulo) leva um link para o fonte no GitHub, com âncora de linha — ex.:
Event. O código é a verdade; aqui vão assinaturas e semântica. - Blocos de código mostram apenas a assinatura (com o doc-comment
///quando ele resume o contrato), nunca o corpo. - A organização é crate → módulo → item:
##para módulos,###para itens. Listas de campos/variantes/métodos usam tabelas quando ficam mais legíveis que prosa. - Pesos de sinal e thresholds documentados são os defaults compilados; quase todos podem ser sobrescritos por config (
[scorer.weights], janelas de trackers etc.). Quando houver override, o valor da config vence.
Páginas
| Página | Conteúdo |
|---|---|
| API do sentry-core | Modelo de domínio (Event, ProtocolData), sinais e vereditos, traits de plugin, rules engine, policy, pipeline, trackers, config |
| API do sentry-edge | EdgeRuntime, middleware/reverse proxy, challenge PoW, páginas de erro, telemetria TLS, compressão, validação de protocolo |
| API do sentry-protocol | DSL de schemas de protocolo, compilador, VM, guards de DoS, feature simd |
| API do sentry-storage | Repositórios Postgres, migrations, dedupe por payload_hash, canais LISTEN/NOTIFY |
Mapa de crates
O workspace tem 19 crates. Toda crate de plugin depende apenas de sentry-core (contratos), nunca de outra plugin; deps pesadas ficam atrás de features opcionais.
| Crate | Papel |
|---|---|
sentry-core | Modelo de domínio (Event, Signal, Verdict), traits Source/Action/ChallengeProvider, rules engine + DSL, heurísticas, trackers, schema de config. Pura: sem I/O. |
sentry-storage | Persistência Postgres (sqlx): pool, migrations e repos tipados (events, incidents, ip_state, rules, routes, datasets). |
sentry-ai | Trait ThreatModel (ONNX via ort, feature opcional), trait LlmProvider (OpenRouter/Ollama) e IpLookupProvider (AbuseIPDB). |
sentry-edge | Edge inline: middleware axum, reverse proxy, listener TCP, frente TLS (feature edge-tls), challenge PoW, páginas de erro, compressão. |
sentry-protocol | DSL YAML que descreve/valida protocolos não-HTTP em portas não padrão; compilador + VM de registradores. Pura, sem dep de sentry-core. |
sentry-geo | Enriquecimento geo/ASN com MaxMindDB local (no-op gracioso sem MMDB). |
sentry-reputation | Feeds de reputação (Tor/Spamhaus/FireHOL) com fetcher guardado contra SSRF e store de prefixos IP. |
sentry-source-nginx | Plugin Source: tail de access.log do nginx com resolução de IP real e rotação. |
sentry-source-syslog | Plugin Source: receptor syslog RFC 5424/3164 (UDP/TCP, framing RFC 6587). |
sentry-source-cloudflare | Plugin Source: polling da Cloudflare Logs API (NDJSON, dedupe por RayID). |
sentry-source-tcp | Plugin Source: captura TCP (feature pcap) + fingerprint SYN estilo MuonFP/p0f. |
sentry-action-cloudflare | ChallengeProvider: block/challenge/rate-limit via API da Cloudflare (access rules + IP Lists). |
sentry-action-webhook | Action: alertas Discord/Slack/etc. assinados com HMAC (X-Sentry-Signature). |
sentry-action-blocklist | Action: blocklist local em memória (espelha vereditos Block na BlockTable). |
sentry-action-firewall | ChallengeProvider: bans de kernel nftables/ipset/firewalld (Linux; DB é fonte da verdade). |
sentry-action-opnsense | ChallengeProvider: bans OPNsense (alias_util REST) e pfSense (pfctl). |
sentry-action-nginx | ChallengeProvider: includes deny/challenge para nginx com reload validado (nginx -t). |
sentry-action-report | Action: report comunitário de abusos (AbuseIPDB/ReportedIP) com dedupe e circuit breaker. |
sentry-cli | O binário sentry: clap + daemon + server HTTP + TUI ratatui + auth + export SIEM + service mode. |
Estabilidade
- MSRV 1.80 (Rust 2021), fixado no
Cargo.tomldo workspace — o piso existe por causa destd::sync::LazyLock. - Sem
unsafe: todas as lib crates declaram#. - A regra de ouro do modelo de dados: o
Eventé modular viaProtocolData— nenhum consumidor assume que um evento é HTTP. Novos protocolos entram como variantes do enum, nunca como campos soltos. - Features pesadas ficam opcionais e desligadas por default:
onnx(inferência local),edge-tls(frente HTTPS),edge-zstd,pcap,rate-redis,service. A superfície documentada aqui existe independente delas, salvo indicação.
Referência de Configuração (sentry.toml)
Todas as seções do sentry.toml — campos, tipos, valores padrão e exemplos, conforme o schema em crates/sentry-core/src/config.rs.
API — sentry-core
Referência da API pública do sentry-core: modelo de domínio, sinais, traits de plugin, rules engine, policy, pipeline e trackers