Como usar métricas do Prometheus

Nesta página, você verá os conceitos básicos do uso das métricas do Prometheus para SLIs de disponibilidade e latência no Cloud Monitoring e do uso dessas métricas para criar um SLO.

Conceitos básicos do Prometheus

O Prometheus é uma importante solução de monitoramento de código aberto para métricas e alertas.

O Prometheus é compatível com dados dimensionais com identificadores de chave-valor para métricas, fornece a linguagem de consulta PromQL e é compatível com muitas integrações fornecendo exportadores para outros produtos.

Para começar a usar o Prometheus com o Monitoring, recomendamos o uso do Google Cloud Managed Service para Prometheus.

Métrica

O Prometheus é compatível com os seguintes tipos de métricas:

  • Contador: um único valor que só pode ser aumentado monotonicamente ou redefinido para 0 na reinicialização.
  • Medidor: um valor numérico único que pode ser definido arbitrariamente.
  • Histograma: um grupo de buckets configuráveis para amostragem de observações e gravação de valores em intervalos, também fornece uma soma de todos os valores observados.
  • Resumo: como um histograma, mas também calcula quantis configuráveis em uma janela de tempo variável.

Para mais informações, consulte Tipos de métricas.

Como criar métricas para SLIs

Se o aplicativo emite métricas do Prometheus, elas podem ser usadas nos SLIs.

  • Para SLIs de disponibilidade em contagens de solicitações e erros, comece com as métricas de contador do Promethus.
  • Para SLIs de latência, use as métricas de resumo ou histograma do Prometheus.

Para coletar métricas do Prometheus com o Google Cloud Managed Service para Prometheus, consulte a documentação sobre como configurar a coleta de métricas gerenciadas ou autoimplantadas.

Ao criar um SLO no console do Google Cloud, os tipos de SLO de disponibilidade e latência padrão não incluem as métricas do Prometheus. Para usar uma métrica do Prometheus, crie um SLO personalizado e escolha uma métrica do Prometheus para o SLI.

As métricas do Prometheus começam com prometheus.googleapis.com/.

Métricas para GKE

A coleta gerenciada de métricas pelo Google Cloud Managed Service para Prometheus é ativada por padrão para o GKE. Se sua execução for em um ambiente do GKE que não ativa a coleta gerenciada por padrão, consulte Ativar a coleta gerenciada manualmente. Quando a coleção gerenciada está ativada, os componentes no cluster estão em execução, mas as métricas não são geradas até que você implante um recurso do PodMonitoring que coleta um endpoint de métricas válido ou ative um dos os pacotes gerenciados de métricas.

O pacote de métricas do plano de controle inclui métricas que são indicadores úteis da integridade do sistema. Ative a coleta de métricas do plano de controle a fim de usá-las para disponibilidade, latência e outros SLIs.

  • Use as métricas do servidor de API para acompanhar a carga do servidor de API, a fração das solicitações do servidor que retornam erros e a latência da resposta para as solicitações recebidas pelo servidor.
  • Use as métricas do programador para responder de maneira proativa a problemas de programação quando não houver recursos suficientes para pods pendentes.

Métricas para SLIs de disponibilidade

Para expressar um SLI de disponibilidade baseado em solicitação na API Cloud Monitoring, use a estrutura TimeSeriesRatio para configurar uma proporção de solicitações "boas" ou "ruins" para o total solicitações. Essa proporção é usada no campo goodTotalRatio de uma estrutura RequestBasedSli.

O aplicativo precisa criar métricas do Prometheus que podem ser usadas para construir essa proporção. O aplicativo precisa emitir pelo menos dois destes itens:

  1. Uma métrica que conta o total de eventos. Use essa métrica no totalServiceFilter da proporção.

    É possível criar um contador do Prometheus que seja incrementado para cada evento.

  2. Uma métrica que conta eventos "ruins". Use essa métrica no badServiceFilter da proporção.

    É possível criar um contador do Prometheus que seja incrementado para cada erro ou outro evento "ruim".

  3. Uma métrica que conta eventos "bons". Use essa métrica no goodServiceFilter da proporção.

    É possível criar um contador do Prometheus que seja incrementado para cada evento bem-sucedido ou "bom".

Métricas para SLIs de latência

Expresse um SLI de latência baseado em solicitação na API Cloud Monitoring criando uma estrutura DistributionCut. Essa estrutura é usada no campo distributionCut de uma estrutura RequestBasedSli.

O aplicativo precisa criar uma métrica do Prometheus que possa ser usada para criar o valor de corte de distribuição. É possível usar um histograma ou resumo do Prometheus para essa finalidade. Para determinar como definir os buckets para medir com precisão se suas respostas se enquadram no SLO, consulte Tipos de métricas na documentação do Prometheus.

Exemplo

O exemplo JSON a seguir usa a métrica prometheus.googleapis.com/apiserver_request_duration_seconds do plano de controle do GKE para criar um SLO de latência de um serviço. O SLO exige que 98% da latência de resposta seja inferior a 50 segundos em um mês.

{
 "displayName": "98% Calendar month - Request Duration Under 50s",
 "goal": 0.98,
 "calendarPeriod": "MONTH",
 "serviceLevelIndicator": {
   "requestBased": {
     "distributionCut": {
       "distributionFilter": "metric.type=\"prometheus.googleapis.com/apiserver_request_duration_seconds/histogram\" resource.type=\"prometheus_target\"",
       "range": {
         "min": "-Infinity",
         "max": 50
       }
     }
   }
 }
}

A seguir