Client Errors

Conhecendo um pouco mais sobre a estrutura do alerta de Client Errors.

Introdução

Sabendo da importância do monitoramento nos tempos atuais, vamos abordar a configuração de um alerta parametrizado dentro do Prometheus para monitorar APIs em busca de erros de cliente dentro do Analytics. Especificamente, vamos validar a estrutura de um alerta que detecta quando a taxa de erros de cliente.

Especificação

Iremos verificar a estrutura do alerta um pouco a frente, porém a estrutura responsável pela validação de erros, é a que segue. Ou seja, a partir do momento de seu acionamento (quando a expressão for verdadeira) o alerta será disparado para a validação dos analistas.

((sum_over_time(client_errors{id="{{l$abels.api_id}}",customer_id="{{l$abels.customer_id}}",type="api"}[10m]) / sum_over_time(calls{id="{{l$abels.api_id}}",customer_id="{{l$abels.customer_id}}",type="api"}[10m])) * 100) > 10

Isso significa que, se a taxa de erros de cliente em relação ao número total de chamadas exceder 10% nos últimos 10 minutos, o alerta será acionado.

Estrutura do Alerta

Para entendermos um pouco mais sobre o funcionamento da estrutura do alerta, é necessário conhecer como a mesma é parametrizada:

#CLIENT ERRORS
- alert: {{$labels.customer_name}}-CLIENT_ERRORS-API-{{$labels.api_id}}
  expr: floor((sum_over_time(client_errors{id="{{$labels.api_id}}",customer_id="{{$labels.customer_id}}",type="api"}[10m]) / sum_over_time(calls{id="{{$labels.api_id}}",customer_id="{{$labels.customer_id}}",type="api"}[10m])) * 100) > 10
   for: 6m
   labels:
     severity: critical
     emails: "{{emails_list}}" 
     metric: client_errors
   annotations:
     description: "Premium Support | {{ $labels.customer_name }} | CLIENT_ERRORS. API: {{$labels.api_name}}"

Para entender o funcionamento, é necessário entender um pouco mais sobre cada um dos itens da estrutura do alerta:

  • Nome do Alerta: {{ $labels.customer_name }}-CLIENT_ERRORS-API-{{$labels.api_id}}

    O nome do alerta é composto pelo nome do cliente ({{ $labels.customer_name }}), seguido por "CLIENT_ERRORS-API-" e o ID da API ({{$labels.api_id}}). Isso ajuda a identificar facilmente o cliente e a API específica associada ao alerta.

  • Expressão de Avaliação:

    A expressão é uma fórmula que define a condição para acionar o alerta. Neste caso, calculamos a taxa de erros de cliente em relação ao número total de chamadas nos últimos 10 minutos e comparamos com 10%. Se a taxa for superior a 10%, o alerta é acionado.

  • Duração: 6 minutos.

    Esta é a duração mínima que a condição especificada na expressão deve ser verdadeira para acionar o alerta.

  • Rótulos:

    • Gravidade: Crítico

      Indica a gravidade do alerta. Neste caso, os erros de cliente são considerados críticos.

    • Emails: "lista"

      Especifica os destinatários que receberão notificações quando o alerta for acionado.

    • Métrica: client_errors

      Identifica a métrica associada ao alerta. Neste caso, estamos monitorando os erros de cliente.

  • Anotações:

    • Descrição: "Suporte Premium | {{ $labels.customer_name }} | ERROS DE CLIENTE. API: {{$labels.api_name}}"

      Fornece informações adicionais sobre o alerta, como o nível de suporte e o nome da API associada ao alerta.

Caso de Uso

Esse alerta é útil para garantir que os clientes dessa API estejam conseguindo utilizar a API corretamente, alertando as equipes de suporte sobre problemas de consumo que os clientes possam estar enfrentando.

Ao receber esse alerta, as equipes responsáveis podem investigar imediatamente e tomar medidas para conseguir apoiar os consumidores para tentar utilizar a API.

Conclusão

Configurar alertas no Prometheus é uma prática crucial para garantir o monitoramento eficaz de sistemas e serviços. Este documento forneceu uma visão geral da configuração de um alerta para detectar erros de clientes em APIs, detalhando a especificação, a estrutura do alerta, a regra e o caso de uso associados a esse alerta. Ao implementar e monitorar esse alerta, as equipes conseguem dar um suporte aos consumidores dessa API de forma rápida e assertiva.

Last updated