---
name: azion-consulte-dados-do-bot-manager-com-graphql
description: >-
  Leia as contagens de classificação que o Bot Manager produziu, com uma consulta ao dataset botManagerMetrics no GraphiQL Playground.
---

# Consulte dados do Bot Manager com GraphQL

Você lê as contagens de classificação do seu tráfego de bots no dataset `botManagerMetrics`, no GraphiQL Playground ou a partir de qualquer cliente GraphQL que envie as suas credenciais.

`botManagerMetrics` agrega as requisições que o [Bot Manager](/pt-br/documentacao/plataforma/firewall/#bot-manager) analisou, tenha ele as identificado como bots ou como tráfego legítimo, e as agrupa pela ação, pela categoria, pelo modo e pelo veredito de cada uma. O dataset é retido por 2 anos, então um intervalo de tempo pode alcançar até esse ponto.

Ele carrega contagens, não requisições. Não existe campo de pontuação nele, porque uma pontuação pertence a uma única requisição e é escrita na linha do log de report, que [Logs](/pt-br/documentacao/plataforma/firewall/bot-manager/logs/) documenta. O segundo dataset do Bot Manager, `botManagerBreakdownMetrics`, carrega as URLs que o tráfego de bots alcançou e os endereços de onde ele veio, e é retido por 60 dias. Para mais informações, consulte [Consulte as URLs mais atingidas por bots com GraphQL](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-dados-bot-manager-breakdown-com-graphql/).

---

## Pré-requisitos

- Uma assinatura do Bot Manager na sua conta. O dataset não é recuperável sem uma.
- Uma sessão Azion autenticada no navegador em que você abre o Playground. Uma requisição que não carrega sessão devolve uma mensagem de erro.
- Acesso ao [GraphiQL Playground](/pt-br/documentacao/devtools/graphql/playground-graphql/).
- Um personal token, caso prefira enviar a consulta a partir de um cliente GraphQL. A chamada então carrega o cabeçalho `Authorization: Token [TOKEN VALUE]`. Para mais informações, consulte [Personal Tokens](/pt-br/documentacao/fundamentos/personal-tokens/).

---

## Consulte as contagens de classificação

A consulta filtra o dataset por um intervalo de tempo, soma `requests` por grupo e devolve um objeto por combinação dos campos agrupados. Para rodá-la:

1. **Abra o Playground**

   Acesse `https://api.azion.com/v4/metrics/graphql`.

2. **Informe a consulta**

   Defina `begin` e `end` para o período que você quer ler:

   ```graphql
   query {
     botManagerMetrics(
       filter: {
         tsRange: {
           begin: "2024-09-23T15:00:00"
           end: "2024-09-23T17:00:00"
         }
       }
       aggregate: {
         sum: requests
       }
       orderBy: [ts_ASC]
       groupBy: [ts, action, botCategory, botMode, classified]
       limit: 10000
     ) {
       action
       botCategory
       botMode
       classified
       sum
     }
   }
   ```

3. **Rode a consulta e leia a resposta**

   A resposta carrega um objeto por combinação dos campos agrupados, com as requisições somadas em `sum`:

   ```json
   {
     "data": {
       "botManagerMetrics": [
         {
           "action": "allow",
           "botCategory": "Enterprise Bot",
           "botMode": "web",
           "classified": "good bot",
           "sum": 6
         },
         {
           "action": "allow",
           "botCategory": "Brute Force",
           "botMode": "web",
           "classified": "bad bot",
           "sum": 325
         },
         {
           "action": "allow",
           "botCategory": "Bad Bot Signatures",
           "botMode": "web",
           "classified": "bad bot",
           "sum": 68
         },
         {
           "action": "allow",
           "botCategory": "Non-Bot Like",
           "botMode": "web",
           "classified": "legitimate",
           "sum": 34359
         },
         {
           "action": "redirect",
           "botCategory": "Bad Bot Signatures",
           "botMode": "web",
           "classified": "bad bot",
           "sum": 703
         },
         {
           "action": "allow",
           "botCategory": "Monitoring Bot",
           "botMode": "web",
           "classified": "good bot",
           "sum": 8
         },
         {
           "action": "allow",
           "botCategory": "Bad Bot Signatures",
           "botMode": "web",
           "classified": "under evaluation",
           "sum": 2902
         },
         {
           "action": "redirect",
           "botCategory": "Malicious Browser Behavior",
           "botMode": "web",
           "classified": "bad bot",
           "sum": 17
         },
         {
           "action": "allow",
           "botCategory": "Scripted Bots",
           "botMode": "web",
           "classified": "bad bot",
           "sum": 1
         }
       ]
     }
   }
   ```

Você agora tem as requisições que o Bot Manager analisou no período, contadas por como ele classificou cada uma e pela ação que aplicou.

---

## Campos da consulta

| Campo       | O que carrega                                                                                                                     |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `filter`    | Os critérios que estreitam os dados devolvidos                                                                                    |
| `tsRange`   | Um subcampo de `filter`, com um timestamp `begin` e um `end` no formato `YYYY-MM-DDTHH:mm:ss`. Por exemplo: `2024-04-11T00:00:00` |
| `aggregate` | Com `sum: requests`, o total de requisições avaliadas no intervalo, depois que os filtros se aplicam                              |
| `groupBy`   | Os campos pelos quais os resultados são agrupados. Cada combinação dos valores deles vira um objeto na resposta                   |
| `orderBy`   | A ordem dos resultados. `[ts_ASC]` os devolve em ordem crescente, `[ts_DESC]` em decrescente                                      |
| `limit`     | O número máximo de resultados que a resposta carrega                                                                              |

## Campos da resposta

| Campo         | O que carrega                                                                              |
| ------------- | ------------------------------------------------------------------------------------------ |
| `action`      | A ação que o Bot Manager aplicou às requisições do grupo. Por exemplo: `redirect`          |
| `botCategory` | A categoria de bot identificada na requisição. Por exemplo: `Brute Force`                  |
| `botMode`     | O modo de proteção contra bots usado na requisição. Por exemplo: `web`                     |
| `classified`  | Como o tráfego foi identificado: `bad bot`, `good bot`, `legitimate` ou `under evaluation` |
| `sum`         | As requisições por trás daquela combinação de campos agrupados. Por exemplo: `34359`       |

`classified` e `botCategory` são independentes um do outro. Uma categoria, como `Bad Bot Signatures`, pode ter requisições classificadas como `under evaluation` ao lado de requisições classificadas como `bad bot`.

A consulta seleciona cinco campos, e o dataset carrega mais, incluindo o host, o método HTTP, a origem geográfica e o resultado de um desafio de CAPTCHA. Para a descrição de cada campo, consulte [botManagerMetrics](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-metrics/#botmanagermetrics).

---

## Ordene as classificações por volume

Ordenar pelo agregado em vez de pelo timestamp transforma o mesmo dataset em um ranking, então você lê quais combinações respondem pela maior parte do tráfego. Duas mudanças na consulta acima o produzem:

- Defina `orderBy` como `[sum_DESC]`, para que os maiores grupos venham primeiro.
- Retire `ts` de `groupBy`, para que cada combinação se reduza a um objeto ao longo de todo o intervalo.

O resultado agrupa o período por classificação, categoria e ação:

```graphql
query {
  botManagerMetrics(
    filter: {
      tsRange: {
        begin: "2024-10-01T00:00:00"
        end: "2024-10-03T23:59:59"
      }
    }
    aggregate: {
      sum: requests
    }
    orderBy: [sum_DESC]
    groupBy: [classified, botCategory, action]
    limit: 10000
  ) {
    classified
    botCategory
    action
    sum
  }
}
```

Os objetos no topo da resposta são os maiores grupos, que é onde uma mudança de threshold ou de ação move mais tráfego. Para mais informações sobre como ler essas contagens de volta para uma configuração, consulte [Monitore e calibre o Bot Manager](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/monitorar-e-calibrar-bot-manager/).

---

## Próximos passos

- [Consulte as URLs mais atingidas por bots com GraphQL](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-dados-bot-manager-breakdown-com-graphql.md): As URLs e os endereços do segundo dataset, retido por 60 dias.
- [Logs](/pt-br/documentacao/plataforma/firewall/bot-manager/logs.md): Cada campo da linha do log de report, incluindo a pontuação que este dataset não carrega.
- [Campos da GraphQL API de Real-Time Metrics](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-metrics.md#botmanagermetrics): Cada campo deste dataset, com um valor de exemplo para cada um.
- [Monitore e calibre o Bot Manager](/pt-br/documentacao/guias/seguranca-de-aplicacoes/bots-e-rede/monitorar-e-calibrar-bot-manager.md): Como agir sobre o tráfego que uma consulta como esta revela.
