¿Qué es la observabilidad?

Completado

Antes de profundizar en el código, vamos a dar un paso atrás y hablar sobre la observabilidad. Debe tener herramientas que le ayuden a comprender el estado interno de un sistema en función de lo que sea visible externamente.

¿Por qué implementar la observabilidad?

Hay varias razones por las que la observabilidad es un aspecto fundamental del desarrollo y la mejora de las aplicaciones nativas de la nube:

  • Descripción del comportamiento del sistema: La observabilidad proporciona información sobre cómo se realiza la aplicación y dónde se producen cuellos de botella o errores.
  • Depuración y solución de problemas: Cuando surgen problemas, las herramientas de observabilidad pueden proporcionar información detallada sobre lo que estaba sucediendo en el sistema en el momento del problema.
  • Mejora continua: La observabilidad no es solo para identificar y resolver problemas; también se usa para mejorar continuamente. Mediante la supervisión del rendimiento del sistema a lo largo del tiempo, puede identificar oportunidades para optimizar el código, mejorar el rendimiento del sistema y mejorar cuantitativamente la experiencia a los usuarios.
  • Detección proactiva de problemas: Con las herramientas de observabilidad adecuadas, a menudo, puede detectar problemas antes de que los usuarios los vean incluso.

La implementación de observabilidad en aplicaciones nativas de nube no es solo un procedimiento recomendado, es una necesidad de mantener, optimizar y mejorar continuamente las aplicaciones. Permite a los desarrolladores ofrecer aplicaciones confiables y de alto rendimiento y proporciona la información necesaria para impulsar la toma de decisiones fundamentada.

Tres pilares de observabilidad

Hay tres pilares principales de observabilidad:

  • Registros: Los registros proporcionan registros detallados de eventos que se producen dentro de una aplicación o sistema. En la aplicación, puede usar la infraestructura Microsoft.Extensions.Logging para registrar eventos.
  • Métricas: Las métricas hacen referencia a medidas y contadores numéricos que proporcionan información sobre el rendimiento y el estado de un sistema. Entre los ejemplos, se incluyen las tasas de solicitud, los tiempos de respuesta, el uso de CPU/memoria y las tasas de error. En la aplicación, es posible que tenga medidas específicas que necesite realizar un seguimiento.
  • Seguimiento distribuido: Este proceso implica el seguimiento de una solicitud a medida que se propaga a través de todos los microservicios de la aplicación nativa de la nube. Cada servicio registra datos de seguimiento como identificadores de solicitud que permiten correlacionar eventos entre servicios. El seguimiento distribuido también es útil para depurar problemas de rendimiento y errores en sistemas complejos.

Juntos, estos tres pilares proporcionan una observabilidad completa en un sistema.

Orígenes de datos para la telemetría

En la aplicación nativa de nube de la empresa, hay varios orígenes de telemetría que puede elegir recopilar:

  • Registros de aplicaciones: Las aplicaciones generan registros que proporcionan información detallada sobre su operación y errores si se producen. El registro es una fuente enriquecida de datos de telemetría.
  • Bases de datos: Las bases de datos pueden proporcionar datos de telemetría sobre las consultas que procesan, los tiempos de ejecución y los errores que se producen.
  • Respuestas y solicitudes HTTP: Las solicitudes y respuestas HTTP entre los microservicios proporcionan datos de telemetría enriquecidos y valiosos. Estos datos incluyen los encabezados de solicitud y respuesta, el contenido del cuerpo, los códigos de estado y la información de tiempo.
  • Datos de rendimiento del lado cliente: En las aplicaciones nativas de la nube con un front-end, puede recopilar los datos de rendimiento del lado cliente. Estos datos pueden incluir visitas a páginas, tiempos de carga y tiempos de interacción de la interfaz de usuario.
  • Métricas de infraestructura: Si la aplicación se hospeda en un entorno de nube, puede recopilar métricas de infraestructura como el uso de CPU, el uso de memoria, el tráfico de red y las operaciones de E/S de disco.

Al recopilar y analizar estos datos de telemetría, puede obtener información valiosa sobre el rendimiento y el estado de la aplicación.

Implementación de la observabilidad

Para agregar observabilidad a la aplicación nativa de la nube, realice estos pasos:

  • Agregue el registro.
  • Habilite las métricas y defina métricas personalizadas para capturar.
  • Habilite el seguimiento distribuido, con OpenTelemetry y Zipkin.
  • Instrumente la aplicación, de nuevo con OpenTelemetry y agregando telemetría al código.
  • Analice los datos de telemetría, con Prometheus, Grafana o Application Insights.

Introducción a OpenTelemetry

¿Cómo ayuda OpenTelemetry a agregar observabilidad a la aplicación y por qué hay compatibilidad profunda con ella en .NET? OpenTelemetry es un marco de observabilidad de código abierto. Proporciona una manera estándar independiente del proveedor para generar datos de telemetría.

OpenTelemetry estandariza la forma en que se recopilan y transmiten los datos de telemetría a las plataformas de back-end. Puente las brechas de visibilidad proporcionando un formato común de instrumentación en todos los microservicios. No tiene que reinstruir el código ni instalar agentes propietarios diferentes cada vez que cambia una plataforma de back-end.

Dado que es un estándar abierto, admite muchas otras herramientas fuera de .NET. OpenTelemetry está configurado para usar extensiones que permiten a los exportadores crear datos de telemetría en todas las distintas herramientas. Esto significa que puede usar las mismas herramientas para supervisar los microservicios independientemente del idioma en el que se escriben.

OpenTelemetry le ayuda a recopilar y supervisar los tres pilares de observabilidad: registros, métricas y seguimientos. Verá cómo realizar estas tareas en las siguientes unidades.