Instrumentación y observabilidad

Instrumentación hace referencia al código específico que genera o recoge datos sobre el comportamiento en tiempo de ejecución de tu aplicación. Dentro de tu aplicación, la instrumentación, como la que proporciona OpenTelemetry, puede recoger información específica del dominio sobre el tiempo de ejecución del lenguaje, el framework o la lógica de la aplicación, y luego enviar esos datos a un Google Cloud proyecto o a otro destino. Estos datos, también conocidos como telemetría, incluyen métricas, registros y trazas.

Las métricas a nivel de sistema, como el uso de la CPU, el uso de la memoria y el uso del disco, son valiosas para detectar problemas en tu aplicación, pero no proporcionan mucha información sobre los problemas a nivel de aplicación. La instrumentación puede ayudar a tu aplicación a generar los datos que necesitas para diagnosticar la causa principal de un problema, ya que la telemetría resultante te muestra lo que ocurre en tu aplicación. Por ejemplo, los registros suelen incluir contexto sobre tu programa, como un mensaje de error o un rastreo de pila específicos, y la ubicación en tu código fuente. Del mismo modo, las trazas distribuidas te ayudan a entender cómo interactúan varios servicios al procesar solicitudes. Las métricas te permiten recibir notificaciones cuando tu aplicación no se comporta correctamente.

Instrumentar tu aplicación implica generar telemetría y enviarla a un lugar donde se puedan almacenar y consultar los datos. Por ejemplo, tu instrumentación puede enviar telemetría a un Google Cloud proyecto. Los servicios de Google Cloud Observability te ayudan a recoger, analizar y correlacionar datos de telemetría. También ofrecen valores predeterminados integrados para ayudarte a empezar más rápido, como paneles de control y políticas de alertas predeterminados. Para obtener más información sobre Google Cloud Observability, consulta Observabilidad en Google Cloud.

En la siguiente imagen se muestra cómo usa una aplicación la instrumentación para generar y enviar telemetría a un sistema de almacenamiento:

Ilustración de la arquitectura de la instrumentación en proceso.

Como se muestra en la figura anterior, el código de instrumentación se encuentra en el proceso de tu aplicación e interactúa con ella para generar datos de telemetría. A continuación, el framework de instrumentación exporta tu telemetría a un sistema de almacenamiento configurado. En la figura, el sistema de almacenamiento es tu Google Cloud proyecto.

Acerca de los frameworks de instrumentación independientes del proveedor

Aunque solo tengas previsto enviar telemetría a Google Cloud, te recomendamos que uses un framework de instrumentación de código abierto independiente del proveedor para instrumentar tus aplicaciones. Estos tipos de frameworks tienen algunas ventajas clave:

Sin dependencia de proveedores
Los frameworks independientes de proveedores no están vinculados a ningún proveedor en concreto y proporcionan su propio modelo de datos para la telemetría generada. Por lo tanto, puede enviar datos a varios proveedores y, por lo general, puede cambiar el proveedor que usa sin modificar el código.
Procedimientos estandarizados para recoger datos de telemetría
Los frameworks bien diseñados, como OpenTelemetry, proporcionan un enfoque estandarizado para recoger datos de telemetría de las aplicaciones. Puedes usar el mismo framework para aplicaciones escritas en los idiomas admitidos. Además, como el framework está estandarizado, puedes recoger y comparar la telemetría de todos tus servicios.
Bibliotecas interoperables
Los frameworks de instrumentación incluyen un ecosistema de bibliotecas que recogen señales de telemetría y que son interoperables. Por ejemplo, OpenTelemetry proporciona bibliotecas para recoger datos de traza y datos de métricas. Puedes usar cualquiera de las dos bibliotecas o ambas.

Recomendaciones generales

Esta sección contiene recomendaciones generales sobre cómo instrumentar tu aplicación. Para obtener información específica sobre Google Cloud, consulta Elegir un método de instrumentación.

Para recoger métricas, te recomendamos que uses OpenTelemetry o Prometheus:

  • OpenTelemetry es un proyecto de código abierto que proporciona un framework unificado para la instrumentación de aplicaciones. También proporciona bibliotecas de instrumentación para bibliotecas populares. OpenTelemetry proporciona un agente independiente, el colector de OpenTelemetry, que puede recibir, transformar y exportar telemetría. El archivo de configuración de OpenTelemetry Collector determina el comportamiento de OpenTelemetry Collector. Para enviar telemetría a un agente o directamente a un sistema de almacenamiento, usa el protocolo OpenTelemetry (OTLP).

  • Prometheus es un sistema de monitorización de código abierto popular. Puedes usar las bibliotecas de cliente de Prometheus para generar métricas a partir de tu aplicación. Además, hay un ecosistema de terceros de bibliotecas de instrumentación para frameworks populares. Los clientes de Prometheus exponen sus métricas como un endpoint HTTP que un agente puede raspar.

Para recoger trazas, te recomendamos que uses OpenTelemetry.

Para recoger registros, te recomendamos que uses un framework que se pueda configurar para generar registros estructurados en JSON para Cloud Logging. Para escribir datos de registro, te recomendamos lo siguiente:

Google Cloud soluciones

Google Cloud Observability ofrece opciones flexibles para recoger telemetría:

Siguientes pasos

Para obtener más información sobre Google Cloud Observability, consulta Observabilidad en Google Cloud.