La instrumentación hace referencia al código específico que genera o recopila datos sobre el comportamiento de tiempo de ejecución de tu aplicación. Dentro de la aplicación, la instrumentación, como la que proporciona OpenTelemetry, puede recopilar información específica del dominio sobre el entorno de ejecución del lenguaje, el framework o la lógica de aplicación y, luego, enviar esos datos a un proyecto de Google Cloud o a otro destino. Estos datos, también conocidos como telemetría, incluyen métricas, registros y seguimientos.
Las métricas a nivel del sistema, como el uso de CPU, memoria y disco, son valiosas para detectar problemas con la aplicación, pero no proporcionan mucha información sobre los problemas a nivel de la aplicación. La instrumentación puede ayudar a que la aplicación genere los datos que necesitas para diagnosticar la causa raíz de un problema, ya que la telemetría resultante te muestra lo que sucede dentro de la aplicación. Por ejemplo, los registros suelen incluir contexto sobre tu programa, como un mensaje de error o seguimiento de pila específicos, y la ubicación en tu código fuente. Del mismo modo, los seguimientos distribuidos te ayudan a comprender cómo interactúan varios servicios cuando procesan solicitudes. Las métricas te permiten recibir notificaciones cuando la aplicación no se comporta correctamente.
Instrumentar tu aplicación implica generar telemetría y enviarla a un lugar en el que se puedan almacenar y consultar los datos. Por ejemplo, tu instrumentación puede enviar telemetría a un proyecto de Google Cloud. Los servicios en Google Cloud Observability te ayudan a recopilar, analizar y correlacionar los datos de telemetría. También proporcionan valores predeterminados integrados para ayudarte a comenzar más rápido, como paneles predeterminados y políticas de alertas. Para obtener más información sobre Google Cloud Observability, consulta Google Cloud Observability.
En la siguiente figura, se ilustra cómo una aplicación usa la instrumentación para generar y enviar telemetría a un sistema de almacenamiento:
Como se ilustra en la figura anterior, el código de instrumentación existe dentro del proceso de la aplicación y, además, interactúa con la aplicación para generar datos de telemetría. Luego, el framework de instrumentación exporta tu telemetría a un sistema de almacenamiento configurado. En la figura, el sistema de almacenamiento es el proyecto de Google Cloud.
Acerca de los frameworks de instrumentación independientes del proveedor
Incluso si planeas enviar telemetría solo a Google Cloud, te recomendamos que uses un framework de instrumentación de código abierto independiente del proveedor para instrumentar las aplicaciones. Estos tipos de frameworks tienen algunos beneficios clave:
- Sin dependencia de un solo proveedor:
- Los frameworks neutrales del proveedor no están vinculados a ningún proveedor en particular y proporcionan su propio modelo de datos para la telemetría generada. Por lo tanto, puedes enviar datos a varios proveedores y, por lo general, puedes cambiar el proveedor que usas sin modificar tu código.
- Procedimientos estandarizados para recopilar telemetría
- Los frameworks bien diseñados, como OpenTelemetry, proporcionan un enfoque estandarizado para recopilar telemetría de aplicaciones. Puedes usar el mismo framework para las aplicaciones escritas en lenguajes compatibles. Además, debido a que el framework está estandarizado, puedes recopilar y comparar la telemetría de todos tus servicios.
- Bibliotecas interoperables
- Los frameworks de instrumentación incluyen un ecosistema variado de bibliotecas que recopilan señales de telemetría, y estas bibliotecas son interoperables. Por ejemplo, OpenTelemetry proporciona bibliotecas para recopilar datos de seguimiento y recopilar datos de métricas. Puedes usar la biblioteca o ambas.
Recomendaciones generales
En esta sección, se incluyen recomendaciones generales sobre cómo instrumentar tu aplicación. Para obtener orientación específica de Google Cloud, consulta Elige un enfoque de instrumentación.
Para recopilar métricas, te recomendamos usar 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 recopilador de OpenTelemetry, que puede recibir, transformar y exportar telemetría. El archivo de configuración del recopilador de OpenTelemetry determina el comportamiento del recopilador de OpenTelemetry. Para enviar telemetría a un agente o directamente a un sistema de almacenamiento, usa el Protocolo de OpenTelemetry (OTLP).
Prometheus es un sistema de supervisión de código abierto popular. Puedes usar las bibliotecas cliente de Prometheus a fin de generar métricas a partir de tu aplicación. Existe un ecosistema de terceros de bibliotecas de instrumentación para frameworks populares. Los clientes de Prometheus exponen sus métricas como un extremo HTTP que un agente puede recopilar.
Para recopilar seguimientos, te recomendamos usar OpenTelemetry.
A fin de recopilar registros, te recomendamos que uses un framework que se pueda configurar a fin de generar registros estructurados en JSON para Cloud Logging. Para escribir datos de registro, te recomendamos lo siguiente:
Soluciones de Google Cloud
Google Cloud Observability, proporciona opciones flexibles para recopilar telemetría:
Para ver muestras de código que ilustran cómo instrumentar tu aplicación para enviar telemetría a Google Cloud, consulta lo siguiente:
Para obtener información sobre cómo recopilar y ver los datos de latencia de tus aplicaciones, consulta Visualiza la latencia de las solicitudes de la app.
Si deseas obtener información sobre la solución de múltiples nubes entre proyectos y completamente administrada de Google Cloud para Prometheus, consulta Google Cloud Managed Service para Prometheus.
Para obtener información sobre cómo configurar el agente de operaciones, consulta los siguientes documentos:
¿Qué sigue?
Para obtener más información sobre Google Cloud Observability, consulta Google Cloud Observability.