SentrySentry
CLI & TUI

Referência de Comandos

Todos os subcomandos da CLI sentry: flags, defaults, exemplos e variáveis de ambiente

Referência de Comandos

A CLI é definida com clap (derive) em cli.rs e despachada para os handlers em cmd.rs. Toda a documentação abaixo foi verificada contra essas definições.

Convenções: placeholders entre crases (<ip>, <path>); durações aceitam o formato 24h, 7d, 30m. Quase todo subcomando carrega o arquivo de config (e muitos exigem Postgres em storage.postgres.url).

Flags globais

FlagDescrição
--config <path>Caminho do config. Default: sentry.toml no cwd ou /etc/sentry/sentry.toml. Também via env SENTRY_CONFIG.
-v / -vv / -vvvVerbosidade do log: info, debug, trace.

Monitor / daemon

sentry run

Inicia o daemon em foreground: fontes → pipeline (regras → heurísticas → IA/LLM) → actions, hot-reload via LISTEN/NOTIFY, tarefas de prune e servidor de métricas Prometheus. Handler em daemon.rs.

sentry run

sentry serve

Dashboard web (SPA sem build-step) + API JSON num processo separado. Exige Postgres. Bind e auth vêm de [server]: host (default 127.0.0.1), port (default 8080), auth.mode = "none"|"password"|"token"|"both" com RBAC (admin muta, viewer só lê). Handler em server.rs.

Endpoints: / (dashboard), /api/health, /api/login, /api/logout, /api/me, /api/events, /api/stats, /api/incidents (+ /{id}/ack e /{id}/resolve), /api/ips/blocked (+ /{ip}/block, /{ip}/unblock, /{ip}/forgive).

sentry serve

Observação ao vivo

sentry tail

Live tail de eventos direto do Postgres. Abre a TUI interativa quando o stdout é um TTY; fora de TTY (ou com --stream) imprime uma linha por evento. Implementação em tui/mod.rs e tui/stream.rs.

FlagDefaultDescrição
--only <levels>(tudo)Filtra por nível, separado por vírgula (ex.: High,Critical).
--tuioffForça o modo TUI fullscreen.
--streamoffForça o modo não-interativo (uma linha por evento).
--theme <t>darkTema de cor: dark, light ou mono.
--jsonoffCom --stream: um objeto JSON por evento (JSONL).
sentry tail --only High,Critical --theme mono
sentry tail --stream --json | jq 'select(.level == "critical")'

Incidentes

sentry incidents

Lista e inspeciona incidentes não resolvidos. Handler em cmd.rs. Ack/resolve acontecem pela API HTTP (POST /api/incidents/{id}/ack e /{id}/resolve) ou pelo dashboard.

SubcomandoDescrição
listÚltimos 50 incidentes não resolvidos.
show <id>Detalhe de um incidente (UUID); busca entre os não resolvidos.
sentry incidents list
sentry incidents show 6ba7b810-9dad-11d1-80b4-00c04fd430c8

IP

sentry ip

Inspeciona ou block/unblock um IP. O IP é posicional e vem antes do subcomando; sem subcomando equivale a info. Blocks notificam sentry_blocks_changed (daemon e edge aplicam em segundos). Handler em cmd.rs.

SubcomandoDescrição
info (default)Estado de bloqueio, motivo, expiração, strikes e violações totais.
block [--ttl <dur>] [--note <texto>]Bloqueia (opcionalmente com expiração).
unblockRemove o bloqueio.
forgiveZera os strikes (memória de reincidente); histórico mantido.
sentry ip 203.0.113.7 info
sentry ip 203.0.113.7 block --ttl 24h --note "scanner"
sentry ip 203.0.113.7 forgive

Rotas

sentry routes

Rotas conhecidas (config ∪ banco). Handler em cmd.rs; importadores em routes_import.rs.

SubcomandoDescrição
listLista as rotas do banco (ou as de config, se o banco estiver vazio).
learn [--dry-run] [--min-hits 10] [--min-ips 2]Infere shapes estáveis das últimas rotas a partir dos eventos recentes e persiste as novas.
import <path> [--format <fmt>] [--dry-run]Importa rotas de OpenAPI/Swagger 2/3, Postman v2.1 ou HAR. --format: openapi, swagger, postman, har, auto (default: auto-detecta).
sentry routes learn --min-hits 20 --min-ips 3
sentry routes import openapi.yaml --dry-run

Auto-detecção

sentry auto

Detecta frameworks/rotas e gera sentry.auto.toml (rotas conhecidas + packs + regras sugeridas). Detecção na crate sentry-auto; orquestração e sonda HTTP em auto.rs.

  • Com path (sentry auto /var/www/app): escaneia a árvore do projeto (walk limitado) e extrai rotas dos perfis nginx, WordPress, Laravel, Next.js e Express.
  • Sem path: roda tudo sozinho — lê configs de servidor no disco (/etc/nginx, sites-enabled/conf.d) e sonda o serviço local nas portas 80/443 (robots.txt, sitemap.xml e ~60 paths comuns; uma path sentinela aleatória descarta catch-all/SPA fallback).
  • Módulos opt-in: passe --probe e/ou --disk para rodar só um deles; sem flags, ambos rodam.
  • Saída: tabela METHODS | PATH + frameworks detectados e o sentry.auto.toml gravado ao lado do sentry.toml resolvido. Se nada for encontrado, o comando não imprime nada (exit 0) e não escreve arquivo.

O arquivo gerado é carregado em cascata automaticamente: em todo load de config, routes.known, rules.pack e rules.custom do sentry.auto.toml são anexados com dedupe — o que você tem no sentry.toml sempre vence (não há --merge; a cascata substitui o flag).

FlagDefaultDescrição
[ROOT](nenhum)Raiz do projeto a escanear; sem ela, sonda o serviço local (80/443) + configs de disco.
--probeoffOpt-in: só a sonda HTTP local.
--diskoffOpt-in: só a detecção de configs em disco.
--profile <nome>(auto)Força um perfil (wordpress, laravel, nextjs, express, nginx), pulando a detecção.
--deepoffVarre a árvore inteira com regex (não só arquivos canônicos). AST com tree-sitter segue no backlog.
--dry-runoffSó imprime; não grava sentry.auto.toml.
-v / -vvoffVerbosidade: árvore escaneada e versões (-v); detalhe por arquivo/request (-vv).
sentry auto                        # tudo: disco + sonda 80/443
sentry auto /var/www/app --dry-run # só vê o que seria detectado
sentry auto --disk                 # sem gerar tráfego: lê configs do disco
sentry auto --profile wordpress    # força o perfil e sonda paths de WP

Rules engine

sentry rules

CRUD de regras custom no banco + visão dos packs de config. Mudanças notificam sentry_rules_changed (hot-reload sem restart). Handler em cmd.rs.

SubcomandoDescrição
listRegras do banco + packs declarados em [rules] (nome = modo).
show <id>Detalhe de uma regra (match, action, prioridade, ttl, tags).
add --name <nome> --match <dsl> --action <ação> [--priority 100]Cria/atualiza uma regra custom (DSL do rules engine).
allow <ip> [--ttl <dur>] [--note <texto>]Cria regra de allowlist para o IP (prioridade 1).
block <ip> [--ttl <dur>] [--note <texto>]Cria regra de blocklist para o IP.
enable <id> / disable <id>Liga/desliga uma regra.
delete <id>Remove uma regra.
packsLista os packs default embutidos e o modo efetivo de cada um.
test [--path /] [--method GET] [--ip <ip>] [--ua <ua>]Simula quais regras bateriam nessa forma de request.
sentry rules add --name "block admin scan" \
  --match 'path starts_with "/admin" AND country = "RU"' --action block
sentry rules test --path /.env --ua "sqlmap/1.0" --ip 203.0.113.7

Reputation feeds

sentry feeds

Feeds de reputação configuradas em [[rules.feeds]] (Tor, Spamhaus, FireHOL, datasets…). Handler em cmd.rs.

SubcomandoDescrição
listNome, kind, tier, refresh e URL de cada feed.
refreshBusca todas as feeds uma vez e mostra contagens (não precisa de daemon).
check <ip>Atualiza as feeds e consulta o IP contra elas.
sentry feeds check 203.0.113.7

Datasets

sentry datasets

Datasets DB-backed (listas de User-Agent, path ou JA3) que viram regras sintéticas dataset:<nome> e alimentam o prefilter dinâmico. Handlers em cmd.rs e datasets.rs.

SubcomandoDescrição
listNome, kind, contagem de entradas e estado.
import <path> --kind <k> --name <nome> [--action log] [--dry-run]Importa lista (arquivo ou URL http(s)), uma entrada por linha, substituindo o nome existente. --kind: user_agent, path ou ja3; --action: allow, block, challenge, rate_limit, log (default) ou tag.
enable <nome> / disable <nome>Liga/desliga sem apagar (daemons em execução hot-reloadam via NOTIFY).
delete <nome>Apaga o dataset.
fetchRe-busca a source_url de todo dataset habilitado e mostra as novas contagens.
sentry datasets import bad-bots.txt --kind user_agent --name bad-bots --action block --dry-run

Trusted IPs

sentry trusted

Presets de IPs confiáveis embutidos para [real_ip] trusted_lists. Handler em cmd.rs.

SubcomandoDescrição
listPresets disponíveis e quais estão aprovados no config.
sentry trusted list

Firewall

sentry firewall

Inspeção dos backends de ban de kernel. Handler em cmd.rs. Linux-only (fora do Linux, reporta indisponível).

SubcomandoDescrição
statusDetecta nftables/ipset/firewalld, privilégios e tamanhos dos sets ao vivo.
sentry firewall status

Verificação de bots

sentry bots

Verificação rDNS de crawlers (F7.10) — PTR nos domínios do engine + forward-resolve de volta ao IP. Usa o resolver do sistema, sem daemon. Handler em cmd.rs e botdns.rs.

SubcomandoDescrição
check <ip> --ua <ua>Verifica se o IP é realmente o crawler que o User-Agent alega.
sentry bots check 66.249.66.1 --ua "Googlebot/2.1"

Protocolos

sentry protocol

Validação e inspeção dos schemas do DSL de protocolos (F9). Handlers em protocol_cmd.rs.

SubcomandoDescrição
validate [dir]Compila todo *.protocol.yaml do diretório e reporta erros. Default: [protocol] dir.
list [dir]Lista protocolos compilados: portas, mensagens e policies.
check <schema> --hex <hex>Valida um frame bruto (hex) contra um schema.
sentry protocol validate
sentry protocol check schemas/game.protocol.yaml --hex 0001ff

Auth helpers

sentry auth

Gera os hashes usados em [server.auth]. Handlers em auth.rs.

SubcomandoDescrição
hash-password <senha>Hash Argon2id (formato PHC) para [[server.auth.users]].
token-hash <token>Hex SHA-256 do token para [[server.auth.tokens]].
sentry auth hash-password "s3cret!"

Serviço do OS

sentry service

Instala o daemon como serviço do sistema: systemd (/etc/systemd/system/sentry.service), launchd (~/Library/LaunchAgents/com.sentry.daemon.plist) ou Windows Service real (SCM). O serviço executa sentry run. Handler em service.rs.

SubcomandoDescrição
install [--user <u>] [--workdir <dir>]Instala e inicia (--user só systemd; segredos vêm do ambiente).
uninstallPara e remove o serviço.
statusCaminhos instalados + status ao vivo (best-effort).
sentry service install --user sentry --workdir /etc/sentry

Relatórios

sentry report

Relatório agregado do Postgres: eventos por nível e verdict, top IPs e top paths. Handler em cmd.rs.

FlagDefaultDescrição
--from <dur>24hJanela retroativa (ex.: 24h, 7d).
--export <fmt>(texto)json ou csv no stdout.
--unknown-pathsoffTop paths sem rota conhecida (UnknownRoute) — candidatos a [[routes.known]].
sentry report --from 7d --export csv
sentry report --unknown-paths

sentry posture

Postura de segurança web (F11): parte 1 é um checklist de config (TLS, redirect HTTP→HTTPS, posture habilitado); parte 2 agrega os advisories de headers observados nas respostas do site protegido (edge inline, shadow), com dica de remediação por linha. Handler em cmd.rs; checks em posture.rs.

FlagDefaultDescrição
--from <dur>24hJanela retroativa dos advisories observados.
sentry posture --from 24h

Export SIEM

sentry export

Exporta eventos crus em CEF, LEEF 2.0 ou JSON para consumo por SIEM. Serializadores em siem.rs.

FlagDefaultDescrição
--from <dur>24hJanela retroativa inicial.
--format <fmt>cefcef, leef ou json.
--out <file>(stdout)Escreve em arquivo em vez do stdout.
--followoffContinua seguindo eventos novos após a janela inicial.
--to <target>(—)Com --follow: encaminha por syslog para udp://host:514 ou tcp://host:514.
sentry export --from 7d --format leef --out sentry.leef
sentry export --follow --to udp://siem.internal:514

Config

sentry config

Valida ou imprime a config resolvida. Handler em cmd.rs.

SubcomandoDescrição
validateCompila regras custom e schemas de protocolo, rejeita [posture] mode = "enforce", emite os advisories de edge e imprime o resumo.
showImprime a config resolvida (TOML + overlay de env).
sentry config validate

Modelo de IA

sentry model

Ciclo de vida do modelo ONNX clássico. Handler em cmd.rs.

SubcomandoDescrição
statusProvider, modo (fork/inline/shadow), trigger, threshold, modelo carregado (exige build com --features onnx para carregar de verdade).
reloadPublica NOTIFY sentry_model_changed — o daemon re-lê o ONNX a quente (exige Postgres).
export [--hours 720] [--out dataset.csv] [--synthetic] [--rows 4000] [--confirmed]Exporta features em CSV (extraídas pelo Rust — paridade treino/inferência). --synthetic gera dataset semente sem Postgres; --confirmed usa incidentes como label positivo.
sentry model export --synthetic --rows 8000 --out seed.csv
python tools/train_model.py --csv seed.csv
sentry model reload

Cloudflare

sentry cloudflare

Integração com o Cloudflare (credenciais via SENTRY_CF_TOKEN, SENTRY_CF_ZONE e opcionalmente SENTRY_CF_ACCOUNT). Handler em cmd.rs.

SubcomandoDescrição
statusValida o token, mostra zone/account, contagem de access rules do sentry e IP List.
testVerificação dry-run do token + zone (não altera nada).
pullLista as access rules criadas pelo sentry no edge (best-effort).
sentry cloudflare status

Teste isolado

sentry test

Roda o pipeline (regras + heurísticas + scorer) sobre um payload isolado, sem rede nem banco. Handler em cmd.rs.

FlagDefaultDescrição
--path <p>/Path simulado.
--method <m>GETMétodo simulado.
sentry test "1' OR '1'='1" --path /login --method POST

Benchmarks

sentry bench

Harness de avaliação de providers. Handler em bench_llm.rs.

SubcomandoDescrição
llm [--providers jev,mock] [--events <file>] [--format <log_format>] [--n 0] [--concurrency 4] [--out <file>]Compara providers de classificação (LLM / jev / mock) em latência, concordância com o pipeline heurístico, qualidade e custo. --events aceita access.log do nginx ou .jsonl de eventos; --n 0 = todos.
sentry bench llm --providers jev,openrouter,ollama --n 200

Variáveis de ambiente

Segredos nunca vão no config commitado — via ambiente. Além da tabela, toda chave de config pode ser sobrescrita por env com o prefixo SENTRY_ e aninhamento __ (ex.: SENTRY_STORAGE__POSTGRES__URL); o overlay é implementado em config.rs.

VariávelUsoLida em
SENTRY_CONFIGCaminho do config (equivale a --config).cli.rs
SENTRY_STORAGE__POSTGRES__URLURL do Postgres.config.rs
SENTRY_CF_TOKENToken de API do Cloudflare (actions + CLI + TUI).cmd.rs, daemon.rs
SENTRY_CF_ZONEZone id do Cloudflare.cmd.rs
SENTRY_CF_ACCOUNTOverride do account id (derivado do zone quando ausente).cmd.rs, lists.rs
SENTRY_LLM_KEYChave do OpenRouter ([llm]).daemon.rs
SENTRY_JEV_KEYChave do provider LLM jev (fallbacks TYPESAFE_API_KEY / JEV_API_KEY).jev.rs
SENTRY_SESSION_SECRETChave HMAC da sessão do dashboard ([server.auth] session_secret_env).config.rs (core)
SENTRY_WEBHOOK_SECRETHMAC do payload de webhook ([server] webhook_secret_env e action webhook).config.rs (core), daemon.rs
SENTRY_EDGE_CHALLENGE_SECRETSegredo do PoW do JS challenge (obrigatório com [edge.challenge] enabled).config.rs (core)
SENTRY_ABUSEIPDB_KEYAbuseIPDB ([ip_lookup] e action report).config.rs (core)
SENTRY_REPORTEDIP_KEYChave da action report (provider reportedip).lib.rs (report)
SENTRY_OPN_API_KEY / SENTRY_OPN_API_SECRETCredenciais REST do OPNsense.lib.rs (opnsense)

On this page