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 de OpenTelemetry Protocol (OTLP) a Google Cloud Observability desde las aplicaciones que se ejecutan en GKE. OpenTelemetry administrado proporciona la única solución administrada por Google Cloud para recopilar datos de seguimiento en GKE.

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

OpenTelemetry administrado para GKE tiene dos componentes:

  • Recopilación administrada: El recopilador administrado proporciona un extremo de OpenTelemetry Protocol 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 Instrumentación habilita una configuración automática para tus cargas de trabajo de GKE para generar y transferir 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 de instrumentación, instrumentations.telemetry.googleapis.com, es un recurso diferente del recurso de instrumentación para el operador de OpenTelemetry.

Para conocer los pasos para usar Managed OpenTelemetry para GKE, consulta Implementa Managed OpenTelemetry 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, lo que incluye 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 creado por Google en lugar de este servicio administrado.

OpenTelemetry proporciona APIs, bibliotecas y SDK 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 de OpenTelemetry (OTLP). Para obtener más detalles sobre cómo generar y recopilar los datos de comportamiento del entorno de ejecución de tu aplicación, consulta Observabilidad para desarrolladores de aplicaciones.

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 recolector.

El extremo al que tu carga de trabajo envía datos depende del protocolo que uses, como se indica a continuación:

  • La URL de http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318 para el extremo HTTP.
  • La URL de http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4317 para el extremo de gRPC.

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 esta envíe indicadores al recopilador administrado. Si configuras la carga de trabajo de forma manual, puedes usar otros métodos. Para obtener más detalles, 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, a medida que se ejecuta la carga de trabajo, los datos de OpenTelemetry se envían al recolector administrado.

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

Para obtener instrucciones sobre cómo 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:

  • Especifica si deseas insertar las variables de entorno en los contenedores de los Pods seleccionados o de todos los Pods de 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 las métricas al recopilador administrado
  • Controlar la tasa de muestreo de los datos de seguimiento
  • Controla el protocolo de transporte de OTLP (HTTP o gRPC) que se usa para exportar la telemetría al recopilador administrado.

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

Inyecta 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 de instrumentación en tu clúster. Luego, cuando implementas la aplicación en el clúster con el objeto Instrumentation, GKE inserta 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.

En la siguiente lista, se incluyen todas las variables de entorno que puede insertar OpenTelemetry administrado para GKE. Las variables de entorno específicas que se insertan en un contenedor dependen de la configuración en el recurso personalizado de instrumentación.

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

  • Es el extremo y el protocolo del exportador de OpenTelemetry.
    • OTEL_EXPORTER_OTLP_ENDPOINT: Es una URL de extremo base para cualquier tipo de indicador. Según el exportador configurado en el recurso personalizado de instrumentación, el valor de esta variable de entorno es el extremo HTTP del recopilador de OpenTelemetry administrado en el clúster (http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318, predeterminado) o el extremo de gRPC (http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4317).
    • OTEL_EXPORTER_OTLP_PROTOCOL: Especifica el protocolo de transporte de OTLP que usa el exportador del SDK. El valor de esta variable de entorno es uno de los siguientes, según el protocolo de transporte de OTLP que uses:
      • grpc si usas el protocolo de transporte otlp_grpc.
      • http/protobuf si no especificas un protocolo de transporte o si usas el protocolo de transporte otlp_http.
  • Es la configuración de la proporción de muestreo de seguimientos.
    • OTEL_TRACES_SAMPLER: Establece el muestreador que usa el SDK para muestrear seguimientos en una de las siguientes opciones:
      • parentbased_traceidratio cuando el muestreo de seguimiento se configura 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 traza (entre 0.0 y 1.0). Si no se configura en el recurso personalizado, se usa la versión 1.0.
  • Es el intervalo de retraso 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.: 5000, máx.: 300000, predeterminado: 30000).
  • 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 recurso personalizado 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 por el procesador de atributos de Kubernetes del recopilador de OpenTelemetry.
    • K8S_POD_UID: Es el UID del Pod de hostNetwork para propagar el parámetro de 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 intervalos, métricas y registros como atributos de recursos.
  • Instrucciones y respuestas
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_FORMAT='jsonl': Indica a OpenTelemetry que formatee 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 de modo que envíe 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 usar otro método, como las funciones experimentales de línea de comandos.

No recomendamos usar la configuración manual y la 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 compatibles son aquellas que usan OpenTelemetry para recopilar datos sobre el comportamiento del entorno 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 entorno de ejecución de tu aplicación, consulta Observabilidad para desarrolladores de aplicaciones.

Si una carga de trabajo admite algunos tipos de datos de OTLP y otros no, Managed OpenTelemetry 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, Managed OpenTelemetry para GKE no recopila los datos de registros y métricas. Para obtener detalles sobre cómo controlar el tipo de datos que se recopilarán, consulta Selecciona los tipos de indicadores que se recopilarán.

La inserción de configuración de OpenTelemetry no es compatible con las cargas de trabajo con privilegios de los socios de GKE Autopilot.

Facturación

Cuando envías datos de telemetría a Google Cloud, se te factura por 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?