Usa las métricas de Prometheus

En esta página, se abordan los conceptos básicos del uso de las métricas de Prometheus para los SLI de disponibilidad y latencia en Cloud Monitoring, y el uso de esas métricas a fin de crear un SLO.

Conceptos básicos de Prometheus

Prometheus es una solución de supervisión de código abierto líder para las métricas y las alertas.

Prometheus admite datos dimensionales con identificadores de clave-valor para las métricas, proporciona el lenguaje de consulta PromQL y admite muchas integraciones mediante exportadores para otros productos.

Si deseas comenzar a usar Prometheus con Monitoring, te recomendamos usar Google Cloud Managed Service para Prometheus.

Métricas

Prometheus admite los siguientes tipos de métricas:

  • Contador: un único valor que solo puede aumentar de forma monotónica o restablecer a 0 cuando se reinicia.
  • Indicador: un valor numérico único que se puede establecer de manera arbitraria.
  • Histograma: un grupo de buckets configurables para realizar muestreos de observaciones y valores de registro en rangos; también proporciona una suma de todos los valores observados.
  • Resumen: como un histograma, pero también calcula los cuantiles configurables en un período variable.

Para obtener más información, consulta Tipos de métricas.

Crea métricas para los SLI

Si tu aplicación emite métricas de Prometheus, puedes usarlas para los SLI.

  • Para los SLI de disponibilidad en los recuentos de solicitudes y errores, puedes comenzar con las métricas de contador de Prometheus.
  • Para los SLI de latencia, puedes usar métricas de histogramas o de resumen de Prometheus.

Si deseas recopilar métricas de Prometheus con Google Cloud Managed Service para Prometheus, consulta la documentación a fin de configurar la recopilación de métricas administradas o autoimplementadas.

Cuando creas un SLO en la consola de Google Cloud, los tipos de SLO de disponibilidad y latencia predeterminados no incluyen las métricas de Prometheus. Si deseas usar una métrica de Prometheus, crea un SLO personalizado y, luego, elige una métrica de Prometheus para el SLI.

Las métricas de Prometheus comienzan con prometheus.googleapis.com/.

Métricas para GKE

La recopilación administrada de métricas de Google Cloud Managed Service para Prometheus está habilitada de forma predeterminada para GKE. Si ejecutas en un entorno de GKE que no habilita la recopilación administrada de forma predeterminada, puedes habilitar la recopilación administrada de forma manual. Cuando la recopilación administrada está habilitada, los componentes en el clúster se ejecutan, pero las métricas no se generan hasta que implementas un recurso PodMonitoring que recopila un extremo de métricas válido o habilitas uno de los paquetes de métricas administradas.

El paquete de métricas del plano de control incluye métricas que son indicadores útiles del estado del sistema. Habilita la recopilación de métricas de plano de control para usar estas métricas para la disponibilidad, la latencia y otros SLI.

  • Usa las métricas del servidor de la API para realizar un seguimiento de la carga del servidor de la API, la fracción de solicitudes del servidor de la API que muestran errores y la latencia de respuesta de las solicitudes que recibe el servidor de la API.
  • Usa las métricas del programador a fin de ayudarte a responder de forma proactiva a los problemas de programación cuando no hay suficientes recursos para los Pods pendientes.

Métricas para SLI de disponibilidad

Expresa un SLI de disponibilidad basado en solicitudes en la API de Cloud Monitoring mediante la estructura TimeSeriesRatio para configurar una proporción de solicitudes “correctas” o “incorrectas” en relación con el total. Esta proporción se usa en el campo goodTotalRatio de una estructura RequestBasedSli.

La aplicación debe emitir métricas de Prometheus que se puedan usar para construir esta proporción. La aplicación debe emitir al menos dos de los siguientes elementos:

  1. Una métrica que contabiliza el total de eventos. Usa esta métrica en la totalServiceFilter de la proporción.

    Puedes usar un contador de Prometheus que se incrementa para cada evento.

  2. En una métrica que cuenta los eventos “incorrectos”, usa esta métrica en la badServiceFilter de la proporción.

    Puedes usar un contador de Prometheus que aumenta en cada error o en otro evento “incorrecto”.

  3. En una métrica que cuenta los eventos “correctos”, usa esta métrica en el goodServiceFilter de la proporción.

    Puedes usar un contador de Prometheus que aumenta en cada caso de éxito o de otro "correcto".

Métricas de SLI de latencia

Expresa un SLI de latencia basado en solicitudes en la API de Cloud Monitoring creando una estructura DistributionCut. Esta estructura se usa en el campo distributionCut de una estructura RequestBasedSli.

La aplicación debe emitir una métrica de Prometheus que se pueda usar para construir el valor de corte de distribución. Para este fin, puedes usar un histograma o un resumen de Prometheus. A fin de determinar cómo definir tus depósitos para medir con precisión si tus respuestas se encuentran dentro de tu SLO, consulta Tipos de métricas en la documentación de Prometheus.

Ejemplo

En el siguiente ejemplo de JSON, se usa la métrica prometheus.googleapis.com/apiserver_request_duration_seconds del plano de control de GKE para crear un SLO de latencia para un servicio. El SLO requiere que el 98% de la latencia de respuesta sea inferior a 50 segundos en un mes calendario.

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

¿Qué sigue?