Depure regras criadas com Rules Engine
Ative Debug Rules em uma aplicação e leia as regras que cada requisição executou na GraphQL API, no Data Stream ou no Real-Time Events.
Você pode ativar Debug Rules em uma aplicação pelo Azion Console e, em seguida, ler quais regras do Rules Engine cada requisição executou. GraphQL API, Data Stream e Real-Time Events retornam esse registro. Uma regra que não aparece no registro não rodou na requisição.
Um firewall tem a própria configuração Debug Rules, na aba Main Settings do firewall. As regras dele chegam ao mesmo registro apenas enquanto o firewall está ativo.
Pré-requisitos
- Uma aplicação com pelo menos uma regra ativa, servida por um workload. Para criar os dois, consulte Primeiros passos com Applications.
- Acesso ao Azion Console. Para entrar, consulte Como acessar o Azion Console.
- Para a GraphQL API, um personal token. Para criar um, consulte Como criar um personal token.
Ative Debug Rules
Debug Rules fica desativado quando você cria uma aplicação. Na API, a configuração é o boolean debug da aplicação. No Azion Console, o toggle Debug Rules da aba Main Settings define essa configuração.
Para ativar Debug Rules no Azion Console:
Acesse Azion Console > Applications e selecione a aplicação.
Na seção Debug Rules, ative o toggle Debug Rules.
O campo debug da aplicação fica true, e a aplicação registra as regras que cada requisição executa. Para as outras configurações da aba, consulte Main Settings.
Consulte o registro com a GraphQL API
A GraphQL API do Real-Time Events retorna o registro das regras executadas no campo stacktrace do dataset workloadEvents. Esse dataset contém os eventos das requisições HTTP para as suas aplicações. Esta consulta lê 10 eventos da janela de tempo em tsRange, em ordem crescente de ts. Defina begin e end com a janela que você quer ler:
No Postman ou em outro cliente GraphQL, envie a consulta em uma requisição POST para https://api.azion.com/v4/events/graphql. A requisição carrega o header Authorization: Token [TOKEN VALUE] e um corpo JSON com a consulta na chave query.
Cada evento da resposta carrega os quatro campos que a consulta seleciona:
| Campo | O que contém |
|---|---|
ts | O horário em que a requisição começou |
remoteAddress | O endereço IP do cliente que enviou a requisição |
requestUri | A URI da requisição |
stacktrace | As regras que rodaram na requisição |
A resposta lista os eventos em data.workloadEvents. Cada stacktrace é uma string JSON que agrupa os nomes das regras pelo lugar onde as regras rodaram. edge_application_request contém as regras de Request Phase da aplicação, e edge_application_response contém as regras de Response Phase dela. edge_firewall contém as regras do firewall. Uma requisição que passou por um firewall e por uma aplicação pode carregar as três chaves em uma única string.
Envie o registro com Data Stream
Data Stream envia o registro das regras executadas para um endpoint seu, na variável $traceback dos eventos que coleta das aplicações. Crie um stream cuja fonte sejam as suas aplicações, com um template personalizado cujo data set contenha $traceback, como este data set:
| Variável | O que contém |
|---|---|
$time | A data e o horário da requisição, como Oct. 31st, 2022 - 19:30:41 |
$traceback | Os nomes das regras do Rules Engine, da aplicação e do firewall, que rodaram na requisição |
Um stream coleta os eventos dos workloads aos quais está associado. Em uma conta que ainda usa Domains legados, ele coleta, em vez disso, os eventos dos domínios que nomeia. O stream entrega os eventos ao connector definido como destino dele, enquanto o stream está ativo. Para confirmar que o stream chega ao seu endpoint, busque as entregas dele em Real-Time Events.
Encontre o registro no Real-Time Events
Real-Time Events mostra o registro das regras executadas no Azion Console, sem stream e sem consulta. Cada evento de uma requisição HTTP carrega o registro em $traceback, com as mesmas chaves de stacktrace na GraphQL API.
Para encontrar o registro no Azion Console:
Acesse Azion Console > Real-Time Events.
O campo $traceback do evento lista, por chave, os nomes das regras que rodaram nessa requisição.
Uma regra de firewall que aplica WAF permite que as outras regras do firewall rodem junto com ela. Por isso, o registro pode listar mais regras de firewall para uma requisição bloqueada pelo WAF, e o bloqueio continua valendo. Para todos os campos de um evento de requisição HTTP, consulte Real-Time Events.