La monitorización de servicios y la API SLO te ayudan a gestionar tus servicios como Google gestiona los suyos. Los conceptos básicos de la monitorización de servicios incluyen los siguientes:
- Seleccionar métricas que actúen como indicadores de nivel de servicio (SLIs).
- Usar los SLIs para definir objetivos de nivel de servicio (SLOs) para los valores de los SLIs.
- Usar el presupuesto de errores implícito en el objetivo de nivel de servicio para mitigar los riesgos de tu servicio.
En esta página se presentan estos conceptos y se describen algunos aspectos que debes tener en cuenta al diseñar un SLO. En las demás páginas de esta sección se ponen en práctica estos conceptos.
Terminología
La monitorización de servicios tiene un conjunto de conceptos básicos que se presentan a continuación:
- Indicador de nivel de servicio (SLI): una medición del rendimiento.
- Objetivo de nivel de servicio (SLO): una declaración del rendimiento deseado.
- Presupuesto de errores: empieza en 1 - objetivo de nivel de servicio y disminuye a medida que el rendimiento real no alcanza el objetivo de nivel de servicio.
Indicadores de nivel de servicio
Cloud Monitoring recoge métricas que miden el rendimiento de la infraestructura de servicio. Estos son algunos ejemplos de métricas de rendimiento:
- Número de solicitudes: por ejemplo, el número de solicitudes HTTP por minuto que dan como resultado respuestas 2xx o 5xx.
- Latencias de respuesta: por ejemplo, la latencia de las respuestas HTTP 2xx.
Las métricas de rendimiento se identifican automáticamente en función de 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 indicadores de nivel de servicio de tu servicio. Un SLI describe el rendimiento de algún aspecto de tu servicio. En el caso de los servicios de Cloud Service Mesh, Istio en Google Kubernetes Engine y App Engine, ya se conocen los SLIs útiles. Por ejemplo, si tu servicio tiene métricas de recuento de solicitudes o de latencias de respuesta, puedes obtener indicadores de nivel de servicio (SLIs) estándar a partir de esas métricas creando ratios de la siguiente manera:
- Un indicador de nivel de servicio de disponibilidad es la proporción del número de respuestas correctas con respecto al número total de respuestas.
- Un indicador de nivel de servicio de latencia es la proporción del número de llamadas por debajo de un umbral de latencia con respecto al número total de llamadas.
También puedes configurar SLIs específicos de un servicio para medir de otra forma lo que significa un "buen rendimiento". Por lo general, estos SLIs se dividen en dos categorías:
- SLIs basados en solicitudes, en los que el buen servicio se mide contando unidades atómicas de servicio, como el número de solicitudes HTTP correctas.
- Los SLIs basados en periodos, en los que se mide la calidad del servicio contando el número de periodos de tiempo durante los cuales el rendimiento cumple un criterio de calidad, como la latencia de respuesta por debajo de un umbral determinado.
Estos SLIs se describen con más detalle en el artículo Cumplimiento de los SLOs basados en solicitudes y ventanas.
Para ver ejemplos de creación de SLIs para servicios seleccionados, consulta Crear SLIs a partir de métricas.
Objetivos de nivel de servicio
Un SLO es el valor objetivo de un SLI, medido durante un periodo. El servicio determina los indicadores de nivel de servicio disponibles y tú especificas los objetivos de nivel de servicio en función de los indicadores de nivel de servicio. El OLS define qué se considera un buen servicio. Puede crear hasta 500 SLOs por servicio en Cloud Monitoring.
Los objetivos de nivel de servicio se crean con los siguientes tipos de información:
- SLI que mide el rendimiento del servicio
- Objetivo de rendimiento que especifica el nivel de rendimiento deseado
- Periodo, llamado "periodo de cumplimiento", para comparar los resultados del SLI con el objetivo de rendimiento.
Por ejemplo, puede que tengas requisitos como estos:
- La latencia solo puede superar los 300 ms en el 5 % de las solicitudes durante un periodo continuado de 30 días.
- El sistema debe tener una disponibilidad del 99% medida a lo largo de una semana natural.
Requisitos como estos pueden servir de base para los SLOs. Consulta Diseñar y usar SLOs para obtener información sobre cómo definir SLOs adecuados.
Los cambios en el cumplimiento de los SLOs también pueden indicar el inicio de los fallos. Monitorizar estos cambios puede darte suficiente margen para solucionar un problema antes de que se propague. Por lo tanto, las políticas de alertas suelen usarse para monitorizar el cumplimiento de los objetivos de nivel de servicio. Para obtener más información, consulta Alertas sobre tu presupuesto de errores.
Es útil que el objetivo de nivel de servicio sea inferior al 100%, ya que determina el presupuesto de errores. Los SLOs suelen describirse como un "número de nueves": 99% (dos nueves), 99,9% (tres nueves), etc. El valor más alto que puedes definir es el 99,9%, pero puedes usar cualquier valor inferior que sea adecuado para tu servicio.
Presupuestos de errores
Un objetivo de nivel de servicio especifica el grado de rendimiento que debe alcanzar un servicio durante un periodo de cumplimiento. Lo que quede en el periodo de cumplimiento se convertirá en el presupuesto de errores. El presupuesto de errores cuantifica el grado de error que puede alcanzar un servicio durante el periodo de cumplimiento y sin dejar de cumplir el objetivo de nivel de servicio.
Los presupuestos de errores te permiten monitorizar cuántos eventos individuales incorrectos (como solicitudes) pueden producirse durante el resto del periodo de cumplimiento antes de que incumplas el objetivo de nivel de servicio. Puedes usar el presupuesto de errores para gestionar tareas de mantenimiento, como la implementación de nuevas versiones. Si el presupuesto de errores está a punto de agotarse, tomar medidas arriesgadas, como lanzar nuevas actualizaciones, puede provocar que incumplas un SLO.
El presupuesto de errores de un periodo de cumplimiento es (1 − objetivo de nivel de servicio) × (eventos aptos del periodo de cumplimiento). Por ejemplo, si tu SLO es del 85 % de las solicitudes correctas en un periodo de 7 días, tu presupuesto de errores permite que el 15% de estas solicitudes sean incorrectas. Si has recibido, por ejemplo, 60.480 solicitudes en la última semana, tu presupuesto de errores será el 15% de ese total, es decir, 9072 solicitudes incorrectas. Si has mostrado más errores que este, tu servicio no ha cumplido el objetivo de nivel de servicio durante el periodo de cumplimiento de 7 días.
Diseñar y usar SLOs
¿Qué hace que un SLO sea bueno? ¿Qué aspectos se deben tener en cuenta a la hora de tomar decisiones? En esta sección se ofrece una descripción general de algunos de los conceptos generales relacionados con el diseño y el uso de los SLOs. Este tema se trata con mucho más detalle en el libro Site Reliability Engineering: How Google Runs Production Systems, en el capítulo sobre los SLOs.
Los SLOs definen el rendimiento objetivo que quieres que tenga tu servicio. Por lo general, los SLOs no deben ser más altos de lo necesario o significativo. Si tus usuarios no pueden distinguir entre el 99% y el 99,9% de disponibilidad de tu servicio, utiliza el valor más bajo como SLO. Cuanto mayor sea el valor, más caro será cumplirlo y no supondrá ninguna diferencia para los usuarios. Un servicio que debe cumplir un objetivo de nivel de servicio del 100% no tiene presupuesto de errores. Definir un SLO de este tipo es una práctica inadecuada.
Los SLOs suelen ser más estrictos que los compromisos públicos o contractuales. Quieres que un SLO sea más estricto que un compromiso público. De esta forma, si ocurre algo que provoca una infracción del SLO, lo sabrás y podrás solucionar el problema antes de que provoque una infracción de un compromiso o un contrato. Incumplir un compromiso o un contrato puede tener consecuencias económicas, legales o para la reputación. Un SLO forma parte de un sistema de alerta temprana para evitar que eso ocurra.
Periodos de cumplimiento
Hay dos tipos de periodos de cumplimiento de los SLOs:
- Periodos basados en el calendario (de una fecha a otra)
- Periodos continuos (desde hace n días hasta ahora, donde n va de 1 a 30 días)
Periodos de cumplimiento basados en el calendario
Los periodos de cumplimiento se pueden definir como periodos del calendario, como una semana o un mes.
El periodo de cumplimiento y el margen de error se restablecen en los límites de calendario conocidos.
Para ver los valores posibles, consulta CalendarPeriod
.
Si optas por días naturales, obtendrás una puntuación de rendimiento al final del periodo. La puntuación de rendimiento, que se calcula en función del umbral de rendimiento, te indica si tu servicio cumple los requisitos. Si optas por días naturales, solo obtendrás una valoración de cumplimiento una vez por periodo de cumplimiento, aunque veas el rendimiento a lo largo del periodo. Sin embargo, la puntuación de final de periodo te ofrece un valor fácil de leer que se corresponde fácilmente con tus periodos de facturación de clientes (si tienes clientes externos de pago).
Al igual que los meses del calendario, los periodos de cumplimiento mensuales varían en el número de días que abarcan.
Periodos de cumplimiento basados en ventanas de tiempo
También puede medir el cumplimiento durante un periodo continuo para evaluar siempre, por ejemplo, los últimos 30 días. Si el periodo es continuo, los datos más antiguos del cálculo anterior se eliminan del cálculo actual y se sustituyen por datos nuevos.
Con una ventana continua, obtendrá más mediciones de cumplimiento, es decir, una medición de cumplimiento de los últimos 30 días, en lugar de una al mes. Los servicios pueden pasar de cumplir los requisitos a no cumplirlos a medida que cambia el estado del SLO cada día, ya que se eliminan los puntos de datos antiguos y se añaden los nuevos.
Cumplimiento de los objetivos de nivel de servicio basados en solicitudes y en periodos
Para determinar si un SLO cumple los requisitos, se tienen en cuenta dos factores:
- Cómo se determina el periodo de cumplimiento. Esta determinación se explica en la sección Periodos de cumplimiento.
- El tipo de SLO. Hay dos tipos de SLOs:
- Objetivos de nivel de servicio basados en solicitudes
- Objetivos de nivel de servicio basados en ventanas
Cumplimiento es la proporción de eventos correctos con respecto al total de eventos, medida durante el periodo de cumplimiento. El tipo de SLO determina qué constituye un "evento".
Si tu objetivo de nivel de servicio es del 99,9%, lo cumples si tu cumplimiento es de al menos el 99,9%. El valor máximo es del 100%.
Objetivos de nivel de servicio basados en solicitudes
Un SLO basado en solicitudes se basa en un SLI que se define como la proporción del número de solicitudes válidas con respecto al número total de solicitudes. Un SLO basado en solicitudes se cumple cuando esa proporción alcanza o supera el objetivo durante el periodo de cumplimiento.
Por ejemplo, considera este SLO basado en solicitudes: "La latencia es inferior a 100 ms en al menos el 95% de las solicitudes". Una solicitud correcta es aquella cuyo tiempo de respuesta es inferior a 100 ms, por lo que la medida de cumplimiento es la fracción de solicitudes con tiempos de respuesta inferiores a 100 ms. El servicio cumple el SLO si esta fracción es al menos 0,95.
Los SLOs basados en solicitudes te permiten saber qué porcentaje del trabajo de tu servicio se ha realizado correctamente durante todo el periodo de cumplimiento, independientemente de cómo se haya distribuido la carga a lo largo de ese periodo.
Objetivos de nivel de servicio basados en ventanas
Un objetivo de nivel de servicio basado en ventanas se basa en un indicador de nivel de servicio definido como la proporción del número de intervalos de medición que cumplen un criterio de calidad con respecto al número total de intervalos. Se cumple un SLO basado en ventanas cuando esa proporción alcanza o supera el objetivo del periodo de cumplimiento.
Por ejemplo, considera este SLO: "La métrica de latencia del percentil 95 es inferior a 100 ms en al menos el 99% de las ventanas de 10 minutos". Un buen periodo 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 del cumplimiento es la fracción de esos buenos periodos. El servicio cumple los requisitos si esta fracción es de al menos 0,99.
Por ejemplo, supongamos que configura un periodo de cumplimiento de 30 días, un intervalo de medición de un minuto y un objetivo de SLO del 99%. Para cumplir este SLO, tu servicio debe tener 42.768 intervalos "buenos" de 43.200 minutos (el 99% del número de minutos en 30 días).
Un SLO basado en ventanas te da una idea del porcentaje del tiempo que tus clientes han considerado que el servicio funcionaba bien o mal. Este tipo de SLO puede ocultar los efectos de un comportamiento "explosivo": un intervalo de medición que ha fallado en todas sus llamadas se tiene en cuenta en el SLO tanto como un intervalo de medición que ha tenido un error de más. Además, los intervalos con un número bajo de llamadas se tienen en cuenta en el SLO tanto como un intervalo de medición con mucha actividad.
Trayectoria de los presupuestos de errores
El presupuesto de errores es la diferencia entre el 100% de buen servicio y el objetivo de nivel de servicio, que es el nivel de buen servicio deseado. La diferencia entre ellos es el margen de maniobra.
Por lo general, el presupuesto de errores empieza con un valor máximo y disminuye con el tiempo. Cuando el presupuesto de errores es inferior a 0, se activa una infracción del objetivo de nivel de servicio.
Hay un par de excepciones notables a este patrón:
Si tienes un objetivo de nivel de servicio basado en solicitudes medido durante un periodo de cumplimiento del calendario y el servicio ha aumentado su actividad durante ese periodo, el presupuesto de errores restante puede aumentar.
¿Cómo es posible? El sistema de SLO no puede saber de antemano cuánta actividad tendrá el servicio en cada periodo de cumplimiento, por lo que extrapola un valor probable. Este valor es la proporción de llamadas hasta el momento actual con respecto al tiempo transcurrido desde el inicio del periodo de cumplimiento, multiplicada por la duración del periodo de cumplimiento.
A medida que aumenta el porcentaje de actividad, también lo hace el tráfico esperado durante el periodo y, por lo tanto, el presupuesto de errores.
Si mides un SLO durante un periodo de cumplimiento continuo, siempre estarás al final de un periodo de cumplimiento. En lugar de empezar desde cero, los puntos de datos antiguos se van descartando continuamente y se van añadiendo puntos de datos nuevos.
Si un periodo de cumplimiento deficiente sale de la ventana de cumplimiento y el periodo actual, que lo sustituye, cumple los requisitos, el presupuesto de error aumenta. En cualquier momento, un presupuesto de errores ≥ 0 indica una ventana de SLO acumulativo que cumple los requisitos, mientras que un presupuesto de errores < 0 indica una ventana de SLO acumulativo que no los cumple.
Monitorizar el presupuesto de errores
Puedes crear políticas de alertas para que te avisen de que tu presupuesto de errores se está consumiendo a un ritmo más rápido del deseado. Consulta más información sobre las alertas de presupuesto de errores.
Siguientes pasos
- En Microservicios se describen los microservicios y cómo usar la consola Google Cloud para configurarlos, verlos y gestionarlos.
- En Alertas sobre el ritmo de consumo se describe cómo monitorizar tus indicadores de nivel de servicio para recibir alertas sobre posibles problemas.
- En Trabajar con la API SLO se muestra cómo usar la API SLO, un subconjunto de la API Cloud Monitoring, para crear servicios, SLOs y estructuras relacionadas.