Sobre proporções de métricas

Este documento ajuda você a escolher a melhor abordagem para representar ou monitorar uma proporção de dados de métricas. Ele também inclui links para exemplos, identifica quando é possível calcular proporções e descreve anomalias que podem aparecer ao criar um gráfico de proporção de duas métricas diferentes. Essas anomalias são causadas por diferenças na taxa de amostragem ou nos parâmetros de alinhamento.

Com as proporções, você transforma os dados de métricas em um formato diferente e potencialmente mais útil. Por exemplo, considere um tipo de métrica que conta o número de respostas HTTP por código de resposta. Os dados de métricas informam o número de erros, mas não a proporção de solicitações com falha. No entanto, os requisitos de desempenho geralmente são especificados como uma porcentagem, como "A taxa de erros precisa ser menor que 0,1%". Para determinar a taxa de erros usando os dados de métrica, calcule a proporção entre as solicitações com falha e o número total de solicitações.

Práticas recomendadas

Para monitorar ou criar um gráfico de uma proporção de dados de métricas, recomendamos usar o PromQL. É possível usar o PromQL com a API Cloud Monitoring e com o console do Google Cloud . O console Google Cloud inclui um editor de código que oferece sugestões, detecção de erros e outro suporte para criar consultas PromQL válidas.

Para criar uma política de alertas que monitore uma proporção de métricas quando você não estiver familiarizado com o PromQL, use a API Cloud Monitoring e inclua um filtro de série temporal. Para um exemplo, consulte Proporção da métrica.

Para criar um gráfico de uma proporção de dados de métricas quando você não conhece o PromQL, recomendamos usar o console Google Cloud e uma interface orientada por menus. Para instruções detalhadas, consulte Criar um gráfico de proporção de métricas e Adicionar gráficos e tabelas a um painel personalizado.

Restrições com proporções

Ao configurar uma proporção, as seguintes restrições são aplicadas:

  • Após a agregação, os rótulos na série temporal do denominador precisam ser iguais ou um subconjunto dos rótulos na série temporal do numerador.

    Recomendamos que você selecione opções de agregação para que, após a agregação, as série temporal do numerador e do denominador tenham os mesmos rótulos.

    Considere uma configuração em que a série temporal do numerador tem rótulos method, quota_metric e project_id. A série temporal do denominador tem os rótulos limit_name, quota_metric e project_id. As opções válidas para o agrupamento do denominador dependem das seleções do numerador:

    • Numerador agrupado pelo rótulo method: combine as séries temporais do denominador em uma única série temporal. Nenhum outro agrupamento resulta em rótulos para a série temporal do denominador que sejam um subconjunto dos rótulos da série temporal do numerador.
    • Numerador agrupado pelo rótulo quota_metric: agrupe o denominador por esse rótulo ou combine todas as séries temporais do denominador em uma única série temporal.
    • Numerador agrupado pelos rótulos quota_metric e project_id: agrupe o denominador por ambos os rótulos, por um rótulo ou combine as séries temporais do denominador em uma única série temporal.

    As opções válidas de agregação de denominador sempre eliminam o rótulo limit_name da série temporal agrupada porque ele não está presente na série temporal do numerador.

  • O período de alinhamento precisa ser o mesmo para o numerador e o denominador ao configurar um gráfico usando o console do Google Cloud . No entanto, esses campos podem ser diferentes ao usar a API Cloud Monitoring.

    Recomendamos usar o mesmo período de alinhamento para o numerador e o denominador, independente da ferramenta usada para criar o gráfico.

  • O numerador e o denominador precisam ter o mesmo tipo de valor. Por exemplo, quando o numerador é do tipo DOUBLE, o denominador também precisa ser do tipo DOUBLE.

    As proporções exigem que a métrica do numerador e do denominador tenha um tipo de valor DOUBLE ou INT64.

  • As série temporal alinhadas do numerador e do denominador precisam ter o mesmo tipo de métrica. Quando as duas métricas têm tipos diferentes, é necessário usar alinhadores para convertê-las no mesmo tipo.

    Considere uma configuração em que uma métrica DELTA é selecionada para o numerador e uma métrica GAUGE é selecionada para o denominador. Nesse caso, use o alinhador de taxa, ALIGN_RATE, para converter a métrica DELTA em uma métrica GAUGE. Por exemplo, consulte Políticas de alertas de proporção sobre o uso da cota de taxa para um limite.

  • Para proporções que não são definidas com PromQL, o tipo de recurso monitorado precisa ser o mesmo para o numerador e o denominador.

    Por exemplo, se o recurso da métrica do numerador for instâncias do Compute Engine, o recurso da métrica do denominador também precisará ser instâncias do Compute Engine.

Anomalias devido a incompatibilidades de amostragem e alinhamento

Em geral, é melhor calcular proporções com base em séries temporais coletadas para um único tipo de métrica usando valores de rótulo. Uma proporção calculada em dois tipos de métricas diferentes está sujeita a anomalias devido a períodos de amostragem e janelas de alinhamento diferentes.

Por exemplo, suponha que você tem dois tipos de métrica diferentes, uma contagem total de RPC e uma contagem de erros de RPC, e quer calcular a proporção de contagem de erros de RPC em relação ao total de RPCs. As RPCs malsucedidas são contadas na série temporal dos dois tipos de métricas. Portanto, há uma chance de que, quando você alinha a série temporal, uma RPC malsucedida não apareça no mesmo intervalo de alinhamento para as duas séries temporais. Essa diferença pode ocorrer por vários motivos, incluindo:

  • Como há duas séries temporais diferentes gravando o mesmo evento, há dois valores de contador subjacentes implementando a coleta, e eles não são atualizados atomicamente.
  • As taxas de amostragem podem ser diferentes. Quando as séries temporais estão alinhadas a um período comum, as contagens de um único evento podem aparecer em intervalos de alinhamento adjacentes na série temporal de diferentes métricas.

A diferença no número de valores nos intervalos de alinhamento correspondentes pode levar a valores de proporção error/total ilógicos, como 1/0 ou 2/1.

As proporções de números maiores têm menos probabilidade de resultar em valores sem sentido. É possível conseguir números maiores por agregação, seja usando uma janela de alinhamento maior que o período de amostragem ou agrupando dados para determinados rótulos. Essas técnicas minimizam o efeito de pequenas diferenças no número de pontos em um determinado intervalo. Ou seja, uma disparidade de dois pontos é mais significativa quando o número esperado de pontos em um intervalo é 3 do que quando o número esperado é 300.

Se você estiver usando tipos de métricas integrados, talvez não tenha opção senão calcular proporções nos tipos de métricas para obter o valor necessário.

Se você estiver criando métricas personalizadas para contar o mesmo resultado (como RPCs que retornam status de erro) em duas métricas diferentes, considere uma única métrica que inclua cada contagem apenas uma vez. Por exemplo, suponha que você esteja contando RPCs e queira rastrear a proporção de RPCs malsucedidas para todas as RPCs. Para resolver esse problema, crie um único tipo de métrica para contar RPCs e use um rótulo para registrar o status da invocação, incluindo o status "OK". Depois, cada valor de status, de erro ou "OK" será registrado ao atualizar um contador único para esse caso.

Alertas falsos devido a anomalias no cálculo da proporção

Para evitar alertas falsos devido a erros temporários ou dados ausentes, defina a duração da consulta PromQL como pelo menos o dobro do intervalo de avaliação:

  • Google Cloud console: defina a duração no campo Duração ao configurar a condição de alerta.
  • API Cloud Monitoring ou Terraform: especifique a duração usando o campo AlertPolicy.Condition.PrometheusQueryLanguageCondition.duration.

A seguir