Si desea crear su propia implementación de seguimiento, puede utilizar nuestra traza API. Este documento explica cómo enviar traza en nuestro formato general, también conocido como formato newrelic
. (Para enviar datos en formato Zipkin, consulte Zipkin).
Empezar
Utilizar nuestra traza API es tan sencillo como:
- Envío de datos de traza en el formato esperado (en este caso, nuestro formato
newrelic
. - Enviando esos datos al extremo apropiado.
Antes de utilizar la API de traza, debes decidir si quieres utilizar Infinite Tracing. Para obtener más información sobre esto, consulte Introducción a las consideraciones de seguimiento y muestreo infinitos.
Para comenzar a utilizar la API de traza, siga uno de estos caminos:
- ¿Quieres utilizar el rastreo infinito? Siga las instrucciones para configurar un observador de trazas . Eso lo guiará a través de la creación de un observador de traza y el envío de una carga útil de muestra al extremo del observador de traza.
- ¿No quieres seguimiento infinito? Vea cómo enviar una carga útil de muestra (a continuación).
Enviar carga útil de traza de muestra (rastreo no infinito)
A continuación se explica cómo enviar una carga útil estándar (noInfinite Tracing) a la API de traza utilizando nuestro formato newrelic
.
Obtenga un para la cuenta a la que desea informar datos.
Inserte esa clave en el siguiente JSON y luego envíe el JSON a nuestro extremo. Nota: si tiene una cuenta EU New Relic, utilice el extremo EU en su lugar.
bash$curl -i -H 'Content-Type: application/json' \>-H 'Api-Key: YOUR_LICENSE_KEY' \>-H 'Data-Format: newrelic' \>-H 'Data-Format-Version: 1' \>-X POST \>-d '[${$"common": {$"attributes": {$"service.name": "Test Service A",$"host": "host123.example.com"$}$},$"spans": [${$"trace.id": "123456",$"id": "ABC",$"attributes": {$"duration.ms": 12.53,$"name": "/home"$}$},${$"trace.id": "123456",$"id": "DEF",$"attributes": {$"error.message": "Invalid credentials",$"service.name": "Test Service A",$"host": "host456.example.com",$"duration.ms": 2.97,$"name": "/auth",$"parent.id": "ABC"$}$}$]$}$]' 'https://trace-api.newrelic.com/trace/v1'Sugerencia
Si envía más de un
POST
, cambie eltrace.id
por un valor único. Enviar la misma carga útil o intervaloid
varias veces para el mismotrace.id
puede generar una traza fragmentada en la UI.Si su prueba arrojó
HTTP/1.1 202 Accepted
, vaya a nuestra UI para ver una consulta de los datos de su prueba utilizando el atributo de intervaloservice.name = Test Service A
.Sugerencia
Traza puede tardar hasta un minuto en ser procesada tanto por el observador de traza como por la traza API.
Traza API carga (formato New Relic)
La carga útil de traza API JSON es una matriz de objetos, y cada objeto representa una única traza. Cada uno de estos objetos requiere una clave spans
y también puede incluir una clave common
. spans
(obligatorio) contiene una matriz de objetos, y cada objeto representa un intervalo. common
(opcional) comparte información en varios tramos.
El objeto Span en la matriz spans
campo | tipo | descripción | requerido | por defecto |
---|---|---|---|---|
| cadena | Identificador único para este lapso. | Sí | N/A |
| cadena | Identificador único compartido por todos los tramos dentro de una única traza. | Sí | N/A |
| largo | Hora de inicio del intervalo en milisegundos desde la época de Unix. | No | Hora actual en la zona horaria UTC |
| objeto | Cualquier conjunto de pares de valores principales que agreguen más detalles sobre un lapso. Se recomienda encarecidamente agregar | No | N/A |
Las solicitudes que no contengan las claves requeridas anteriormente se rechazarán y se generará un NrIntegrationError
.
El objeto common
(opcional)
campo | tipo | descripción | requerido | por defecto |
---|---|---|---|---|
| objeto | Cualquier conjunto de pares de valores principales que agreguen detalles comunes sobre tramos en la carga útil. Si un intervalo contiene un atributo que se ha establecido en | No | N/A |
Atributo muy recomendado
Si bien no son obligatorios, estos atributos deben incluirse para obtener la mejor experiencia con sus datos en el objeto attributes
para cada intervalo.
atributo | por defecto | descripción |
---|---|---|
Flotante | ninguno | Duración de este lapso en milisegundos. |
cadena | ninguno | El nombre de este lapso. |
cadena | ninguno | La identificación de la persona que llama de este lapso. El valor es |
cadena | ninguno | El nombre de la entidad que creó este intervalo. Si no se proporciona ningún valor o se proporciona una cadena vacía, el intervalo se asigna a una entidad "DESCONOCIDA" y se mostrará como tal en la UI. Este valor debe proporcionarse para obtener una experiencia completa en la UI. |
Atributo reservado
Estos atributos están actualmente reservados para uso interno de New Relic. Si bien no están bloqueados explícitamente, recomendamos no utilizarlos.
atributo | por defecto | descripción |
---|---|---|
cadena |
| Esto se deriva del atributo |
cadena |
| Se supone que el tipo de entidad es un servicio. |
cadena | Ninguno | El |
Otro atributo
Puede agregar cualquier atributo arbitrario que desee en el objeto attributes
en common
o en cada objeto span, con la excepción del atributo restringido. Por ejemplo, es posible que desees agregar atributos como customer.id
o user.id
para ayudarte a analizar los datos de tu traza.
Requisitos y lineamientos para traza JSON usando el formato newrelic
:
- Cada carga útil JSON es una matriz de objetos.
- Cada objeto debe contener una clave
spans
obligatoria. - Cada objeto puede contener una clave
common
opcional. Utilícelo si desea compartir información en varios tramos de un objeto. - Cualquier clave en un intervalo tiene prioridad sobre la misma clave en el bloque
common
. - El valor de una clave
spans
es una lista despan
objetos. - Ciertos atributos son obligatorios y deben incluirse en el bloque opcional
common
o en cada tramo. - Recomendado y el atributo personalizado se pueden incluir opcionalmente en una lista de pares de valores principales bajo una clave denominada
attributes
, en el bloque opcionalcommon
y/o en cada intervalo.
En el siguiente ejemplo POST
, hay dos tramos, los cuales tienen el traza.id 12345
y el atributo personalizado host: host123.example.com
. El primer tramo no tiene parent.id
, por lo que esa es la raíz de la traza; El parent.id
del segundo tramo apunta al ID del primero.
[ { "common": { "attributes": { "host": "host123.example.com" } }, "spans": [ { "trace.id": "12345", "id": "abc", "timestamp": 1603336834823, "attributes": { "user.email": "bob@newr.com", "service.name": "my-service", "duration.ms": 750, "name": "my-span" } }, { "trace.id": "12345", "id": "def", "timestamp": 1603336834899, "attributes": { "parent.id": "abc", "service.name": "second-service", "duration.ms": 750, "name": "second-span" } } ] }]
Para aprender a controlar cómo aparecen los intervalos en New Relic (por ejemplo, agregar errores o configurar un intervalo como intervalo de almacenamiento de datos), consulte Decorar intervalos.
Explore más sobre el rastreo distribuido:
- Descubra dónde aparecen los datos de traza API en la UI.
- Aprenda a decorar tramos para disfrutar de una experiencia UI más rica y detallada. Por ejemplo, puede hacer que los intervalos se muestren como intervalos de almacenamiento de datos o muestren errores.
- Obtenga información sobre los límites de datos generales, los metadatos requeridos y la validación de respuestas.
- Si no ves los datos de tu traza, consulta resolución de problemas.