SpyGlass — Captura de requests HTTP
O plugin SpyGlass (spyglass) registra em arquivo de log todos os requests HTTP recebidos pelo ACCELERO. Para cada requisição que entra, ele grava o horário, o usuário logado (quando houver), o método HTTP e o path acessado. Existe exclusivamente para diagnóstico técnico — por exemplo, investigar qual rota está sendo chamada, em que ordem, e por qual operador.
Este plugin é uma ferramenta interna de debug, sem interface de usuário, telas de configuração ou itens de menu. Ele apenas escuta o tráfego de entrada e escreve um arquivo de log no servidor. Deve ser instalado pela equipe técnica da IONGRADE quando há necessidade de auditar os requests recebidos — e desinstalado depois. Não é um recurso voltado ao cliente final.
O SpyGlass grava uma linha por request recebido, sem rotação automática nem limite de tamanho. Em ambientes com tráfego intenso o arquivo de log cresce rapidamente. Use de forma temporária durante uma investigação e limpe o log ao terminar (ver Limpar o log).
Disponibilizado como plugin (spyglass), instalado e habilitado pela equipe técnica da IONGRADE. Por ser uma ferramenta de diagnóstico, normalmente é ativado de forma temporária durante uma investigação.
Versão atual do plugin: 0.0.1 — compatível com ACCELERO 2.16.1.
O que o plugin faz
Quando instalado e ativo, o plugin registra um listener no evento de request recebido do ACCELERO. A cada requisição HTTP que entra no sistema, ele acrescenta uma linha ao arquivo de log. Nenhuma ação do operador é necessária — o registro acontece automaticamente em segundo plano.
| Funcionalidade | O que acontece no ACCELERO |
|---|---|
| Captura de requests | Cada requisição HTTP recebida gera uma linha no log com horário, usuário, método e path |
| Identificação do usuário | Se houver um operador logado no momento do request, o nome do usuário é gravado; caso contrário, o campo fica vazio |
| Download do log | Uma rota dedicada (/spyglass/logs) devolve o conteúdo acumulado em formato de arquivo para download |
| Limpeza do log | Uma rota dedicada (/spyglass/clearlogs) apaga o arquivo de log do servidor |
Útil para entender o que está chegando ao servidor em uma janela de tempo — sequência de chamadas, rotas inesperadas, qual operador disparou determinada ação — sem precisar habilitar XDebug ou ler logs de servidor web. Para depuração passo a passo do código, veja Debuggar em produção.
Dados capturados
Cada request recebido gera uma linha no log com os seguintes campos:
| Campo | Conteúdo |
|---|---|
timestamp | Data e hora do request, no formato Y-m-d H:i:s |
usuario | Nome do operador logado no momento do request; vazio quando não há sessão autenticada |
method | Método HTTP da requisição (GET, POST, etc.) |
path | Caminho (path) da URL requisitada |
O SpyGlass registra apenas os quatro campos acima. Ele não grava parâmetros de query string, corpo da requisição, cabeçalhos, IP de origem ou resposta. É um registro leve do tráfego de entrada, não um dump completo.
Onde ficam os logs
Os registros são gravados em um arquivo no diretório temporário privado do servidor:
<TMP_DIR_PRIVATE>/spyglass_logs.txt
O arquivo é acumulativo: novas linhas são sempre acrescentadas ao final, até que o log seja limpo manualmente.
Não há retenção configurável, rotação ou expiração automática. O arquivo cresce indefinidamente enquanto o plugin estiver ativo, e só é zerado pela rota de limpeza ou removendo o arquivo manualmente do servidor.
Como acessar os logs
O plugin expõe duas rotas HTTP. Ambas exigem a permissão master — apenas um operador com esse nível consegue baixar ou limpar o log.
Baixar o log
Rota: GET /spyglass/logs
Retorna o conteúdo acumulado como arquivo para download (spyglass.txt). O conteúdo é montado a partir das linhas do log: a primeira linha define os cabeçalhos das colunas (timestamp, usuario, method, path) e cada linha seguinte vira um registro.
Se o arquivo de log não existir ou estiver vazio, a rota responde com conteúdo vazio.
Exemplo do arquivo spyglass.txt baixado, mostrando as colunas timestamp, usuario, method e path com algumas linhas de tráfego real.
Limpar o log
Rota: GET /spyglass/clearlogs
Apaga o arquivo spyglass_logs.txt do servidor, zerando o histórico de captura. Use ao concluir uma investigação para liberar espaço em disco.
Ative o plugin, reproduza o cenário que deseja investigar, baixe o log por GET /spyglass/logs, analise e em seguida limpe com GET /spyglass/clearlogs. Se a investigação terminou, desinstale o plugin.
Como funciona internamente
- O plugin registra um
EventListenerno eventorequest_incomingdo ACCELERO (canalspyglass_request_incoming). Esse listener é disparado a cada requisição recebida. - Para cada request, o listener tenta obter o operador logado. Se não houver sessão (
NotLoggedInException), o campo de usuário fica nulo. - Os quatro campos são serializados em JSON e acrescentados ao arquivo de log com
FILE_APPEND— uma linha JSON por request. - O
SpyGlassControllerexpõe as açõeslogs(download) eclearLogs(limpeza), ambas protegidas pela checagem de permissãomaster. - O download usa o
CSVGeneratordo núcleo para transformar as linhas JSON em um arquivo tabular de saída.
O post_install.php invalida o cache de descoberta de rotas (RouteDiscovery) ao instalar o plugin, garantindo que as rotas /spyglass/logs e /spyglass/clearlogs passem a responder imediatamente após a instalação.
Casos de uso
Investigar uma sequência de chamadas
- Instalar e habilitar o plugin
spyglassno ambiente sob investigação. - Limpar o log com
GET /spyglass/clearlogspara começar com um arquivo limpo. - Reproduzir a ação ou cenário a investigar (ex.: um fluxo de tela que apresenta comportamento estranho).
- Baixar o log com
GET /spyglass/logse analisar a sequência demethod+path, com horários e usuário. - Limpar o log e desinstalar o plugin ao concluir.
Identificar qual operador disparou um request
- Com o plugin ativo, baixar o log por
GET /spyglass/logs. - Localizar o
pathde interesse e conferir a colunausuarioda mesma linha (e otimestamp). - Linhas com
usuariovazio indicam requests sem operador logado (ex.: rotas públicas ou anteriores ao login).
Boas práticas
- Uso temporário: ative apenas durante a investigação e desinstale logo depois — o log cresce sem limite.
- Limpe antes e depois: comece com o log zerado para isolar o cenário, e limpe ao final para não deixar dados residuais no servidor.
- Permissão master: garanta que apenas operadores
masterda IONGRADE tenham acesso às rotas de download e limpeza. - Atenção ao disco: em ambientes de tráfego alto, monitore o tamanho de
spyglass_logs.txtpara não esgotar o espaço do diretório temporário.
Troubleshooting
As rotas /spyglass/logs e /spyglass/clearlogs retornam 404
Possíveis causas:
- Plugin não instalado ou não habilitado.
- Cache de rotas não foi invalidado.
Solução:
- Confirme que o plugin
spyglassestá instalado e ativo. - Reexecute o
post_install.php(ou limpe o cache de rotas) para forçar a redescoberta das rotas.
As rotas retornam erro de permissão
Possível causa: o operador autenticado não possui a permissão master.
Solução: acesse com um operador que tenha o nível master. As duas rotas são restritas a esse perfil.
O log fica vazio mesmo com tráfego no sistema
Possíveis causas:
- O plugin não está habilitado, então o listener
request_incomingnão está registrado. - O arquivo de log foi limpo recentemente.
Solução:
- Confirme que o plugin está ativo e que o evento
request_incomingestá sendo emitido pelo ACCELERO. - Gere alguns requests e baixe o log novamente por
GET /spyglass/logs.
Ferramentas internas relacionadas
- Debuggar em produção — quando o registro de requests não basta e é preciso depurar o código passo a passo com XDebug.
- Logger de mensagens de facial — ferramenta interna análoga, voltada ao diagnóstico das mensagens trocadas com o gateway facial.
- Rotas HTTP — como o ACCELERO descobre e registra rotas de plugins.
Próximos Passos
- Debuggar em produção — depuração passo a passo com XDebug
- Logger de mensagens de facial — outra ferramenta interna de diagnóstico
- Rotas HTTP — descoberta e registro de rotas