Asignación de las convenciones semánticas de OpenTelemetry a tramos de entrada de servicio

Esta función está en fase beta. Si tienes algún comentario, ponte en contacto con el servicio de soporte de Datadog.

Información general

Datadog utiliza tramos (spans) de entrada de servicio en toda la plataforma para funciones como métricas de traza y el Trace Explorer de APM. Esta convención es exclusiva de Datadog, pero se puede asignar desde el atributo SpanKind en OpenTelemetry siguiendo la guía de elección que aparece a continuación.

Elección de la función

Esta función requiere OTel Collector Contrib v0.100.0 o posterior y Datadog Agent v7.53.0 o posterior. Para elegir la función beta pública, activa la opción de configuración según la ruta de ingesta.

La nueva lógica de identificación del tramo de entrada de servicio puede activarse estableciendo la opción de configuración traces::compute_top_level_by_span_kind en true en el Exportador de Datadog y el conector de Datadog. Esta opción de configuración debe activarse tanto en el exportador como en el conector si se utilizan ambos componentes.

La lógica de identificación del nuevo tramo de entrada de servicio puede activarse añadiendo "enable_otlp_compute_top_level_by_span_kind" a apm_config.features en la configuración del Datadog Agent.

Convenciones admitidas

Las métricas se generan para los tramos de entrada de servicio y los tramos medidos. Estas convenciones de tramo son únicas para Datadog, por lo que los tramos de OpenTelemetry se identifican con la siguiente asignación:

Convención de OpenTelemetryConvención de Datadog
Tramo raízTramo de entrado de servicio
Tramo de servidor (span.kind: server)Tramo de entrada de servicio
Tramo de consumidor (span.kind: consumer)Tramo de entrada de servicio
Tramo de cliente (span.kind: client)Tramo medido
Tramo de productor (span.kind: producer)Tramo medido
Tramo interno (span.kind: internal)No se generaron métricas de traza

Migración

Esta nueva lógica de identificación de tramo de entrada de servicio puede aumentar el número de tramos que generan métricas de traza, lo que puede afectar a los monitores existentes que se basan en métricas de traza. Los usuarios que solo tengan tramos internos verán una disminución en las métricas de traza.

Si dispones de monitores basados en métricas de traza, puedes cambiarlos tras la actualización, ya que este cambio introduce más coherencia en las métricas de traza. Si solo dispones de tramos internos, actualiza tu instrumentación de acuerdo con la tabla anterior para recibir métricas de traza y tramos de entrada de servicio.

SpanKind se establece normalmente cuando se crea un tramo, pero también puede actualizarse utilizando el procesador de transformación en el OpenTelemetry Collector para controlar la asignación anterior. Por ejemplo, si deseas métricas de traza para un tramo interno, la siguiente configuración transforma un tramo interno con http.path: "/health" en un tramo de cliente:

  transform:
    trace_statements:
      - context: span
        statements:
          - set(kind.string, "Client") where kind.string == "Internal" and attributes["http.path"] == "/health"

Referencias adicionales

Más enlaces, artículos y documentación útiles: