---
name: azion-depure-regras-criadas-com-rules-engine
description: >-
  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.
---

# Depure regras criadas com Rules Engine

Você pode ativar Debug Rules em uma [aplicação](/pt-br/documentacao/plataforma/applications/) pelo Azion Console e, em seguida, ler quais regras do [Rules Engine](/pt-br/documentacao/plataforma/applications/rules-engine/) cada requisição executou. [GraphQL API](/pt-br/documentacao/devtools/graphql/visao-geral/), [Data Stream](/pt-br/documentacao/plataforma/data-stream/) e [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/) retornam esse registro. Uma regra que não aparece no registro não rodou na requisição.

Um [firewall](/pt-br/documentacao/plataforma/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](/pt-br/documentacao/plataforma/workloads/). Para criar os dois, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).
- Acesso ao Azion Console. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).
- Para a GraphQL API, um personal token. Para criar um, consulte [Como criar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).

---

## 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:

1. **Abra a aplicação**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** e selecione a aplicação.

2. **Selecione a aba Main Settings**

3. **Ative Debug Rules**

   Na seção **Debug Rules**, ative o toggle **Debug Rules**.

4. **Selecione Save**

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](/pt-br/documentacao/plataforma/applications/main-settings/#debug-rules).

---

## 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`](/pt-br/documentacao/devtools/graphql/recursos/#datasets). 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:

```graphql
query HttpQuery {
  workloadEvents(
    limit: 10,
    filter: {
      tsRange: {begin:"2023-02-14T10:10:10", end:"2023-02-15T10:10:10"}
    }
    orderBy: [ts_ASC]
  )
  {
    ts
    remoteAddress
    requestUri
    stacktrace
  }
}
```

No [Postman](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-graphql-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](/pt-br/documentacao/plataforma/data-stream/endpoints/) 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:

```json
{
    "time": "$time",
    "traceback": "$traceback"
}
```

| 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](/pt-br/documentacao/guias/plataforma/observabilidade/data-stream-associar-workloads/). Em uma conta que ainda usa [Domains](/pt-br/documentacao/plataforma/workloads/domains/) legados, ele coleta, em vez disso, os eventos dos [domínios que nomeia](/pt-br/documentacao/guias/plataforma/observabilidade/data-stream-associar-workloads/). 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](/pt-br/documentacao/plataforma/real-time-events/fontes-de-dados/#data-stream).

---

## 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:

1. **Abra Real-Time Events**

   Acesse [Azion Console](https://console.azion.com/) > **Real-Time Events**.

2. **Abra a fonte de dados de requisições HTTP**

3. **Defina um intervalo de tempo que contenha requisições para a aplicação**

4. **Abra um evento de uma requisição para a aplicação**

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](/pt-br/documentacao/plataforma/real-time-events/fontes-de-dados/#http-requests).

---

## Próximos passos

- [Main Settings](/pt-br/documentacao/plataforma/applications/main-settings.md#debug-rules): A configuração Debug Rules e o campo de API dela, com as outras configurações de uma aplicação.
- [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine.md): As fases, os critérios e os behaviors das regras que o registro nomeia.
- [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events.md): As fontes de dados e os campos dos eventos que carregam o registro.
- [Solucionar problemas de Applications](/pt-br/documentacao/plataforma/applications/solucao-de-problemas.md): Os sintomas que uma aplicação pode mostrar e como rastrear cada um até uma regra ou uma configuração.
