En esta página se explican los conceptos básicos para usar métricas de Prometheus en los indicadores de nivel de servicio de disponibilidad y latencia de Cloud Monitoring, así como para crear un objetivo de nivel de servicio a partir de esas métricas.
Conceptos básicos de Prometheus
Prometheus es una solución de monitorización de código abierto líder en el sector para métricas y alertas.
Prometheus admite datos dimensionales con identificadores clave-valor para métricas, proporciona el lenguaje de consulta PromQL y admite muchas integraciones mediante exportadores para otros productos.
Para empezar a usar Prometheus con Monitoring, te recomendamos que utilices Google Cloud Managed Service para Prometheus.
Métricas
Prometheus admite los siguientes tipos de métricas:
- Contador: un solo valor que solo se puede aumentar de forma monótona o restablecer a 0 al reiniciar.
- Indicador: un valor numérico único que se puede definir de forma arbitraria.
- Histograma: grupo de segmentos configurables para muestrear observaciones y registrar valores en intervalos. También proporciona la suma de todos los valores observados.
- Resumen: es como un histograma, pero también calcula cuantiles configurables en un periodo de tiempo.
Para obtener más información, consulta la sección Tipos de métricas.
Crear métricas para los indicadores de nivel de servicio
Si tu aplicación emite métricas de Prometheus, puedes usarlas para los SLIs.
- En el caso de los indicadores de nivel de servicio de disponibilidad de recuentos de solicitudes y errores, puedes empezar con las métricas de contador de Prometheus.
- En el caso de los indicadores de nivel de servicio de latencia, puedes usar métricas de histograma o de resumen de Prometheus.
Para recoger métricas de Prometheus con Google Cloud Managed Service para Prometheus, consulta la documentación sobre cómo configurar la recogida de métricas gestionada o desplegada automáticamente.
Cuando crea un SLO en la consola de Google Cloud , los tipos de SLO de disponibilidad y latencia predeterminados no incluyen métricas de Prometheus. Para usar una métrica de Prometheus, cree un SLO personalizado y, a continuación, elija una métrica de Prometheus para el SLI.
Las métricas de Prometheus empiezan por prometheus.googleapis.com/
.
Métricas de GKE
La recogida gestionada de métricas por parte de Google Cloud Managed Service para Prometheus está habilitada de forma predeterminada en GKE. Si estás ejecutando el agente en un entorno de GKE que no habilita la recogida gestionada de forma predeterminada, puedes habilitarla manualmente. Cuando la recogida gestionada está habilitada, los componentes del clúster se ejecutan, pero no se generan métricas hasta que implementas un recurso PodMonitoring que rastrea un endpoint de métricas válido o habilitas uno de los paquetes de métricas gestionados.
El paquete métricas del plano de control incluye métricas que son indicadores útiles del estado del sistema. Habilita la recogida de métricas del plano de control para usar estas métricas en indicadores de nivel de servicio de disponibilidad, latencia y otros.
- Usa las métricas del servidor de la API para monitorizar la carga del servidor de la API, la fracción de solicitudes del servidor de la API que devuelven errores y la latencia de respuesta de las solicitudes recibidas por el servidor de la API.
- Usa las métricas del programador para responder de forma proactiva a los problemas de programación cuando no haya suficientes recursos para los pods pendientes.
Métricas de los SLIs de disponibilidad
Para expresar un SLI de disponibilidad basado en solicitudes en la API Cloud Monitoring, usa la estructura TimeSeriesRatio
para configurar una proporción de solicitudes "buenas" o "malas" con respecto al total de solicitudes. Esta proporción se usa en el campo goodTotalRatio
de una estructura RequestBasedSli
.
Tu aplicación debe emitir métricas de Prometheus que se puedan usar para crear esta proporción. La aplicación debe emitir al menos dos de los siguientes elementos:
Métrica que cuenta el total de eventos. Úsala en el denominador de la proporción.
totalServiceFilter
Puedes usar un contador de Prometheus que se incremente por cada evento.
Métrica que cuenta los eventos "incorrectos". Úsala en el
badServiceFilter
de la relación.Puedes usar un contador de Prometheus que se incremente por cada error u otro evento "incorrecto".
Métrica que cuenta los eventos "buenos". Úsala en las ratios.
goodServiceFilter
Puedes usar un contador de Prometheus que se incremente por cada evento correcto u otro evento "bueno".
Métricas de los SLIs de latencia
Para expresar un indicador de nivel de servicio de latencia basado en solicitudes en la API de Cloud Monitoring, debes crear una estructura DistributionCut
. Esta estructura se usa en el campo distributionCut
de una estructura RequestBasedSli
.
Tu aplicación debe emitir una métrica de Prometheus que se pueda usar para crear el valor de distribución de corte. Para ello, puedes usar un histograma o un resumen de Prometheus. Para saber cómo definir los contenedores para medir con precisión si las respuestas se ajustan a tu SLO, consulta los tipos de métricas en la documentación de Prometheus.
Ejemplo
En el siguiente ejemplo de JSON se usa la métrica del plano de control de GKE prometheus.googleapis.com/apiserver_request_duration_seconds
para crear un SLO de latencia de un servicio. El objetivo de nivel de servicio requiere que el 98% de la latencia de respuesta sea inferior a 50 segundos en un mes natural.
{
"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
}
}
}
}
}
Siguientes pasos
- Crear un objetivo de nivel de servicio
- Consulta más información sobre Google Cloud Managed Service para Prometheus.
- Consulta más información sobre las métricas del plano de control.