Mapeo de convenciones semánticas de OpenTelemetry a tramos de entrada de servicio

Descripción general

Datadog utiliza tramos de entrada de servicio en toda la plataforma para funciones como métricas de traza y el APM Trace Explorer. Esta convención es exclusiva de Datadog, pero se puede mapear desde el atributo SpanKind en OpenTelemetry siguiendo la guía opt-in a continuación.

Requisitos

  • OTel Collector Contrib v0.100.0 o superior
  • Datadog Agent v7.53.0 o superior

Configuración

Habilite la opción de configuración según su ruta de ingesta:

La nueva lógica de identificación de tramos de entrada de servicio se puede habilitar configurando la opción traces::compute_top_level_by_span_kind en true en el Datadog exporter y el Datadog connector. Esta opción de configuración debe habilitarse tanto en el Datadog exporter como en el Datadog connector si se están utilizando ambos componentes.

La nueva lógica de identificación de tramos de entrada de servicio se puede habilitar agregando "enable_otlp_compute_top_level_by_span_kind" a apm_config.features en la configuración del Datadog Agent.

Convenciones admitidas

Las Métricas de traza se generan para tramos de entrada de servicio y tramos medidos. Estas convenciones de tramo son exclusivas de Datadog, por lo que los tramos de OpenTelemetry se identifican con el siguiente mapeo:

Convención de OpenTelemetryConvención de Datadog
Tramo raízTramo de entrada 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 tramos de entrada de servicio puede aumentar la cantidad de tramos que generan métricas de traza, lo cual 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 tiene monitores existentes basados en métricas de traza, puede actualizarlos después de la actualización, ya que este cambio introduce una mayor consistencia en las métricas de traza. Si solo tiene tramos internos, actualice su instrumentación de acuerdo con la tabla anterior para recibir métricas de traza y tramos de entrada de servicio.

SpanKind generalmente se establece cuando se crea un tramo, pero también se puede actualizar mediante el uso del transform processor en el OpenTelemetry Collector para controlar la asignación anterior. Por ejemplo, si se desean 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"

Lecturas adicionales

Documentación, enlaces y artículos útiles adicionales: