OpenTelemetry administrado para GKE

En este documento, se describe OpenTelemetry administrado para Google Kubernetes Engine (GKE), que te permite enviar seguimientos, métricas y registros del protocolo OpenTelemetry (OTLP) a Google Cloud Observability desde aplicaciones que se ejecutan en GKE. OpenTelemetry administrado proporciona la única solución administrada de Google Cloud para recopilar datos de seguimiento en GKE.

Para usar OpenTelemetry administrado para Google Kubernetes Engine (GKE), las aplicaciones ya deben estar instrumentadas para generar indicadores con el protocolo OpenTelemetry. Para obtener más información, consulta Cargas de trabajo admitidas.

OpenTelemetry administrado para GKE tiene dos componentes:

  • Recopilación administrada: El recopilador administrado proporciona un extremo del protocolo OpenTelemetry en el clúster como destino para que las cargas de trabajo envíen seguimientos, métricas y registros en formato OTLP, sin tener que administrar un recopilador.
  • Configuración automática: Un recurso personalizado llamado Instrumentation habilita una configuración automática para que tus cargas de trabajo de GKE generen y transfieran seguimientos, métricas y registros de OpenTelemetry correlacionados. Este enfoque admite el Kit de desarrollo de agentes (ADK) y los datos de instrucciones y respuestas multimodales.

    Puedes usar el recurso personalizado Instrumentation para las cargas de trabajo que usan el SDK de OpenTelemetry y que están configuradas con variables de entorno estándar de OpenTelemetry. Este recurso personalizado Instrumentation, instrumentations.telemetry.googleapis.com, es un recurso diferente del recurso Instrumentation para el operador de OpenTelemetry.

Para conocer los pasos para usar OpenTelemetry administrado para GKE, consulta Implementa OpenTelemetry administrado para GKE.

OpenTelemetry administrado para GKE te permite recopilar telemetría de OTLP sin tener que administrar ni operar un recopilador de OpenTelemetry. Ejecutar tu propio recopilador puede generar sobrecarga, incluida la autenticación, la configuración, las actualizaciones y la supervisión. Sin embargo, si necesitas filtros y controles a nivel del recopilador, puedes usar el recopilador de OpenTelemetry integrado en Google en lugar de este servicio administrado.

OpenTelemetry proporciona APIs, bibliotecas y SDKs para generar seguimientos, métricas y registros distribuidos para la supervisión de aplicaciones. Para obtener más información sobre OpenTelemetry, consulta la documentación sobre OpenTelemetry y el protocolo OpenTelemetry (OTLP). Para obtener más detalles sobre cómo generar y recopilar los datos de comportamiento del tiempo de ejecución de tu aplicación, consulta Instrumentación y observabilidad.

Cómo funciona OpenTelemetry administrado para GKE

OpenTelemetry administrado para GKE tiene dos componentes: recopilación administrada y configuración automática.

Recopilación administrada

La recopilación administrada proporciona un extremo de OTLP en el clúster mediante la implementación de un recopilador de OpenTelemetry administrado en tu clúster. Este extremo de OTLP en el clúster recibe seguimientos, métricas y registros en formato OTLP. Para recibir datos de una carga de trabajo, esta debe configurarse para enviar datos al recopilador.

El extremo del recopilador administrado es: http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.

La recopilación administrada envía los datos recopilados a Google Cloud Observability. Luego, los datos están disponibles en los siguientes servicios:

El recopilador administrado se puede habilitar para un clúster de GKE con la consola o gcloud CLI. Para obtener instrucciones, consulta Habilita OpenTelemetry administrado para GKE en un clúster.

Configuración automática

La configuración automática permite que GKE configure las cargas de trabajo que se ejecutan en GKE para enviar indicadores al extremo del recopilador administrado.

Existen diferentes métodos que se pueden usar para configurar una carga de trabajo. La configuración automática usa variables de entorno insertadas en el contenedor de la carga de trabajo para que la carga de trabajo envíe indicadores al recopilador administrado. Si configuras la carga de trabajo de forma manual, puedes usar otros métodos. Para obtener más información, consulta Configuración manual.

Cuando usas la configuración automática, defines la configuración con el recurso personalizado Instrumentation. Luego, GKE inserta variables de entorno, como el extremo del exportador de OTLP, en los contenedores de la carga de trabajo. Cuando los contenedores de la carga de trabajo tienen estas variables de entorno, los datos de OpenTelemetry se envían al recopilador administrado a medida que se ejecuta la carga de trabajo.

La configuración automática está disponible para las cargas de trabajo que admiten OpenTelemetry de forma nativa, lo que significa que usan el SDK de OpenTelemetry y se configuran con variables de entorno estándar de OpenTelemetry. Para obtener más información, consulta Cargas de trabajo admitidas.

Para obtener instrucciones para configurar tu aplicación con la configuración automática, consulta Configura tu aplicación para usar el recopilador de OpenTelemetry administrado.

El recurso personalizado Instrumentation

Usa el recurso personalizado Instrumentation para hacer lo siguiente:

  • Especificar si se deben insertar las variables de entorno en los contenedores de los Pods seleccionados o de todos los Pods en un espacio de nombres
  • Controlar el tipo de datos que se recopilan (registros, métricas y seguimientos)
  • Controlar la frecuencia con la que se envían los datos de métricas al recopilador administrado
  • Controlar la tasa de muestreo de los datos de seguimiento

Para obtener detalles sobre cómo usar el recurso personalizado Instrumentation, consulta Modifica la configuración.

Inserta variables de entorno automáticamente

Para insertar variables de entorno de OpenTelemetry en tus cargas de trabajo de GKE automáticamente, debes configurar un objeto Instrumentation en tu clúster. Luego, cuando implementes la aplicación en el clúster con el objeto Instrumentation, GKE insertará las variables.

El objeto Instrumentation debe estar en el clúster cuando se implementa la aplicación y se crean los Pods. Si implementaste la aplicación antes de crear el objeto Instrumentation, debes reiniciar los pods de la aplicación para activar la inserción automática de las variables de entorno.

Variables de entorno

Cuando se implementa una carga de trabajo en el espacio de nombres en el que está habilitada la configuración automática, GKE inserta variables de entorno en los contenedores de las cargas de trabajo. Estas variables de entorno son variables de OpenTelemetry de la configuración del SDK de OpenTelemetry.

La siguiente lista contiene todas las variables de entorno que puede insertar OpenTelemetry administrado para GKE. Las variables de entorno específicas insertadas en un contenedor dependen de la configuración del recurso personalizado Instrumentation.

Las variables de entorno que se pueden insertar automáticamente en los contenedores son las siguientes:

  • Extremo del exportador de OpenTelemetry
    • OTEL_EXPORTER_OTLP_ENDPOINT: Es una URL de extremo base para cualquier tipo de indicador. Este extremo siempre apunta al extremo HTTP del recopilador de OpenTelemetry administrado en el clúster para registros, métricas y seguimientos. El extremo es: http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
  • Configuración de la proporción de muestreo de seguimientos
    • OTEL_TRACES_SAMPLER: Establece el muestreador que usa el SDK para muestrear seguimientos en uno de los siguientes:
      • parentbased_traceidratio cuando el muestreo de seguimientos está configurado en el recurso personalizado
      • parentbased_always_on es el valor predeterminado de esta variable de entorno. Se usa si esta variable de entorno no está configurada o es nula en el recurso personalizado.
    • OTEL_TRACES_SAMPLER_ARG: Especifica la proporción de muestreo de seguimientos (entre 0.0 y 1.0). Si no está configurado en el recurso personalizado, se usa 1.0.
  • Intervalo de demora entre el inicio de dos exportaciones de métricas consecutivas
    • OTEL_METRIC_EXPORT_INTERVAL: Es el intervalo de tiempo (en milisegundos) entre el inicio de dos intentos de exportación (mín.: 5,000, máx.: 300,000, predeterminado: 30,000).
  • Inhabilitación de la exportación de telemetría de OTLP por tipo de indicador Los exportadores de indicadores se inhabilitan cuando tracer_provider, meter_provider o logger_provider se establecen en null en el archivo Instrumentation.
    • OTEL_TRACES_EXPORTER: Inhabilita la exportación de seguimientos cuando se establece en none. Valor predeterminado: otlp.
    • OTEL_METRICS_EXPORTER: Inhabilita la exportación de métricas cuando se establece en none. Valor predeterminado: otlp.
    • OTEL_LOGS_EXPORTER: Inhabilita la exportación de registros cuando se establece en none. Valor predeterminado: otlp.
  • Identificación de Pods de hostNetwork para asociar los metadatos con el procesador de atributos de Kubernetes del recopilador de OpenTelemetry
    • K8S_POD_UID: Es el UID de Pod de un Pod de hostNetwork para propagar la configuración k8s.pod.uid en la variable de entorno OTEL_RESOURCE_ATTRIBUTES.
    • OTEL_RESOURCE_ATTRIBUTES: El valor incluye k8s.pod.uid=$(K8S_POD_UID) para permitir que el procesador de atributos de Kubernetes asocie metadatos, como k8s.namespace.name, k8s.deployment.name y k8s.node.name, a los Pods de hostNetwork. La asociación de metadatos y Pods de hostNetwork permite agregar los metadatos extraídos a los intervalos, las métricas y los registros como atributos de recursos.
  • Instrucciones y respuestas
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_FORMAT='jsonl': Indica a OpenTelemetry que dé formato a los objetos de Cloud Storage como líneas JSON. Esta variable de entorno tiene un valor fijo: jsonl.
    • OTEL_INSTRUMENTATION_GENAI_COMPLETION_HOOK='upload': Indica a OpenTelemetry que suba los datos de instrucciones y respuestas en lugar de incorporar este contenido en los intervalos de seguimiento. Las referencias a los objetos subidos se incluyen en una entrada de registro. Esta variable de entorno tiene un valor fijo: upload.
    • OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental': Indica a OpenTelemetry que use las convenciones semánticas más recientes para la IA generativa. Esta variable de entorno tiene un valor fijo: gen_ai_latest_experimental.
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_BASE_PATH: Especifica la ruta de acceso para los objetos. Por ejemplo, gs://STORAGE_BUCKET_NAME/PATH.

Configuración manual

Existen diferentes métodos que puedes usar para configurar una carga de trabajo para enviar indicadores al extremo del recopilador administrado . Si configuras tu carga de trabajo de forma manual, puedes agregar y modificar variables de entorno de forma manual, o bien puedes usar otro método, como marcas de línea de comandos.

No recomendamos usar la configuración manual y la configuración automática juntas para la misma carga de trabajo, ya que la configuración automática puede anular los cambios manuales. Esta combinación puede dificultar el seguimiento de los cambios en la configuración.

Para obtener detalles sobre la configuración automática, consulta Configuración automática

Cargas de trabajo admitidas

Las cargas de trabajo admitidas son las que usan OpenTelemetry para recopilar datos sobre el comportamiento del tiempo de ejecución de la aplicación. Las cargas de trabajo admiten OpenTelemetry de forma nativa si usan el SDK de OpenTelemetry y se configuran con variables de entorno estándar de OpenTelemetry. Por ejemplo, el Kit de desarrollo de agentes (ADK) admite OpenTelemetry de forma nativa.

Para obtener más detalles sobre cómo se generan y recopilan los datos de comportamiento del tiempo de ejecución de tu aplicación, consulta Instrumentación y observabilidad.

Si una carga de trabajo admite algunos tipos de datos de OTLP y no otros, OpenTelemetry administrado para GKE recopila los datos de OTLP. Por ejemplo, si una carga de trabajo usa el SDK de OpenTelemetry para implementar seguimientos, pero no lo usa para registros o métricas, OpenTelemetry administrado para GKE no recopila los datos de registros y métricas. Para obtener detalles sobre cómo controlar el tipo de datos que se recopilan, consulta Selecciona los tipos de indicadores que se recopilarán.

No se admite la inserción de configuración de OpenTelemetry para cargas de trabajo con privilegios de socios de GKE Autopilot.

Facturación

Cuando envías datos de telemetría a Google Cloud, se te factura por el volumen de transferencia. Las métricas se facturan con los precios de Google Cloud Managed Service para Prometheus, los registros se facturan con los precios de Cloud Logging y los seguimientos se facturan con los precios de Cloud Trace.

Para obtener información sobre los costos asociados con la transferencia de seguimientos, registros y métricas de Google Cloud Managed Service para Prometheus, consulta Precios de Google Cloud Observability.

Cuotas

Cuando usas OpenTelemetry administrado para GKE, se aplican las cuotas de los servicios de Google Cloud Observability. Si deseas obtener más información, consulta los siguientes recursos:

¿Qué sigue?