Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Configurando exportadores de SDK

Para enviar datos a SUSE Observability, los SDK que se utilizan para instrumentar tu aplicación emplean un exportador integrado. Una configuración lista para producción utiliza a collector cerca de tus aplicaciones instrumentadas para enviar los datos a SUSE Observability, pero también es posible que la aplicación instrumentada envíe directamente los datos de telemetría a SUSE Observability.

Con un colector (configuración de producción)

Configuración del exportador de SDK para Kubernetes

Todos los SDK, independientemente del lenguaje, utilizan la misma configuración básica para definir el nombre del servicio y el punto final del exportador (es decir, donde se envían los datos de telemetría).

Estos se pueden configurar estableciendo variables de entorno para tu aplicación instrumentada.

En Kubernetes, establece estas variables de entorno en el manifiesto de tu carga de trabajo (reemplaza <the-service-name> con un nombre para el servicio de tu aplicación):

...
spec:
  containers:
  - env:
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: http://opentelemetry-collector.open-telemetry.svc.cluster.local:4317
    - name: OTEL_SERVICE_NAME
      value: <the-service-name>
    - name: OTEL_EXPORTER_OTLP_PROTOCOL
      value: grpc
...

El punto final especificado en el ejemplo asume que el colector fue instalado utilizando los valores predeterminados de la guía de instalación. Utiliza el puerto 4317, que emplea la versión gRPC del protocolo OTLP. Algunas instrumentaciones solo admiten HTTP; en ese caso, utiliza el puerto 4318.

El nombre del servicio también se puede derivar de las etiquetas de Kubernetes que pueden estar ya presentes. Por ejemplo, así:

spec:
  containers:
  - env:
    - name: OTEL_SERVICE_NAME
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: metadata.labels['app.kubernetes.io/component']

Configuración del exportador de SDK para otras instalaciones

Para configurar el SDK, establece estas variables de entorno para tu aplicación:

export OTEL_EXPORTER_OTLP_ENDPOINT="http://<the-host-for-the-collector>:4317"
export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
export OTEL_SERVICE_NAME="<the-service-name>"
export OTEL_RESOURCE_ATTRIBUTES='service.namespace=<the-namespace>'

El ejemplo utiliza el puerto 4317, que emplea la versión gRPC del protocolo OTLP. Algunas instrumentaciones solo admiten HTTP, que utiliza el puerto 4318 con el protocolo configurado en http. Utiliza la documentación del SDK para tu lenguaje para verificar qué protocolo admite el SDK. Los OTEL_EXPORTER_OLTP_ENDPOINT y OTEL_EXPORTER_OTLP_PROTOCOL se pueden omitir, tienen valores predeterminados que envían datos al punto final preferido en el host local.

El OTEL_RESOURCE_ATTRIBUTES es opcional y, además de definir un espacio de nombres de servicio, se puede utilizar para establecer más atributos de recursos en una lista separada por comas.

gRPC frente a HTTP

OTLP, el Protocolo de Telemetría Abierta, soporta gRPC y protobuf sobre HTTP. En la sección anterior, el protocolo del exportador está configurado a gRPC, lo que generalmente ofrece el mejor rendimiento. Además de que el SDK no soporte gRPC, puede haber otras razones para preferir HTTP:

  • Algunos firewall no están configurados para manejar gRPC.

  • Los proxies inversos y los balanceadores de carga pueden no soportar gRPC sin configuración adicional.

  • Las conexiones de larga duración de gRPC pueden causar problemas al balancear la carga.

Para cambiar a HTTP en lugar de gRPC, cambia el protocolo a http y usa el puerto 4318.

Para resumir, puedes intentar usar HTTP en caso de que gRPC no funcione para ti:

  • El protocolo grpc utiliza el puerto 4317 en el colector

  • El protocolo http utiliza el puerto 4318 en el colector

Sin un colector

En pequeñas configuraciones de prueba puede ser conveniente enviar datos directamente desde tu aplicación instrumentada a SUSE Observability. La única diferencia con la configuración del colector documentada arriba es usar un valor diferente para OTEL_EXPORTER_OTLP_ENDPOINT:

Reemplaza tanto la URL del colector y el puerto con los endpoints de SUSE Observability. Dependiendo de tu instalación de SUSE Observability, los puertos serán diferentes.