La supervisión del servicio y la API de SLO te ayudarán a administrar tus servicios de la misma manera que Google administra sus servicios. Las nociones principales de la supervisión del servicio incluyen lo siguiente:
- Seleccionar métricas que actúen como indicadores de nivel de servicio (SLI)
- Usar los SLI a fin de configurar objetivos de nivel de servicio (SLO) para los valores de los SLI
- Usar el porcentaje de error aceptable implícito en el SLO para mitigar el riesgo en tu servicio
En esta página, se presentan estos conceptos y se describen algunos aspectos que se deben considerar cuando se diseña un SLO. En las otras páginas de esta sección, se ponen en práctica los conceptos:
Terminología
En la supervisión de servicios se usa un conjunto de conceptos principales que se presentan aquí:
- Indicador de nivel de servicio (SLI): una medición del rendimiento
- Objetivo de nivel de servicio (SLO): una declaración del rendimiento deseado
- Porcentaje de error aceptable: Comienza en 1 - SLO y disminuye a medida que el rendimiento real no pasa por alto el SLO.
Indicadores de nivel de servicio
Cloud Monitoring recopila métricas que miden el rendimiento de la infraestructura del servicio. Algunos ejemplos de métricas de rendimiento son los siguientes:
- Recuento de solicitudes: Por ejemplo, la cantidad de solicitudes HTTP por minuto que generan respuestas 2xx o 5xx
- Latencias de respuesta: Por ejemplo, la latencia de las respuestas HTTP 2xx
Las métricas de rendimiento se identifican de forma automática según un conjunto de tipos de servicios conocidos: Cloud Service Mesh, Istio en Google Kubernetes Engine y App Engine. También puedes definir tu propio tipo de servicio y seleccionar métricas de rendimiento para él.
Las métricas de rendimiento son la base de los SLI de tu servicio. Un SLI describe el rendimiento de algún aspecto de tu servicio. También se conocen SLI útiles para los servicios en Cloud Service Mesh, Istio en Google Kubernetes Engine y App Engine. Por ejemplo, si tu servicio tiene métricas de recuento de solicitudes o de latencia de respuesta, los indicadores de nivel de servicio estándar (SLI) pueden derivarse de esas métricas mediante la creación de proporciones de la siguiente manera:
- Un SLI de disponibilidad es la proporción entre la cantidad de respuestas exitosas y la cantidad total de respuestas.
- Un SLI de latencia es la proporción entre la cantidad de llamadas por debajo de un límite de latencia y la cantidad total de llamadas.
También puedes configurar los SLI específicos del servicio para otra medida de lo que significa “buen rendimiento”. Por lo general, estos SLI se clasifican en dos categorías:
- Los SLI basados en solicitudes, en los que un buen servicio se mide cuando cuentas unidades atómicas del servicio, como la cantidad de solicitudes HTTP exitosas.
- Los SLI basados en Windows, en los que el buen servicio se mide cuando cuentas la cantidad de períodos o ventanas durante los cuales el rendimiento cumple un criterio de calidad, como la latencia de respuesta por debajo de un límite determinado.
Estos SLI se describen con más detalle en Cumplimiento en los SLO basados en solicitudes y en ventanas.
A fin de obtener ejemplos que crean SLI para los servicios seleccionados, consulta Crea SLI de las métricas.
Objetivos de nivel de servicio
Un SLO es un valor objetivo para un SLI, medido durante un período. El servicio determina los SLI disponibles, y tú especificas los SLO basados en los SLI. El SLO define lo que califica como un buen servicio. Puedes crear hasta 500 SLO para cada servicio en Cloud Monitoring.
Un SLO se basa en los siguientes tipos de información:
- Un SLI, que mide el rendimiento del servicio
- Un objetivo de rendimiento que especifica el nivel de rendimiento deseado
- Un período denominado período de cumplimiento, para medir cómo se compara el SLI con el objetivo de rendimiento
Por ejemplo, es posible que tengas requisitos como los siguientes:
- La latencia puede superar los 300 ms en solo el 5% de las solicitudes durante un período progresivo de 30 días.
- El sistema debe tener una disponibilidad del 99% durante una semana calendario.
Los requisitos como estos pueden proporcionar la base para los SLO. Consulta Diseña y usa los SLO para obtener ayuda sobre cómo configurar buenos SLO.
Los cambios en el cumplimiento de los SLO también pueden indicar la aparición de fallas. Si se supervisan estos cambios, podrías solucionar un problema antes de que se produzca. Por lo tanto, las políticas de alertas se suelen usar para supervisar el cumplimiento del SLO. Para obtener más información, consulta Alertas sobre el porcentaje de error aceptable.
Un SLO útil apunta a un valor de menos del 100%, ya que su propósito es indicar cuál es el porcentaje de error aceptable. Los SLO suelen describirse como una “serie de nueves”: 99% (2 nueves), 99.9% (3 nueves), etcétera. El valor más alto que puedes establecer es del 99.9%, pero puedes usar cualquier valor más bajo que sea apropiado para tu servicio.
Porcentaje de error aceptable
Un SLO especifica el grado de rendimiento que debe tener un servicio durante un período de cumplimiento. Lo que queda en el período de cumplimiento se convierte en el porcentaje de error aceptable. El porcentaje de error aceptable cuantifica el grado en el que un servicio puede dejar de funcionar durante el período de cumplimiento y aún cumplir con el SLO.
Los porcentajes de error aceptables te permiten realizar un seguimiento de cuántos eventos individuales incorrectos (como solicitudes) pueden ocurrir durante el resto del período de cumplimiento antes de que se infrinja el SLO. Puedes usar el porcentaje de error aceptable para administrar las tareas de mantenimiento, como la implementación de versiones nuevas. Si el porcentaje de error aceptable está cerca de agotarse, tomar medidas riesgosas, como enviar actualizaciones nuevas, puede ocasionar que infrinjas un SLO.
El porcentaje de error aceptable para un período de cumplimiento es (1 objetivo de SLO) x (eventos aptos en período de cumplimiento). Por ejemplo, si tu SLO indica que el 85% de las solicitudes deben ser correctas en un período progresivo de 7 días, tu porcentaje de error aceptable permite que el 15% de estas solicitudes tengan errores. Por ejemplo, si recibiste 60,480 solicitudes en la última semana, tu porcentaje de error aceptable es el 15% de ese total o 9,072 solicitudes que se permite que tengan errores. Si entregaste más errores que estos, tu servicio estuvo fuera del SLO durante el período de cumplimiento de 7 días.
Diseña y usa los SLO
¿Cuáles son las características de un buen SLO? ¿Qué debes tener en cuenta cuando tomas decisiones? En esta sección, se proporciona una descripción general de algunos de los conceptos generales sobre el diseño y el uso de los SLO. Este tema se trata con mucho más detalle en Ingeniería de confiabilidad de sitios: Cómo se ejecuta Google en los sistemas de producción, en el capítulo sobre los SLO.
Los SLO definen el rendimiento objetivo que deseas obtener de tu servicio. En general, los SLO no deben ser superiores a lo que es necesario o significativo. Si los usuarios no pueden determinar la diferencia entre el 99% de disponibilidad y el 99,9% de disponibilidad del servicio, usa el valor más bajo como SLO. El valor más alto es más difícil de cumplir y no hará ninguna diferencia para tus usuarios. Un servicio que debe cumplir con un objetivo de SLO del 100% no tiene un porcentaje de error aceptable. Establecer un SLO de este tipo es una práctica no recomendada.
Los SLO suelen ser más estrictos que los compromisos públicos o contractuales. Es preferible que un SLO sea más estricto que un compromiso público. De esta manera, si ocurre algo que infrinja el SLO, estarás al tanto del problema y podrás solucionarlo antes de que se infrinja el compromiso o contrato. La violación de un compromiso o contrato puede tener consecuencias legales, financieras o de reputación. Un SLO es parte de un sistema de advertencia temprana para evitar que esto suceda.
Períodos de cumplimiento
Existen dos tipos de períodos de cumplimiento para los SLO:
- Períodos basados en el calendario (de fecha a fecha)
- Períodos progresivos (desde n días hasta ahora, en los que n varía de 1 a 30 días)
Períodos de cumplimiento basados en el calendario
Los períodos de cumplimiento se pueden establecer en períodos de calendario, como una semana o un mes.
El período de cumplimiento y el porcentaje de error aceptable se restablecen en los límites de calendario conocidos.
Para conocer los valores posibles, consulta CalendarPeriod
.
Con un período de calendario, obtienes una puntuación de rendimiento al final del período. Si se mide con el límite de rendimiento, la puntuación del rendimiento te permite saber si tu servicio cumplió con los requisitos o no. Cuando usas un período de calendario, solo obtienes una calificación de cumplimiento una vez por período de cumplimiento, aunque veas el rendimiento durante todo el período. Sin embargo, la puntuación del final del período te brinda un valor fácil de leer que coincide con facilidad con los períodos de facturación del cliente (si tienes clientes externos que pagan).
Al igual que los meses de un calendario, los períodos mensuales de cumplimiento varían en la cantidad de días que cubren.
Períodos de cumplimiento progresivos basados en ventanas
También puedes medir el cumplimiento durante un período progresivo, de modo que siempre evalúes, por ejemplo, los últimos 30 días. Con un período progresivo, los datos más antiguos del cálculo anterior se descartan del cálculo actual y se reemplazan por datos nuevos.
Con una ventana progresiva, obtienes más mediciones de cumplimiento, es decir, obtienes una medida de cumplimiento de los últimos 30 días, en lugar de una por mes. Los servicios pueden realizar una transición entre el cumplimiento y el incumplimiento, ya que el estado del SLO cambia a diario debido a que se descartan los datos antiguos y se agregan nuevos.
Cumplimiento de los SLO basados en solicitudes y en ventanas
Para determinar si un SLO cumple con los requisitos, se tienen en cuenta dos factores:
- Cómo se determina el período de cumplimiento. Esta determinación se explica en Períodos de cumplimiento.
- El tipo de SLO. Existen dos tipos de SLO:
- SLO basados en solicitudes
- SLO basados en ventanas
El cumplimiento es la proporción entre eventos correctos y eventos totales, que se mide durante el período de cumplimiento. El tipo de SLO determina qué constituye un “evento”.
Si tu SLO es del 99.9%, vas a cumplir con este si tu cumplimiento es al menos del 99.9%. El valor máximo es del 100%.
SLO basados en solicitudes
Un SLOSLO basado en solicitudes se basa en un SLI que se define como la proporción entre la cantidad de solicitudes exitosas y la cantidad total de solicitudes. Un SLO basado en solicitudes se cumple cuando esa proporción alcanza o supera el objetivo del período de cumplimiento.
Por ejemplo, considera este SLO basado en solicitudes: “la latencia es inferior a 100 ms para al menos el 95% de las solicitudes”. Una solicitud exitosa es aquella con un tiempo de respuesta inferior a 100 ms, por lo que la medida de cumplimiento es la fracción de solicitudes con tiempos de respuesta menores que 100 ms. El servicio cumple con los requisitos si esta fracción es de al menos 0.95.
Los SLO basados en solicitudes te brindan una idea del porcentaje de trabajo que el servicio realizó de manera correcta durante todo el período de cumplimiento, sin importar cómo se distribuyó la carga durante el período de cumplimiento.
SLO basados en ventanas
Un SLO basado en ventanas se basa en un SLI que se define como la proporción entre la cantidad de intervalos de medición que cumplen con algún criterio de calidad y la cantidad total de intervalos. Un SLO basado en ventanas se cumple cuando esa proporción alcanza o supera el objetivo del período de cumplimiento.
Por ejemplo, considera este SLO: “la métrica de latencia del percentil 95 es inferior a 100 ms durante, al menos, el 99% de las ventanas de 10 minutos”. Un buen período de medición es un intervalo de 10 minutos en el que el 95% de las solicitudes tienen una latencia inferior a 100 ms. La medida de cumplimiento es la fracción de estos períodos buenos. El servicio cumple con los requisitos si esta fracción es de al menos 0.99.
Como otro ejemplo, supongamos que configuras tu período de cumplimiento a fin de que sea progresivo de 30 días, el intervalo de medición sea un minuto y el objetivo del SLO sea del 99%. Para cumplir con este SLO, tu servicio debe tener 42,768 intervalos “buenos” de 43,200 minutos (el 99% de la cantidad de minutos en 30 días).
Un SLO basado en ventanas te brinda una idea del porcentaje de tiempo que tus clientes consideraron que el servicio funcionó bien o mal. Este tipo de SLO puede ocultar los efectos del comportamiento “inestable”: un intervalo de medición que falló en cada una de sus llamadas se cuenta en el SLO igual que un intervalo de medición que tuvo un error de más. Además, los intervalos con un número bajo de llamadas cuentan igual en el SLO que un intervalo de medición con actividad intensa.
Trayectoria del porcentaje de error aceptable
El porcentaje de error aceptable es la diferencia entre un 100% de buen servicio y tu SLO, el nivel deseado de buen servicio. La diferencia entre ambos es tu margen de maniobra.
En general, un porcentaje de error aceptable comienza como un valor máximo y disminuye con el tiempo, lo que activa un incumplimiento del SLO cuando el porcentaje de error aceptable es inferior a 0.
Hay algunas excepciones notables a este patrón:
Si tienes un SLO basado en solicitudes que se mide durante un período de cumplimiento de calendario y el servicio aumentó su actividad durante el período de cumplimiento, el porcentaje de error aceptable restante puede aumentar.
¿Cómo puede ser posible? El sistema de SLO no puede saber con anticipación cuánta actividad tendrá el servicio en cada período de cumplimiento, por lo tanto, extrapola un valor probable. Este valor es la proporción de llamadas hasta el momento actual en el tiempo transcurrido desde el comienzo del cumplimiento, multiplicada por la duración del período de cumplimiento.
A medida que la tasa de actividad aumenta, el tráfico esperado para el período también aumenta y, como resultado, aumenta el porcentaje de error aceptable.
Si estás midiendo un SLO durante un período de cumplimiento progresivo, siempre estarás de forma efectiva al final de un período de cumplimiento. En lugar de comenzar desde cero, los datos antiguos se descartan y se agregan de manera continua datos nuevos.
Si un período de cumplimiento deficiente excede la ventana de cumplimiento, y si el tiempo presente que lo reemplaza sí cumple con los requisitos, el porcentaje de error aceptable aumenta. En cualquier momento, un porcentaje de error aceptable ≥ 0 indica una ventana de SLO progresivo que cumple con los requisitos, y un porcentaje de error aceptable < 0 indica una ventana de SLO progresivo que no cumple con los requisitos.
Supervisa el porcentaje de error aceptable
Puedes crear políticas de alertas para que se te advierta si un porcentaje de error aceptable se consume a un ritmo más rápido que el deseado. Consulta Alertas sobre el porcentaje de error aceptable para obtener más información.
¿Qué sigue?
- En Microservicios, se describe cómo usar la consola de Google Cloud para configurar, visualizar y administrar tus microservicios.
- Alertas sobre tu ritmo de consumo describe cómo supervisar tus SLI para recibir alertas sobre posibles problemas.
- En Trabaja con la API de SLO, se muestra cómo usar la API de SLO, un subconjunto de la API de Cloud Monitoring, para crear servicios, SLO y estructuras relacionadas.