Asignación de las convenciones semánticas de OpenTelemetry a tramos de entrada de servicio
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 OpenTelemetry | Convención de Datadog |
---|
Tramo raíz | Tramo 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
Additional helpful documentation, links, and articles: