Si desea crear su propia implementación de seguimiento, puede utilizar nuestra traza API. Este documento explica cómo enviar datos de traza en formato Zipkin a nuestra API de traza. (Para conocer nuestro formato de datos generales, consulte Formato New Relic).
Requisitos de la versión Zipkin
La API de traza admite datos de Zipkin JSON v2 (o superior) sin ninguna modificación. Para obtener detalles sobre esta versión, consulte los detalles de la versión de Zipkin v2 y el esquema de Zipkin v2.
Descripción general del uso de traza API
Utilizar nuestra traza API es tan sencillo como:
- Envío de datos de traza en el formato esperado (en este caso, formato
zipkin
). - Enviando esos datos al extremoapropiado
Nuestras instrucciones de envío de datos tienen opciones para habilitar 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, elija una opción:
- Enviar una traza de muestra: Esto muestra un ejemplo de envío de una traza a New Relic. Esto es útil para comprender cómo funciona la API de traza y para verificar que está viendo datos en New Relic.
- Informe de datos de la instrumentación Zipkin existente: si tiene una implementación Zipkin existente, simplemente puede cambiar el extremo desde donde se envían sus datos.
Enviar muestra de carga útil Zipkin traza
Esta sección describe cómo enviar una traza simple en formato Zipkin a nuestra API de traza a través de una solicitud curl. Puede optar por hacer esto para aprender cómo funciona nuestra API y verificar que los datos se muestren en New Relic antes de realizar una instrumentación en profundidad.
Para comenzar a enviar una carga útil de muestra:
- (Opcional, para habilitar Infinite Tracing) Primero, debe configurar un observador de traza. Ese procedimiento incluye instrucciones para enviar una traza de muestra utilizando nuestro formato general
new-relic
. Cuando llegue a ese paso, regrese aquí para aprender cómo enviar una traza en formato Zipkin. - Envíe una carga útil en formato Zipkin siguiendo las instrucciones a continuación.
Enviar carga útil en formato Zipkin
Para enviar una muestra de traza en formato Zipkin:
Obtenga el para la cuenta a la que desea informar datos.
Estará ejecutando una solicitud curl, a continuación. Notas sobre esto:
- Reemplace el marcador de posición de la clave de licencia con su clave de licencia.
- Si está utilizando Infinite Tracing, utilice el valor YOUR_TRACE_OBSERVER_URL en lugar del extremo estándar.
- Si desea enviar más de una publicación, cambie el ID de la traza a un valor diferente. Enviar la misma carga útil o intervalo
id
varias veces para el mismotraceId
puede generar una traza fragmentada en la UI.
$curl -i -H 'Content-Type: application/json' \> -H 'Api-Key: NEW_RELIC_API_KEY' \> -H 'Data-Format: zipkin' \> -H 'Data-Format-Version: 2' \> -X POST \> -d '[$ {$ "traceId": "test-zipkin-trace-id-1",$ "id": "3e0f5885710776cd",$ "kind": "CLIENT",$ "name": "post",$ "duration": 508068,$ "localEndpoint": {$ "serviceName": "service-1",$ "ipv4": "127.0.0.1",$ "port": 8080$ },$ "tags": {$ }$ },$ {$ "traceId": "test-zipkin-trace-id-1",$ "parentId": "3e0f5885710776cd",$ "id": "asdf9asdn123lkasdf",$ "kind": "CLIENT",$ "name": "service 2 span",$ "duration": 2019,$ "localEndpoint": {$ "serviceName": "service-2",$ "ipv4": "127.0.0.1",$ "port": 8080$ },$ "tags": {$ "error.message": "Invalid credentials"$ }$ }$ ]' 'https://trace-api.newrelic.com/trace/v1'
En un minuto, la traza debería estar disponible en nuestra UIde rastreo distribuido. Para encontrarlo, ejecute una consulta para trace.id
. En este ejemplo, fue test-zipkin-trace-id-1
. Tenga en cuenta que busca por el atributo transformado de trace.id
(no traceId
).
Aprender más:
- Descubra dónde aparecen los datos de traza API en la UI.
- Envíe datos desde una instrumentación Zipkin existente.
- Aprenda a decorar tramos agregando etiquetas. Esto le ayuda a personalizar cómo se muestran las trazas en nuestra UI para obtener una experiencia más rica y útil.
- Obtenga información sobre información general sobre extremos (límites de datos, metadatos requeridos y validación de respuestas).
- Conozca cómo se transforman y almacenan los datos de Zipkin en nuestro formato.
- Si no ves los datos de tu traza, consulta resolución de problemas.
Enviar datos desde instrumentación Zipkin existente
Notas preliminares:
- Si desea habilitar Infinite Tracing, primero debe configurar un observador de traza.
- Puede resultar útil enviar primero una carga útil de muestra para verificar que todo funcione correctamente.
Para informar datos de una instrumentación Zipkin existente, apuntará el trazador Zipkin a los extremos de traza de API apropiados con algunos metadatos de solicitud requeridos. Puede enviar los metadatos requeridos como encabezados o parámetros de consulta (algunas versiones de Zipkin rastreador no permiten especificar encabezados HTTP).
A continuación se muestra un ejemplo de cómo se vería al crear un Zipkin OkHttpSender
en Java configurado para la API de traza:
OkHttpSender.create("https://trace-api.newrelic.com/trace/v1?Api-Key=NEW_RELIC_LICENSE_KEY&Data-Format=zipkin&Data-Format-Version=2");
Tenga en cuenta que si estuviera utilizando Infinite Tracing o tuviera una cuenta New Relic de la región de la UE, el extremo sería diferente.
Para obtener una explicación de Api-Key
y otros metadatos, consulte Solicitar metadatos.
Transformación de datos Zipkin
Para crear una experiencia de búsqueda/consulta consistente, algunos datos de Zipkin se transformarán para que coincidan con el nombre del atributo New Relic. Para obtener más información sobre cómo almacenamos y estructuramos los datos de traza, consulte Cómo funciona rastreo distribuido.
Etiqueta Zipkin | Almacenado en New Relic como... | Detalles |
---|---|---|
|
| Identificador único para una traza. |
|
| Identificador único para un lapso. |
|
| Identificador del tramo ascendente que llamó al servicio. |
|
| Ya sea |
|
| Nombre del tramo. |
|
| Los intervalos de Zipkin v2 deben tener duraciones especificadas en microsegundos y se convertirán a milisegundos. |
localEndpoint: |
| Usamos el nombre del servicio Zipkin v2 para identificar la entidad que creó este tramo. 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. |
localEndpoint: |
| Todos los valores del objeto |
| reportado como atributo | Los pares principales de valor en el objeto |
anotaciones | No soportado | Actualmente no admitimos anotaciones en la traza API. No se rechazarán los tramos que contengan anotaciones, pero no se escribirán los datos de las anotaciones. |
Agregar otra etiqueta/atributo
Puedes agregar cualquier etiqueta que desees al bloque tags
, con la excepción de la etiqueta restringida. Por ejemplo, es posible que desees agregar atributos como customer.id
o user.id
para ayudarte a analizar los datos de tu traza. La etiqueta se convertirá en New Relic el atributo.
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.