Usar métricas do Prometheus

Esta página aborda os princípios básicos da utilização das métricas do Prometheus para SLIs de disponibilidade e latência no Cloud Monitoring, e a utilização dessas métricas para criar um SLO.

Noções básicas do Prometheus

O Prometheus é uma solução de monitorização de código aberto líder para métricas e alertas.

O Prometheus suporta dados dimensionais com identificadores de chave-valor para métricas, fornece a linguagem de consulta PromQL e suporta muitas integrações através da disponibilização de exportadores para outros produtos.

Para começar a usar o Prometheus com o Monitoring, recomendamos que use o Google Cloud Managed Service for Prometheus.

Métrica

O Prometheus suporta os seguintes tipos de métricas:

  • Contador: um valor único que só pode ser aumentado monotonicamente ou reposto para 0 no reinício.
  • Indicador: um único valor numérico que pode ser definido arbitrariamente.
  • Histograma: um grupo de contentores configuráveis para a amostragem de observações e o registo de valores em intervalos; também fornece uma soma de todos os valores observados
  • Resumo: semelhante a um histograma, mas também calcula quantis configuráveis num intervalo de tempo deslizante.

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

Criar métricas para SLIs

Se a sua aplicação emitir métricas do Prometheus, pode usá-las para SLIs.

  • Para INSs de disponibilidade em pedidos e contagens de erros, pode começar com as métricas de contador do Prometheus.
  • Para SLIs de latência, pode usar métricas de histograma ou resumo do Prometheus.

Para recolher métricas do Prometheus com o Google Cloud Managed Service for Prometheus, consulte a documentação para configurar a recolha de métricas geridas ou implementadas automaticamente.

Quando cria um SLO na Google Cloud consola, os tipos de SLO de disponibilidade e latência predefinidos não incluem métricas do Prometheus. Para usar uma métrica do Prometheus, crie um SLO personalizado e, em seguida, escolha uma métrica do Prometheus para o SLI.

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

Métricas do GKE

A recolha gerida de métricas pelo Google Cloud Managed Service for Prometheus está ativada por predefinição para o GKE. Se estiver a executar num ambiente do GKE que não ative a recolha gerida por predefinição, pode ativar a recolha gerida manualmente. Quando a recolha gerida está ativada, os componentes no cluster estão em execução, mas as métricas não são geradas até implementar um recurso PodMonitoring que extraia um ponto final de métricas válido ou ativar um dos pacotes de métricas geridas.

O pacote control plane metrics inclui métricas que são indicadores úteis do estado de funcionamento do sistema. Ative a recolha de métricas do plano de controlo para usar estas métricas para disponibilidade, latência e outros SLIs.

  • Use as métricas do servidor da API para acompanhar a carga do servidor da API, a fração de pedidos do servidor da API que devolvem erros e a latência de resposta para pedidos recebidos pelo servidor da API.
  • Use as métricas do programador para ajudar a responder proativamente a problemas de agendamento quando não existem recursos suficientes para os pods pendentes.

Métricas para INSs de disponibilidade

Exprime um SLI de disponibilidade baseado em pedidos na API Cloud Monitoring usando a estrutura TimeSeriesRatio para configurar uma proporção de pedidos "bons" ou "maus" em relação ao total de pedidos. Esta proporção é usada no campo goodTotalRatio de uma estrutura RequestBasedSli.

A sua aplicação tem de emitir métricas do Prometheus que podem ser usadas para criar esta proporção. A aplicação tem de emitir, pelo menos, dois dos seguintes elementos:

  1. Uma métrica que contabiliza o total de eventos; use esta métrica no denominador da proporção.totalServiceFilter

    Pode usar um contador do Prometheus que é incrementado para cada evento.

  2. Uma métrica que contabiliza eventos "incorretos". Use esta métrica nas proporções badServiceFilter.

    Pode usar um contador do Prometheus que é incrementado para cada erro ou outro evento "mau".

  3. Uma métrica que contabiliza eventos "bons". Use esta métrica nos goodServiceFilterda proporção.

    Pode usar um contador do Prometheus que é incrementado para cada evento bem-sucedido ou "bom".

Métricas para INSs de latência

Pode expressar um SLI de latência baseado em pedidos na API Cloud Monitoring criando uma estrutura DistributionCut. Esta estrutura é usada no campo distributionCut de uma estrutura RequestBasedSli.

A sua aplicação tem de emitir uma métrica do Prometheus que possa ser usada para criar o valor de distribuição-corte. Pode usar um histograma ou um resumo do Prometheus para este fim. Para determinar como definir os seus grupos de forma a medir com precisão se as suas respostas se enquadram no seu SLO, consulte os tipos de métricas na documentação do Prometheus.

Exemplo

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

{
 "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
       }
     }
   }
 }
}

O que se segue?