Monitoreo versus observabilidad: La verdadera diferencia, con registros, métricas y seguimientos
El seguimiento te dice que algo anda mal. La observabilidad le ayuda a descubrir por qué, incluso cuando el fallo es uno que nunca predijo. Siga un incidente de pago para ver cómo ambos trabajan juntos.
- Monitoreo detecta problemas conocidos mediante métricas y alertas predefinidas.
- Observabilidad es qué tan bien se puede comprender el estado interno de un sistema a partir de sus salidas.
- Los registros, métricas y seguimientos son señales comunes, pero recopilarlas no garantiza información valiosa.
- Trabajan juntos: el monitoreo da la alarma y la observabilidad ayuda a encontrar la causa.
El tablero es verde y, sin embargo, los clientes se quejan de que el proceso de pago no funciona. Si ha estado en esta posición, ya comprende la diferencia entre monitoreo y observabilidad. Tu seguimiento sólo comprobó lo que pensabas comprobar, y este fallo es algo nuevo.
Esta guía explica ambas ideas sin el lenguaje de marketing y sigue un incidente ficticio desde la alerta hasta la causa raíz. Los registros, trazas y números se inventan para ilustrar el proceso. También debe saber que los proveedores y los profesionales trazan esta línea de manera diferente y algunos la consideran en parte una distinción de marketing. Nos centramos en la parte práctica.
La respuesta corta
El seguimiento es una actividad. Usted decide de antemano qué mirar, como CPU, tasa de error o espacio en disco, y establece umbrales que activan alertas. Responde: “¿Está sucediendo lo que me preocupaba?”
La observabilidad es una propiedad de su sistema. El término proviene de la teoría del control, donde describe qué tan bien se puede inferir el estado interno de un sistema a partir de sus resultados externos. En la práctica, responde: “¿Qué está pasando y por qué, incluso en el caso de problemas que nunca anticipé?”
Piensa en un coche. Las luces de advertencia en el tablero están monitoreando. Cubren un conjunto de problemas conocidos. El puerto de diagnóstico completo de un mecánico, que permite a alguien hacer nuevas preguntas sobre cualquier parte del motor, está más cerca de ser observable.
Monitoreo versus observabilidad lado a lado
| Aspecto | Monitoreo | Observabilidad |
|---|---|---|
| pregunta principal | ¿Pasa algo mal? | ¿Por qué está mal? |
| Lo mejor para | Modos de falla conocidos | Fallos desconocidos y novedosos. |
| Enfoque | Controles y paneles predefinidos | Exploración abierta de datos enriquecidos |
| Salida típica | Alertas y gráficos de estado. | Respuestas a nuevas preguntas |
| Detalle de datos | A menudo agregado | Detallado, por solicitud cuando sea posible |
| Configuración | Configurar cheques desde fuera | Requiere instrumentar su código |
| Utilizado por | Operaciones, personal de guardia | Desarrolladores y personal de guardia |
Esta no es una elección entre los dos. Aún necesita alertas que le indiquen cuándo mirar.
Por qué el seguimiento por sí solo no es suficiente
Con una aplicación en un servidor, la lista de cosas que pueden salir mal es bastante corta, por lo que puedes verlas todas. Un sistema moderno puede tener docenas de servicios, colas y API de terceros, además de contenedores que van y vienen. Los fallos se convierten en combinaciones que nadie predijo: una región, un tipo de cliente, una versión específica de la aplicación y una única dependencia lenta.
No puedes escribir un panel de antemano para una pregunta en la que no has pensado. Necesitas datos que te permitan preguntarlo después.
Registros, métricas y seguimientos
Estos tres tipos de telemetría suelen denominarse los pilares de la observabilidad. Cada uno responde a una pregunta diferente:
| señal | que es | Respuestas | debilidad |
|---|---|---|---|
| Métricas | Números a lo largo del tiempo | ¿Cuanto? ¿Está empeorando? | Pequeños detalles sobre eventos individuales. |
| Registros | Registros de eventos individuales. | ¿Qué pasó exactamente? | Puede ser costoso y ruidoso |
| Rastros | La ruta de una solicitud a través de los servicios | ¿Adónde se fue el tiempo? | Requieren instrumentación y a menudo se toman muestras. |
Métricas
http_requests_total{service="checkout", status="500"} 1832
http_request_duration_seconds{service="checkout", quantile="0.95"} 2.4
Las métricas son económicas de almacenar y rápidas de consultar, lo que las hace ideales para paneles y alertas. Tenga cuidado con las etiquetas de alta cardinalidad, como una identificación de usuario, en muchos sistemas métricos, porque pueden aumentar drásticamente los costos.
Rastros
Un seguimiento sigue a una solicitud entre servicios. Cada paso es un lapso con una hora de inicio y una duración:
POST /checkout 2410 ms
├─ auth-service: verify token 18 ms
├─ cart-service: load cart 42 ms
├─ pricing-service: calculate 2290 ms <-- slow
│ └─ SELECT coupons ... 2265 ms
└─ payment-service: not reached
Un rastro hace evidente un paso lento, lo cual es muy difícil de ver en registros separados de servicios separados.
Registros
Los registros proporcionan el detalle de lo que sucedió en un momento dado. En un momento veremos cómo hacerlos útiles.
Un recorrido por el incidente
Así es como encajan las piezas, en un ejemplo ficticio.
| paso | señal | lo que aprendemos |
|---|---|---|
| 1. Alertar incendios | Métrica | La latencia de Checkout p95 superó su objetivo de 1 segundo |
| 2. Rómpelo | Métrica | Sólo la aplicación móvil se ve afectada, no la web. |
| 3. Inspeccionar una solicitud | traza | El momento es en el servicio de precios, en una consulta de cupón. |
| 4. Lee los detalles | Registros | Todas las solicitudes lentas utilizan un cupón de la campaña de hoy. |
| 5. Confirma la causa | plan de consulta | La búsqueda de cupones no tiene un índice adecuado |
| 6. Arreglalo | Implementación | Agregue el índice y observe cómo se recupera la latencia |
El monitoreo manejó el paso 1. Todo lo posterior fue observabilidad. Observe cómo cada pregunta surgió de la respuesta anterior. Nadie podría haber creado un panel de control con anticipación para la “consulta de cupones de aplicaciones móviles de la campaña de hoy”. Para la solución en sí, nuestra guía para la optimización de consultas SQL muestra cómo leer ese tipo de plan.
Mejores registros
Los registros de texto sin formato están diseñados para el ojo humano y son difíciles de consultar. Los registros estructurados utilizan campos que una máquina puede filtrar:
# Hard to search
ERROR Payment failed for user 42 after 3 tries
# Easy to search
{"level":"error","event":"payment_failed","user_id":"42",
"attempts":3,"provider":"acme","trace_id":"a1b2c3","duration_ms":2410}
Con el segundo formulario, puedes preguntar inmediatamente “¿cuántas fallas por proveedor en la última hora?” El campo trace_id es especialmente valioso, ya que vincula una línea de registro a toda la solicitud, en todos los servicios que toca.
Nunca registres contraseñas, tokens o números de tarjetas, y ten cuidado con los datos personales. Como explica nuestra guía, cualquier persona que los lea de un registro puede reutilizar los JWT.
Consejo: Agregue el contexto que desee durante un incidente, como la versión, la región, el nivel de cliente y el estado del indicador de función. Poder decir “sólo la versión 2.14 en una región” a menudo resuelve el problema por sí solo.
Las señales doradas
¿No estás seguro de qué monitorear? El libro Site Reliability Engineering de Google sugiere cuatro señales para los sistemas orientados al usuario:
| señal | Pregunta | Ejemplo |
|---|---|---|
| Latencia | ¿Cuánto tiempo tardan las solicitudes? | tiempo de respuesta p95 y p99 |
| Tráfico | ¿Cuánta demanda hay? | Solicitudes por segundo |
| Errores | ¿Cuántas solicitudes fallan? | Tasa de 5xx respuestas |
| Saturación | ¿Qué tan lleno está el sistema? | Uso de CPU, memoria y grupo de conexiones |
Utilice percentiles para la latencia, ya que los promedios ocultan solicitudes lentas, como mostramos en pruebas de carga frente a pruebas de estrés.
Alertas en las que la gente confía
Si las alertas se activan todo el tiempo, la gente deja de leerlas. Los buenos siguen algunas reglas:
- Alerta sobre los síntomas que sienten los usuarios. “Errores de pago superiores al 2%” supera a “CPU al 85%”. Una CPU alta que no daña a nadie no debería despertar a nadie.
- Haga que cada alerta sea procesable. Si nadie necesita hacer nada, conviértalo en un elemento del panel o elimínelo.
- Enlace a un runbook. Dígale al respondedor dónde buscar y qué probar.
- Revíselas periódicamente. Elimine o corrija cualquier alerta que se haya ignorado el mes pasado.
Objetivos de nivel de servicio
Un SLO convierte “el sitio debe ser rápido y confiable” en un objetivo mensurable, como “el 99,9% de las solicitudes de pago se realizan correctamente en 30 días”. Esto permite aproximadamente el 0,1 % de los fallos, lo que se conoce como presupuesto de errores. Si le queda suficiente, puede realizar envíos más rápido y, si está casi agotado, puede priorizar la confiabilidad. Es una forma útil de resolver las discusiones entre la velocidad de entrega y la estabilidad.
OpenTelemetría y herramientas
OpenTelemetry es un estándar de código abierto y neutral para el proveedor para generar y exportar telemetría. Es un proyecto de la Cloud Native Computing Foundation. Instrumentarlo significa que puedes cambiar tu backend más adelante sin tener que volver a escribir tu código. No es un producto de almacenamiento o tablero en sí, por lo que puedes combinarlo con uno:
| Propósito | Ejemplos de código abierto | Ejemplos comerciales |
|---|---|---|
| Métricas | Prometeo | Datadog, nueva reliquia |
| Paneles de control | Grafana | Perro de datos, Dynatrace |
| Registros | Loki, búsqueda abierta | Splunk, elástico |
| Rastros | Jaeger, Tempo | Panal, perro de datos |
Verifique usted mismo las características y los precios actuales, ya que estos productos cambian con frecuencia. Los costos pueden crecer rápidamente con el volumen de datos, así que utilice muestreo y establezca límites de retención.
Cómo empezar
- Comience con las señales doradas para su servicio más importante.
- Agregue una o dos alertas sobre los síntomas que notan los usuarios.
- Cambiar a registros estructurados, con un ID de solicitud en cada línea.
- Agregue seguimiento a su recorrido de usuario principal con OpenTelemetry, ya que la instrumentación automática puede cubrir muchos marcos comunes.
- Vincula las implementaciones a tus gráficos, para que puedas ver si una versión de tu canal de CI/CD provocó un cambio.
- Aprenda de cada incidente. Después de cada uno, pregunte qué datos habrían agilizado su resolución y agréguelos.
Un equipo pequeño con un solo servicio no necesita una plataforma enorme. Las métricas básicas, buenos registros y algunas alertas pueden ser suficientes. El rastreo se gana la vida a medida que crece el número de servicios.
Errores comunes
- Comprar una herramienta y llamarla observabilidad. El valor proviene de una buena instrumentación y de cómo se utilizan los datos.
- Tratar tres pilares como una lista de verificación. Los datos separados sin forma de vincularlos te deja buscando entre pestañas. Las identificaciones compartidas son importantes.
- Recopilar todo. La telemetría sin filtrar se vuelve costosa y agrega ruido.
- Demasiados paneles. Algunas vistas confiables superan a cien que nadie abre.
- Pensando que reemplaza las pruebas. Aún necesitas pruebas antes del lanzamiento. Sin embargo, los lanzamientos de Canarias combinan bien con estas señales.
Conclusión
El monitoreo le indica que algo salió mal y la observabilidad le brinda los medios para descubrir por qué. La prueba práctica es simple: cuando aparece un problema desconocido, ¿puedes encontrar la causa sin enviar un código nuevo? La próxima vez que tenga un incidente, escriba todas las preguntas que no pudo responder. Esa lista es su hoja de ruta.
Preguntas frecuentes
¿Cuál es la diferencia entre monitoreo y observabilidad?
El monitoreo rastrea métricas predefinidas y alertas sobre problemas conocidos. La observabilidad es la capacidad de comprender el estado de un sistema a partir de sus resultados, incluso en caso de problemas inesperados.
¿Cuáles son los tres pilares de la observabilidad?
Son registros, métricas y seguimientos. Los registros registran eventos, las métricas miden valores a lo largo del tiempo y los seguimientos siguen una única solicitud en todos los servicios.
¿Necesito observabilidad si tengo seguimiento?
Para un sistema pequeño y simple, un buen monitoreo y registros pueden ser suficientes. A medida que los sistemas se distribuyen y las fallas son menos predecibles, la observabilidad se vuelve más valiosa.
¿Qué es OpenTelemetry?
Es un estándar de código abierto y un conjunto de herramientas para producir y exportar registros, métricas y seguimientos, por lo que no está atado a un único agente de proveedor.
¿Cuáles son las cuatro señales de oro?
Son latencia, tráfico, errores y saturación. La guía SRE de Google los recomienda como punto de partida para monitorear los sistemas de cara al usuario.
sigue aprendiendo
¿Necesitas ayuda con pruebas, WordPress o SEO?
Ayudamos a los equipos a enviar mejor software y hacer crecer sus sitios. Cuéntenos en qué está trabajando y le sugeriremos un siguiente paso claro.
Más guías sobre testing, IA y desarrollo moderno
¿Te gustó este artículo? Elige un tema y salta directo a nuestros tutoriales más recientes.
Explicación de las alucinaciones de la IA: por qué los modelos de lenguaje inventan cosas y cómo reducirlas
Se explicaron las alucinaciones de la IA: qué son, por qué los modelos de lenguaje las producen, tipos comunes, cómo reducirlas con conexión a tierr…
Leer artículo →DevOpsExplicación de las variables de entorno: archivos .env, secretos y configuración bien hechos
Variables de entorno explicadas con ejemplos de Python que ejecutamos: leerlas y configurarlas, por qué cada valor es una cadena, archivos .env, her…
Leer artículo →Desarrollo de softwareExplicación de la limitación de velocidad de API: algoritmos, encabezados y manejo de errores 429
La limitación de la tasa de API se explica con una simulación que ejecutamos: depósito de tokens, ventana fija, ventana deslizante, 429 respuestas, …
Leer artículo →Automatización de pruebasBurlarse en Python: unittest.mock, patch y los errores que hacen que las pruebas mientan
Burlarse en Python con unittest.mock, probado: Mock y return_value, side_effect, parches donde se usa un nombre, especificación y autospec, fechas d…
Leer artículo →Pruebas de softwareExplicación de la cobertura del código: cobertura de línea versus sucursal y lo que realmente significa 100%
Cobertura del código explicada con una ejecución real de cobertura.py: cobertura de línea, rama y condición, lectura de un informe, por qué una cobe…
Leer artículo →Bases de datos y SQLDELETE vs TRUNCATE vs DROP en SQL: diferencias, reversión y cuándo usar cada uno
DELETE vs TRUNCATE vs DROP explicado con SQL probado: qué elimina cada uno, reversión, activadores, restablecimiento de identidad, velocidad y en qu…
Leer artículo →Bases de datos y SQLVistas SQL explicadas: cree, use y evite los errores, con ejemplos
Vistas SQL explicadas con consultas que ejecutamos: creación de una vista, resultados en vivo, ocultación de columnas, rendimiento, vistas actualiza…
Leer artículo →Desarrollo de softwareInterfaz TypeScript versus tipo: diferencias reales, probadas con el compilador
Interfaz TypeScript versus tipo, verificado con el compilador real: qué pueden hacer ambos, qué puede hacer solo uno, fusión de declaraciones, exten…
Leer artículo →Desarrollo de softwarePython *args y **kwargs explicados: funciones flexibles con ejemplos claros
Python *args y **kwargs explicados con el código que ejecutamos: empaquetado y desempaquetado, orden de parámetros, argumentos solo de palabras clav…
Leer artículo →Desarrollo de softwareFunciones Lambda de Python: sintaxis, usos reales y cuándo no utilizarlas
Funciones lambda de Python explicadas con el código que ejecutamos: sintaxis, clasificación con clave, mapa y filtro, cierres, trampa de enlace tard…
Leer artículo →Inteligencia artificial¿Qué son los agentes de IA? Cómo funcionan, con un bucle de agente simple que puedes ejecutar
¿Qué son los agentes de IA? Una guía sencilla sobre el bucle del agente, las herramientas, la memoria y las barreras de seguridad, con un pequeño bu…
Leer artículo →DevOpsMonitoreo versus observabilidad: la verdadera diferencia, con registros, métricas y seguimientos
Explicación del monitoreo versus observabilidad: fallas conocidas y desconocidas, registros, métricas y seguimientos, un recorrido por incidentes de…
Leer artículo →DevOpsDocker Volumes versus Bind Mounts: persistir los datos del contenedor de la manera correcta
Se explican los volúmenes de Docker frente a los montajes de enlace: por qué desaparecen los datos del contenedor, volúmenes con nombre, montajes de…
Leer artículo →Automatización de pruebasTDD vs BDD: diferencias clave, una función creada en ambos sentidos y cuándo usar cada una
TDD vs BDD explicado con una característica de descuento construida en ambos sentidos: refactor rojo-verde con el código que ejecutamos, escenarios …
Leer artículo →Desarrollo de softwareGit merge vs rebase: diferencias, ejemplos y cuándo usar cada uno
Git merge vs rebase explicado con salida real del log, una tabla comparativa, la regla de oro del rebase y un flujo de trabajo seguro para equipos.
Leer artículo →Desarrollo de softwareList comprehension en Python: sintaxis, ejemplos y cuándo evitarla
List comprehension en Python explicada: sintaxis, filtros, if-else, bucles anidados, tiempos medidos y cuándo es mejor un bucle for normal.
Leer artículo →