Enviar trazas (traces) al Agent por API

Datadog APM te permite recopilar métricas de rendimiento al rastrear tu código para determinar qué partes de tu aplicación son lentas o ineficaces.

Los datos de rastreo se envían desde tu código instrumentado al Datadog Agent a través de una API HTTP. Las bibliotecas de rastreo de Datadog simplifica el envío de métricas al Datadog Agent. Sin embargo, es posible que desees interactuar directamente con la API para instrumentar aplicaciones que no pueden utilizar las bibliotecas o están escritas en lenguajes que aún no disponen de una biblioteca de rastreo de Datadog oficial.

La API de rastreo es una API del Agent en lugar de una API lateral de servicio. Envía tus trazas al endpoint local http://localhost:8126/v0.3/traces para que tu Agent pueda reenviarlos a Datadog.

Ruta

PUT http://localhost:8126/v0.3/traces

Solicitud

Se pueden enviar trazas como una matriz de trazas:

[ trace1, trace2, trace3 ]

Y cada traza es una matriz de tramos (spans):

trace1 = [ span, span2, span3 ]

y cada tramo es un diccionario con trace_id, span_id, resource y así sucesivamente. Cada tramo dentro de una traza debe utilizar el mismo trace_id. Sin embargo, trace_id y span_id deben tener valores diferentes.

Modelo

Las bibliotecas de rastreo de Datadog admiten IDs de traza de 64 y 128 bits. Consulta Formatos de ID de tramo y traza para obtener más información.
CampoTipoDescripción
durationint64La duración de la solicitud en nanosegundos.
errorint32Establece este valor en 1 para indicar si se ha producido un error. Si se produce un error, debes añadir información adicional, como el mensaje de error, el tipo y la información de stack en la propiedad meta.
metaobjectoConjunto de metadatos clave-valor. Las claves y los valores deben ser cadenas.
- <any-key>cadenaPropiedades adicionales para metadatos clave-valor.
métricasobjetoUn conjunto de metadatos clave-valor. Las claves deben ser cadenas y los valores deben ser números de coma flotante de 64 bits.
- <any-key>doblePropiedades adicionales para métricas clave-valor.
nombrecadenaEl nombre de tramo. El nombre de tramo no debe tener más de 100 caracteres.
parent_idint64El ID de número entero del tramo principal.
resourcecadenaEl recurso que estás rastreando. El nombre del recurso no debe tener más de 5000 caracteres.
servicecadenaEl servicio que estás rastreando. El nombre de servicio no debe tener más de 100 caracteres.
span_idint64El ID de número entero del tramo (64 bits sin signo).
startint64La hora de inicio de la solicitud en nanosegundos desde la epoch UNIX.
trace_idint64 o int128El ID de número entero único (64 bits sin signo o 128 bits sin signo) de la traza que contiene este tramo.
typeenumeradoTipo de solicitud. Valores de enumerado (enum) permitidos: web, db, cache, custom

Ejemplo

[
  [
    {
      "duration": 12345,
      "error": "integer",
      "meta": {
        "<any-key>": "string"
      },
      "metrics": {
        "<any-key>": "number"
      },
      "name": "span_name",
      "parent_id": "integer",
      "resource": "/home",
      "service": "service_name",
      "span_id": 987654321,
      "start": 0,
      "trace_id": 123456789,
      "type": "web"
    }
  ]
]

Respuesta

200
OK

Ejemplo

# Comando Curl
curl -X PUT "http://localhost:8126/v0.3/traces" \
-H "Content-Type: application/json" \
-d @- << EOF
[
  [
    {
      "duration": 12345,
      "name": "span_name",
      "resource": "/home",
      "service": "service_name",
      "span_id": 987654321,
      "start": 0,
      "trace_id": 123456789
    }
  ]
]
EOF
# Comando Invoke-RestMethod

$uri = "http://localhost:8126/v0.3/traces"
$headers = @{
    "Content-Type" = "application/json"
}
$body = @"
[
  [
    {
      "duration": 12345,
      "name": "span_name",
      "resource": "/home",
      "service": "service_name",
      "span_id": 987654321,
      "start": 0,
      "trace_id": 123456789
    }
  ]
]
"@

Invoke-RestMethod -Uri $uri -Method Put -Body $body -Headers $headers

Leer más