En ingeniería de software , más específicamente en computación distribuida , la observabilidad es la capacidad de recopilar datos sobre la ejecución de programas, los estados internos de los módulos y la comunicación entre componentes. [ 1 ] [ 2 ] Para mejorar la observabilidad, los ingenieros de software utilizan una amplia gama de técnicas de registro y rastreo para recopilar información de telemetría, y herramientas para analizarla y utilizarla. La observabilidad es fundamental para la ingeniería de confiabilidad de sitios , ya que es el primer paso para priorizar una interrupción del servicio. Uno de los objetivos de la observabilidad es minimizar la cantidad de conocimiento previo necesario para depurar un problema.
Etimología, terminología y definición
El término se toma prestado de la teoría de control, donde la " observabilidad " de un sistema mide qué tan bien se puede determinar su estado a partir de sus salidas. De manera similar, la observabilidad del software mide qué tan bien se puede comprender el estado de un sistema a partir de la telemetría obtenida (métricas, registros, trazas, perfiles).
La definición de observabilidad varía según el proveedor:
La observabilidad es el proceso de hacer más transparente el estado interno de un sistema. Los sistemas se vuelven observables gracias a los datos que producen, lo que a su vez ayuda a determinar si la infraestructura o la aplicación están en buen estado y funcionan correctamente.
— Grafana Labs [ 3 ]
una medida de qué tan bien puedes comprender y explicar cualquier estado en el que pueda encontrarse tu sistema, sin importar cuán novedoso o extraño sea [...] sin necesidad de implementar código nuevo.
Herramientas y prácticas de software para agregar, correlacionar y analizar un flujo constante de datos de rendimiento de una aplicación distribuida junto con el hardware y la red en la que se ejecuta.
— IBM Instana [ 5 ]
La observabilidad comienza enviando todos sus datos sin procesar a un servicio central antes de comenzar el análisis.
— Edge Delta [ 6 ]
La capacidad de medir el estado actual de un sistema basándose en los datos que genera, como registros, métricas y trazas.
La observabilidad es una herramienta o solución técnica que permite a los equipos depurar activamente su sistema. Se basa en la exploración de propiedades y patrones no definidos de antemano.
— Google Cloud [ 8 ]
Recopilamos, visualizamos y aplicamos inteligencia de forma proactiva a todas sus métricas, eventos, registros y trazas, para que pueda comprender el comportamiento de su complejo sistema digital.
— Nueva Reliquia [ 9 ]
El término se suele denominar por su numerónimo o11y (donde 11 representa el número de letras entre la primera y la última letra de la palabra). Esto es similar a otras abreviaturas de informática como i18n, l10n y k8s . [ 10 ]
Observabilidad frente a monitorización
Observabilidad y monitoreo a veces se usan indistintamente. [ 11 ] A medida que las herramientas, las ofertas comerciales y las prácticas evolucionaron en complejidad, el "monitoreo" se renombró como observabilidad para diferenciar las nuevas herramientas de las antiguas.
Los términos suelen contrastarse en que los sistemas se monitorean utilizando conjuntos predefinidos de telemetría , [ 8 ] y los sistemas monitoreados pueden ser observables . [ 12 ]
Majors et al. sugieren que los equipos de ingeniería que solo tienen herramientas de monitoreo terminan dependiendo del conocimiento previo de los expertos (antigüedad), mientras que los equipos que tienen herramientas de observabilidad dependen del análisis exploratorio (curiosidad). [ 4 ]
Tipos de telemetría
La observabilidad se basa en tres tipos principales de datos de telemetría: métricas, registros y trazas. [ 7 ] [ 8 ] [ 13 ] A menudo se les denomina "pilares de la observabilidad". [ 14 ]
Métrica
Una métrica es una medición puntual ( escalar ) que representa algún estado del sistema. Algunos ejemplos de métricas comunes son:
- número de solicitudes HTTP por segundo;
- número total de fallos en las consultas;
- Tamaño de la base de datos en bytes;
- tiempo en segundos desde la última recolección de basura .
Las herramientas de monitorización suelen configurarse para emitir alertas cuando determinados valores métricos superan los umbrales establecidos. Estos umbrales se definen en función del conocimiento de las condiciones normales de funcionamiento y la experiencia.
Las métricas suelen etiquetarse para facilitar su agrupación y búsqueda.
Los desarrolladores de aplicaciones eligen qué tipo de métricas utilizar para instrumentar su software antes de su lanzamiento. Como resultado, cuando se detecta un problema desconocido, es imposible agregar nuevas métricas sin implementar código nuevo. Además, su cardinalidad puede hacer que el tamaño de almacenamiento de los datos de telemetría sea prohibitivo. Dado que las métricas tienen una cardinalidad limitada, a menudo se utilizan para representar valores agregados (por ejemplo: tiempo promedio de carga de página o promedio de la tasa de solicitudes en intervalos de 5 segundos). Sin un contexto externo, es imposible correlacionar eventos (como solicitudes de usuarios) con valores de métricas específicos.
Registros
Logs, or log lines, are generally free-form, unstructured text blobs that are intended to be human readable. Modern logging is structured to enable machine parsability.[4] As with metrics, an application developer must instrument the application upfront and ship new code if different logging information is required.
Logs typically include a timestamp and severity level. An event (such as a user request) may be fragmented across multiple log lines and interweave with logs from concurrent events.
Traces
Distributed traces
A cloud native application is typically made up of distributed services which together fulfill a single request. A distributed trace is an interrelated series of discrete events (also called spans) that track the progression of a single user request.[4] A trace shows the causal and temporal relationships between the services that interoperate to fulfill a request.
Instrumenting an application with traces means sending span information to a tracing backend. The tracing backend correlates the received spans to generate presentable traces. To be able to follow a request as it traverses multiple services, spans are labeled with unique identifiers that enable constructing a parent-child relationship between spans. Span information is typically shared in the HTTP headers of outbound requests.[4][15][16]
Continuous profiling
Continuous profiling is another telemetry type used to precisely determine how an application consumes resources.[17]
Instrumentation
To be able to observe an application, telemetry about the application's behavior needs to be collected or exported. Instrumentation means generating telemetry alongside the normal operation of the application.[4] Telemetry is then collected by an independent backend for later analysis.
In fast-changing systems, instrumentation itself is often the best possible documentation, since it combines intention (what are the dimensions that an engineer named and decided to collect?) with the real-time, up-to-date information of live status in production.[4]
Instrumentation can be automatic, or custom. Automatic instrumentation offers blanket coverage and immediate value; custom instrumentation brings higher value but requires more intimate involvement with the instrumented application.
La instrumentación puede ser nativa (realizada en el código, modificando el código de la aplicación instrumentada) o externa (por ejemplo, sidecar, eBPF ). Dado que la instrumentación añade operaciones al código existente, introduce una sobrecarga en tiempo de ejecución y puede aumentar el tiempo de ejecución del software. La sobrecarga resultante varía significativamente según el marco de observabilidad y el método utilizado. [ 18 ]
La verificación de nuevas funcionalidades en producción mediante su envío junto con instrumentación personalizada es una práctica denominada "desarrollo impulsado por la observabilidad". [ 4 ]
"Pilares de la observabilidad"
Las métricas, los registros y las trazas se enumeran comúnmente como los pilares de la observabilidad. [ 14 ] Majors et al. sugieren que los pilares de la observabilidad son la alta cardinalidad, la alta dimensionalidad y la explorabilidad, argumentando que los libros de ejecución y los paneles tienen poco valor porque "los sistemas modernos rara vez fallan exactamente de la misma manera dos veces". [ 4 ]
Autocontrol
La automonitorización es una práctica en la que los sistemas de observabilidad se supervisan mutuamente para reducir el riesgo de interrupciones imperceptibles. La automonitorización puede implementarse junto con la alta disponibilidad y la redundancia para evitar aún más fallos correlacionados.
Observabilidad de los sistemas de IA
A medida que el aprendizaje automático y los grandes modelos de lenguaje se han incorporado a la producción, la observabilidad también se ha aplicado a los sistemas de inteligencia artificial , una especialización conocida como observabilidad de IA . Debido a que estos modelos obtienen sus resultados de distribuciones de probabilidad, un sistema puede parecer saludable según medidas convencionales como la latencia y la tasa de error, pero aun así devolver respuestas incorrectas, irrelevantes o inseguras. [ 19 ] Para capturar esto, la observabilidad de IA mantiene los pilares convencionales de métricas, registros y trazas, y agrega señales que son específicas de los modelos, como el uso de tokens, la calidad de la salida y la deriva del modelo. [ 20 ] A menudo se describe como la capa de monitoreo en tiempo de ejecución de MLOps , y los estándares abiertos, como las convenciones semánticas de OpenTelemetry para IA generativa, tienen como objetivo registrar las llamadas del modelo, el uso de tokens y las puntuaciones de evaluación de una manera que cualquier herramienta pueda leer. [ 21 ] [ 22 ]
Véase también
Enlaces externos
- Grupo Asesor Técnico (TAG) de Observabilidad de la CNCF
Bibliografía
- Boten, Alex; Majors, Charity (2022). Observabilidad nativa en la nube con OpenTelemetry . Packt Publishing. ISBN 978-1-80107-190-1OCLC 1314053525
- Majors, Charity; Fong-Jones, Liz; Miranda, George (2022). Ingeniería de observabilidad : cómo lograr la excelencia en la producción (1.ª ed.). Sebastopol, CA: O'Reilly Media, Inc. ISBN 9781492076445OCLC 1315555871
- Sridharan, Cindy (2018). Observabilidad de sistemas distribuidos : una guía para construir sistemas robustos (1.ª ed.). Sebastopol, CA: O'Reilly Media, Inc. ISBN 978-1-4920-3342-4OCLC 1044741317
- Hausenblas, Michael (2023). Observabilidad de las nubes en acción . Manning. ISBN 9781633439597OCLC 1359045370 .
Referencias
- ↑ Fellows, Geoff (1998). "Cliente/Servidor de alto rendimiento: una guía para construir y gestionar sistemas distribuidos robustos". Internet Research . 8 (5) intr.1998.17208eaf.007. doi : 10.1108/intr.1998.17208eaf.007 . ISSN 1066-2243 .
- ↑ Cantrill, Bryan (2006). "Oculto a plena vista: las mejoras en la observabilidad del software pueden ayudarle a diagnosticar sus problemas de rendimiento más críticos" . ACM Queue . 4 (1): 26– 36. doi : 10.1145/1117389.1117401 . ISSN 1542-7730 . S2CID 14505819 .
- ↑ "¿Qué es la observabilidad?" . Grafana Labs . Consultado el 8 de diciembre de 2025 .
- 1 2 3 4 5 6 7 8 9 Majors, Charity; Fong-Jones, Liz; Miranda, George (2022). Ingeniería de observabilidad : cómo lograr la excelencia en la producción (1.ª ed.). Sebastopol, CA: O'Reilly Media, Inc. ISBN 9781492076445OCLC 1315555871
- ↑ "¿Qué es la observabilidad?" . IBM . 15 de octubre de 2021. Consultado el 9 de marzo de 2023 .
- ↑ "Cómo comenzar la observabilidad en la fuente de datos" . Cisco . 26 de octubre de 2023. Consultado el 26 de octubre de 2023 .
- 1 2 Livens, Jay (octubre de 2021). "¿Qué es la observabilidad?" . Dynatrace . Recuperado el 9 de marzo de 2023 .
- 1 2 3 "Medición de DevOps: Monitoreo y observabilidad" . Google Cloud . Consultado el 9 de marzo de 2023 .
- ↑ Reinholds, Amy (30 de noviembre de 2021). "¿Qué es la observabilidad?" . New Relic . Consultado el 9 de marzo de 2023 .
- ↑ "¿En qué se diferencian los registros estructurados de los eventos?" 26 de junio de 2018.
- ↑ Hadfield, Ally (29 de junio de 2022). "Observabilidad vs. Monitoreo: ¿Cuál es la diferencia en DevOps?" . Instana . Recuperado el 15 de marzo de 2023 .
- ↑ Kidd, Chrissy. "Monitoreo, observabilidad y telemetría: todo lo que necesita saber para el trabajo observable" . Recuperado el 15 de marzo de 2023 .
- ↑ "¿Qué es la observabilidad? Una guía para principiantes" . Splunk . Consultado el 9 de marzo de 2023 .
- 1 2 Sridharan, Cindy (2018). «Capítulo 4. Los tres pilares de la observabilidad» . Observabilidad de sistemas distribuidos : una guía para construir sistemas robustos (1.ª ed.). Sebastopol, CA: O'Reilly Media, Inc. ISBN 978-1-4920-3342-4OCLC 1044741317
- ↑ "Trace Context" . W3C. 23-11-2021 . Consultado el 27-09-2023 .
- ↑ "b3-propagation" . openzipkin . Consultado el 27 de septiembre de 2023 .
- ↑ "¿Qué es el perfilado continuo?" . Cloud Native Computing Foundation . 31 de mayo de 2022 . Consultado el 9 de marzo de 2023 .
- ↑ Reichelt, David Georg; Yang, Shinhyung; Hansson, Marcel; Hasselbring, Wilhelm (2026). Benchmarking the Overhead of Distributed Tracing Agents . 17.ª Conferencia Internacional ACM/SPEC sobre Ingeniería del Rendimiento (ICPE '26). Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 147–161 . doi : 10.1145/3777884.3797004 . ISBN 9798400723254.
- ↑ Majors, Charity; Fong-Jones, Liz; Miranda, George (2022). Ingeniería de la observabilidad . O'Reilly Media. ISBN 978-1492076445.
- ↑ Sridharan, Cindy (2018). Observabilidad de sistemas distribuidos . O'Reilly Media. ISBN 978-1492033424.
- ↑ Kreuzberger, Dominik; Kühl, Niklas; Hirschl, Sebastián (2023). "Operaciones de aprendizaje automático (MLOps): descripción general, definición y arquitectura". Acceso IEEE . 11 : 31866– 31879. doi : 10.1109/ACCESS.2023.3262138 .
- ↑ "Convenciones semánticas para sistemas de IA generativa" . GitHub . OpenTelemetry . Consultado el 3 de julio de 2026 .
- computación distribuida
- Ingeniería de software