Golden Signals
Los Golden Signals son una colecci贸n de m茅tricas para aplicaciones y servicios que permiten establecer un framework m铆nimo para monitorear las operaciones de un sitio. El concepto se origin贸 en el libro "Site Reliability Engineering" de Google.
El enfoque principal es monitorear el tr谩fico, errores, latencias, normalmente en t茅rminos de tasas, cantidad de errores y duraci贸n (RED - Rate Error Duration). Adicionalmente se帽ales como la utilizaci贸n de recursos (CPU, memoria) est谩n consideradas.
El prop贸sito de las Golden Signals es habilitar la observabilidad de las aplicaciones y servicios, flujos de clientes y las operaciones dentro de un marco estandarizado de se帽ales. Los principales beneficios de usarlas son los siguientes:
-
Monitoreo consistente y alerta temprana en todos los servicios. 24/7 de se帽ales como la Disponibilidad, Tr谩fico, Latencia, Errores y Despliegues.
-
Detecci贸n proactiva del desempe帽o del sitio o aplicaci贸n, detectando problemas antes de que un incidente ocurra.
-
Estandarizaci贸n de la instrumentaci贸n, m茅tricas, alertas y dashboards.
-
Mapeo de dependencias usadas en las relaciones de cliente servidor en los reportes de Golden Signals.
| Se帽al (Signal) | 驴Qu茅 analiza? | 驴C贸mo se granulariza? | M茅trica |
|---|---|---|---|
Availability (Disponibilidad) |
Analiza la disponibilidad de los servidores |
Se puede analizar por regiones de data center |
Porcentaje de Servidores Saludables (%). |
Traffic (Tr谩fico) |
Analiza las respuestas con estado 2xx |
Se puede analizar por regiones de data center |
Cantidad de Peticiones (Throughput, Rendimiento) por Segundo |
Latency (Latencia) |
Analiza el tiempo de respuesta |
Se puede analizar por regiones de data center |
Tiempo de respuesta en milisegundos |
Errors (Errores) |
Analiza las respuestas con estado distinto a 2xx (4xx, 5xx) |
Se puede analizar por regiones de data center, adem谩s de c贸digos de estado |
Tasa de Respuestas Err贸neas vs Respuestas Correctas |
Deployments (Despliegues) |
Analiza el estado y salud de los despliegues |
Se puede analizar por servicio y/o aplicaci贸n |
Timestamps (Anotaciones de tiempo) |
Saturation (Saturaci贸n) |
Analiza el estado de la CPU, RAM y Disco de los servidores |
Se puede analizar por servicio y/o aplicaci贸n y elemento (CPU, RAM, Uso de Disco) |
Porcentaje % De Uso |
Alertas
Al monitorear utilizando las Golden Signals nos permite definir alertas para ser gatilladas en distintas cirscuntancias. Principalmente hay dos tipos de alertas, de l铆mite fijo y las basadas en tendencias.
Las alertas deber铆an ser habilitadas cuando un artefacto est谩 listo para operar en producci贸n. Todos los miembros del equipo asociados al artefacto deber铆an ser receptores de las alertas, en por lo menos canales de Email y mensajer铆a instant谩nea como Slack o similares. Adem谩s de las alertas de Golden Signals cada equipo puede definir alertas personalizadas que sean relevantes para su contexto.
Alertas de L铆mite Fijo
Las alertas de l铆mite fijo (Fixed threshold alerts) son creadas con un n煤mero definido y fijo que la m茅trica debe ser evaluada de forma instant谩nea o tasada por un per铆odo de tiempo. Este valor puede variar dependiendo de la aplicaci贸n y contexto.
Un servicio cuya cantidad de servidores debe ser mayor a 5. Si baja de ese n煤mero de servidores activos se lanzar谩 una alerta.
Alertas Basadas en Tendencias
Las alertas basadas en tendencias (Trend based alerts) son las que realizan una comparaci贸n de las m茅tricas actuales con datos en distintos puntos de tiempo. Normalmente con los datos de hace 24 horas y con los datos hace 1 semana para el mismo periodo de tiempo. Este tipo de alertas utiliza la desviaci贸n est谩ndar entre las m茅tricas. La desviaci贸n est谩ndar se utiliza para calcular la variaci贸n o dispersi贸n en la que los puntos de datos individuales difieren de la media. Una desviaci贸n baja indica que los puntos de datos est谩n muy cerca de la media, mientras que una desviaci贸n alta muestra que los datos est谩n dispersos en un rango mayor de valores. [ortega-2024]. En el caso de una alerta, obtener la desviaci贸n est谩ndar de la m茅trica nos permite contemplar si la desviaci贸n de la tendencia normal es org谩nica o debido alg煤n problema.
En el caso de las alertas de Golden Signal son mayoritariamente basadas en tendencias, con muy pocas basadas en l铆mites fijos para evitar falsos positivos.
Un servicio cuya data es evaluada todos los d铆as entre las 2:00 PM y las 2:15 PM. Esta data se compara con la medici贸n de ayer entre las 2:00 PM y las 2:15 PM, como tambi茅n con la medici贸n de 1 semana atr谩s entre las 2:00 PM y las 2:15 PM. Si la desviaci贸n est谩ndar es m谩s de 2, se debe lanzar una alerta. (Esto significa que la m茅trica se ha desviado 2 veces).
Automatizaci贸n y Estandarizaci贸n de Alertas
Cuando existen diferentes equipos dentro de una organizaci贸n existe la tendencia de que cada uno utilice sus propias herramientas y formas de crear dashboards. Lo que dificulta la implementaci贸n de las Golden Signals debido a la fragmentaci贸n. Adem谩s si el proceso de implementaci贸n de alertas es manual se puede volver tedioso y lento con mayor probabilidad de fallos (consultas incorrectas, omisi贸n de alertas clave) por error humano al crearlos. Es por esto que es altamente recomendado estandarizar los dashboard y generar plantillas que permiten automatizar la generaci贸n de las consultas y las alertas. Al automaizar la generaci贸n se permite reducir a minutos la creaci贸n de alertas y tener mayor exactitud.
Para esto se dan las siguientes recomendaciones:
-
Utilizar Grafana como sistema de dashboard est谩ndar.
-
Utilizar scripts estandarizados con plantillas para generar las alertas y consultas.
El siguiente c贸digo es un peque帽o ejemplo en el lenguaje Elixir que permite generar un texto a partir de una plantilla. Para 茅sto se utiliza la herramienta de plantillas EEx.
iex> EEx.eval_string "Hola, <%= @name %>", assigns: [name: "Camilo"]
"Hola, Camilo"
La relaci贸n entre los datos, plantillas, script y alertas se puede diagramar de la siguiente manera.
Adem谩s de estandarizar y automatizar la generaci贸n de alertas, se recomienda automatizar el proceso de deployment de las mismas, utilizando alg煤n workflow de Github actions por ejemplo.