---
name: azion-detalhe-as-requisicoes-por-status-code
description: >-
  Divida as requisições das suas aplicações por status code, isole uma classe, ranqueie os hosts com erros e compare cada código com a resposta da origem.
---

# Detalhe as requisições por status code

Você pode dividir as requisições das suas [aplicações](/pt-br/documentacao/plataforma/applications/) pelo status code HTTP que elas retornaram, no Azion Console ou com a API GraphQL. [Real-Time Metrics](/pt-br/documentacao/plataforma/real-time-metrics/) lê esses números do dataset `httpMetrics`. Para saber o que cada gráfico do dashboard **Status Codes** mede, consulte [Dashboards de Build](/pt-br/documentacao/plataforma/real-time-metrics/dashboards-build/#status-codes).

## Pré-requisitos

- Uma conta Azion. Para criar uma, consulte [Criar uma conta](/pt-br/documentacao/fundamentos/criar-uma-conta/).
- Uma aplicação servida por um [workload](/pt-br/documentacao/plataforma/workloads/), com requisições no intervalo de tempo que você quer ler.

**Console**

- 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/).

**API**

- Um personal token. Para criar um, consulte [Como criar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- `curl`.

---

## Abra a divisão por status

A divisão conta as requisições de todas as aplicações da sua conta, uma contagem por status code.

**Console**

Para abrir a divisão no Azion Console:

1. **Acesse Real-Time Metrics**

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

   A página abre na categoria **Build**, na aba **Applications** e no dashboard **Data Transferred**.

2. **Selecione Status Codes no seletor de dashboards**

O dashboard mostra quatro gráficos de linha, de **HTTP Status Codes 2XX** a **HTTP Status Codes 5XX**, e a tabela **Requests by Status and Upstream Status**. Cada entrada da legenda totaliza uma série no intervalo de tempo, que começa em **Last 5 minutes**. Para ler um período mais longo, consulte [Filtros e intervalo de tempo](/pt-br/documentacao/plataforma/real-time-metrics/filtros-e-intervalo-de-tempo/#intervalo-de-tempo).

**API**

Para ler a divisão com a API GraphQL, envie uma requisição `POST` para `https://api.azion.com/v4/metrics/graphql`. A query soma `requests` e agrupa as somas por `status`.

Substitua `[TOKEN VALUE]` pelo seu personal token, e os valores `begin` e `end` pelo seu intervalo de tempo:

```bash
curl -X POST 'https://api.azion.com/v4/metrics/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token [TOKEN VALUE]' \
  -d '{"query":"query RequestsByStatus { httpMetrics(limit: 100, filter: { tsRange: { begin: \"2026-01-01T12:00:00\", end: \"2026-01-02T12:00:00\" } }, aggregate: { sum: requests }, groupBy: [status], orderBy: [sum_DESC]) { status sum } }"}'
```

A API responde `200` com uma linha por status code, o mais frequente primeiro:

```json
{
  "data": {
    "httpMetrics": [
      {
        "status": 200,
        "sum": 1253
      },
      {
        "status": 496,
        "sum": 210
      },
      {
        "status": 501,
        "sum": 198
      },
      {
        "status": 304,
        "sum": 140
      },
      …
    ]
  }
}
```

Os valores de `sum` de todas as linhas somam o `requestsTotal` do intervalo de tempo. `limit: 100` mantém todos os códigos: sem `limit`, a API retorna 10 linhas. Para todos os campos do dataset, consulte [Campos da API GraphQL do Real-Time Metrics](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-metrics/#workloadmetrics).

---

## Restrinja a uma classe de status

Um filtro no status code mantém uma classe, como os erros de servidor 5XX. Esta seção mantém os códigos de 500 a 599.

**Console**

Para filtrar o dashboard no Azion Console:

1. **Adicione um filtro**

   Na linha de filtros, selecione o ícone de filtro, cujo tooltip diz **Add filter**.

2. **Selecione o campo Status**

   Em **Filter**, selecione **Status**.

3. **Selecione o operador Between**

   Em **Operator**, selecione **Between**.

4. **Informe o intervalo**

   Informe `500` em **Begin** e `599` em **End**.

5. **Selecione Apply**

Um chip abaixo da linha de filtros mostra `Status between: (500,599)`. A tabela **Requests by Status and Upstream Status** passa a listar apenas os pares cujo status está nesse intervalo, então um erro de servidor não fica mais escondido atrás das respostas `200` mais frequentes.

**API**

Para filtrar com a API, adicione `statusRange` a `filter`, ao lado de `tsRange`:

```bash
curl -X POST 'https://api.azion.com/v4/metrics/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token [TOKEN VALUE]' \
  -d '{"query":"query ServerErrorsByStatus { httpMetrics(limit: 100, filter: { tsRange: { begin: \"2026-01-01T12:00:00\", end: \"2026-01-02T12:00:00\" }, statusRange: { begin: 500, end: 599 } }, aggregate: { sum: requests }, groupBy: [status], orderBy: [sum_DESC]) { status sum } }"}'
```

A API responde `200` apenas com os códigos 5XX:

```json
{
  "data": {
    "httpMetrics": [
      {
        "status": 501,
        "sum": 198
      },
      {
        "status": 502,
        "sum": 31
      },
      {
        "status": 504,
        "sum": 1
      }
    ]
  }
}
```

Para totalizar uma classe, some `requests` com `statusRange`, como acima. `requestsStatusCode5xx` pode retornar menos para o mesmo intervalo de tempo, porque conta apenas os códigos 5XX que não têm um campo próprio. Para cada campo de classe, consulte [Dashboards de Build](/pt-br/documentacao/plataforma/real-time-metrics/dashboards-build/#status-codes).

---

## Encontre os hosts que retornam os erros

Com o filtro de classe aplicado, você pode verificar quais hosts retornam esses erros. A API ranqueia todos os hosts em uma única query. No Azion Console, um segundo filtro restringe o dashboard a um host por vez.

**Console**

Para restringir as respostas 5XX a um host no Azion Console, mantenha o filtro **Status** e adicione um segundo filtro:

1. **Adicione um filtro**

   Na linha de filtros, selecione o ícone de filtro, cujo tooltip diz **Add filter**.

2. **Selecione o campo Host**

   Em **Filter**, selecione **Host**.

3. **Selecione o operador Equals**

   Em **Operator**, selecione **Equals**.

4. **Informe o host**

   Informe o host que você quer verificar, como `www.example.com`.

5. **Selecione Apply**

Um segundo chip mostra `Host equals: www.example.com`. O gráfico **HTTP Status Codes 5XX** e a tabela passam a contar apenas as respostas 5XX desse host. Para verificar outro host, selecione o chip **Host** e altere o valor.

**API**

Para ranquear os hosts com a API, mantenha `statusRange` e agrupe por `host` em vez de `status`:

```bash
curl -X POST 'https://api.azion.com/v4/metrics/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token [TOKEN VALUE]' \
  -d '{"query":"query ServerErrorsByHost { httpMetrics(limit: 10, filter: { tsRange: { begin: \"2026-01-01T12:00:00\", end: \"2026-01-02T12:00:00\" }, statusRange: { begin: 500, end: 599 } }, aggregate: { sum: requests }, groupBy: [host], orderBy: [sum_DESC]) { host sum } }"}'
```

A API responde `200` com os hosts que retornaram respostas 5XX, os com mais erros primeiro:

```json
{
  "data": {
    "httpMetrics": [
      {
        "host": "www.example.com",
        "sum": 199
      },
      {
        "host": "api.example.com",
        "sum": 28
      },
      {
        "host": "static.example.com",
        "sum": 3
      }
    ]
  }
}
```

`limit: 10` mantém os dez hosts com mais erros.

---

## Descubra o que a origem respondeu

O status code é o que o cliente recebeu. O upstream status é o que a origem retornou. Quando os dois têm o mesmo código de erro, o erro veio da origem.

**Console**

No Azion Console, mantenha o filtro **Status** e leia a tabela **Requests by Status and Upstream Status**. Cada linha combina um **Status** com um **Upstream Status**, e **Total** conta as requisições com esse par. A tabela lista os 10 pares mais frequentes.

**API**

Para combinar os dois códigos com a API, agrupe por `status` e `upstreamStatus`. A query mantém o filtro 5XX e os dez pares mais frequentes, como faz a tabela do Console:

```bash
curl -X POST 'https://api.azion.com/v4/metrics/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token [TOKEN VALUE]' \
  -d '{"query":"query ServerErrorsByUpstreamStatus { httpMetrics(limit: 10, filter: { tsRange: { begin: \"2026-01-01T12:00:00\", end: \"2026-01-02T12:00:00\" }, statusRange: { begin: 500, end: 599 } }, aggregate: { sum: requests }, groupBy: [status, upstreamStatus], orderBy: [sum_DESC]) { status upstreamStatus sum } }"}'
```

A API responde `200` com uma linha por par:

```json
{
  "data": {
    "httpMetrics": [
      {
        "status": 501,
        "upstreamStatus": 501,
        "sum": 198
      },
      {
        "status": 502,
        "upstreamStatus": 502,
        "sum": 21
      },
      {
        "status": 502,
        "upstreamStatus": 0,
        "sum": 10
      },
      {
        "status": 504,
        "upstreamStatus": 504,
        "sum": 1
      }
    ]
  }
}
```

Uma linha cujo `upstreamStatus` é igual ao `status` conta erros que a origem retornou. Um mesmo status code pode aparecer em várias linhas, uma por upstream status.

---

## Próximos passos

- [Dashboards de Build](/pt-br/documentacao/plataforma/real-time-metrics/dashboards-build.md#status-codes): O que cada gráfico do dashboard Status Codes conta e os campos por trás dele.
- [Filtre um dashboard de Real-Time Metrics](/pt-br/documentacao/guias/plataforma/observabilidade/adicionar-filtros-metrics.md): Adicione, edite e remova os filtros que restringem todos os gráficos.
- [Solucionar problemas de Real-Time Metrics](/pt-br/documentacao/plataforma/real-time-metrics/solucao-de-problemas.md): Corrija os sintomas que impedem um gráfico ou uma query de retornar os números esperados.
- [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events.md): Leia os logs por trás de cada contagem, quando um total não basta para encontrar a causa.
