Problema
Ha habilitado rastreo distribuido pero los datos que esperaba ver no aparecen en UI de rastreo distribuido de New Relic.
Antes de que empieces
Antes de realizar la resolución de problemas, puede resultarle útil:
Revise los detalles técnicos de cómo funciona el rastreo distribuido.
Utilice nuestra aplicación de estado de instrumentación para ver una descripción general de su instrumentación traza, incluidas las tasas de muestreo. Esto puede ayudarle a comprender los tramos faltantes y las trazas fragmentadas. Para encontrar esto, vaya a:
one.newrelic.com > All capabilities > Apps > Distributed tracing instrumentation status
.
Soluciones
A continuación se muestran algunas causas y soluciones para la falta de datos de traza:
Problemas al habilitar o instrumentado
Para que rastreo distribuido informe detalles de todos los nodos en una traza, cada aplicación debe ser monitoreada por un agente de New Relic que haya habilitado rastreo distribuido.
Si la cuenta New Relic de una aplicación no tiene habilitado rastreo distribuido, tendrá estos problemas:
- Su página UI de rastreo distribuido no tendrá datos.
- No reportará datos al rastreo distribuido de otras cuentas.
Cuando habilitas rastreo distribuido para aplicaciones y servicios que New Relic instrumentó automáticamente, generalmente verás datos completos y detallados para esos nodos en la UI de rastreo distribuido.
Sin embargo, puede notar que faltan algunos servicios o aplicaciones en la traza, o que faltan algunos tramos internos que espera ver. Si ese es el caso, es posible que desee implementar instrumentación personalizada de aplicación o transacción específica para ver más detalles en la traza. Algunos ejemplos de cuándo puede necesitar hacer esto:
Transactions not automatically instrumented
. Para asegurarse de que su aplicación se instrumente automáticamente, lea la documentación de requisitos y compatibilidad del agente New Relic que esté utilizando. Si una aplicación no se instrumenta automáticamente, o si desea agregar instrumentación de una actividad específica, consulte instrumentación personalizada.
All Go applications
. El agente Go, a diferencia de otros agentes, requiere instrumentación manual de su código. Para obtener instrucciones, consulte instrumentación de una aplicación Go.
A service doesn't use HTTP
. Si un servicio no se comunica a través de HTTP, el agente de New Relic no enviará encabezados de rastreo distribuido. Este puede ser el caso de alguna aplicación no web o cola de mensajes. Para solucionar este problema, utilice las API distribuidas por rastreo para instrumentar la aplicación que llama o la que llama.
Problemas con los tramos
Si su agente no puede escribir datos lo suficientemente rápido en el observador de traza, queue_size
es una configuración de agente APM adicional para limitar la cantidad de intervalos que mantendrá el agente. Vea los siguientes ejemplos para su agente:
Método de configuración .NET | Ejemplo |
---|---|
Archivo de configuración |
|
Variable ambiental |
|
Método de configuración de Python | Ejemplo |
---|---|
Archivo de configuración |
|
Variable ambiental |
|
A veces, la propagación del encabezado tiene éxito, pero la información del intervalo no se envía a New Relic. Por ejemplo, si OpenTelemetry no está instrumentado con un exportador New Relic, los detalles del intervalo nunca llegan a New Relic.
En este diagrama, observe que la propagación del encabezado es exitosa, pero no hay ningún exportador configurado en el Servicio 2 para enviar el intervalo a New Relic:
El siguiente diagrama también muestra la propagación exitosa del encabezado, pero incluye un exportador en el Servicio 2 que envía los detalles del tramo a New Relic (ver traza API):
El rastreo estándar distribuido para utiliza muestreo adaptativo. Esto significa que un porcentaje de las llamadas a un servicio se reportará como parte de un rastreo distribuido. Es posible que no se hayan seleccionado llamadas específicas a su servicio para ser muestreadas.
Hay límites en la cantidad de tramos que se pueden recopilar y mostrar. Si una aplicación genera una gran cantidad de intervalos para una sola llamada, podría exceder el límite de recopilación de intervalos del agente APM para ese ciclo de recolección. Esto podría dar como resultado tramos faltantes y limitar significativamente la cantidad de trazas que el agente puede muestrear e informar por completo.
Actualmente solo mostramos 10.000 tramos a la vez.
Los tramos deben enviarse dentro de los últimos sesenta minutos para ser capturados en un índice de traza. Si envía intervalos de más de sesenta minutos pero más recientes que un día, los datos del intervalo se seguirán escribiendo. Sin embargo, no se incluirá en el índice de trazas, que controla la lista de trazas en la UI del rastreo distribuido. Si un lapso tiene una timestamp anterior a un día, se eliminará. Esto ocurre a menudo cuando hay un desfase horario (diferencias de tiempo) entre sistemas o trabajos en segundo plano que se ejecutan durante mucho tiempo.
Importante
Cualquier intervalo enviado a través del protocolo OpenTelemetry (OTLP para abreviar) que dure más de sesenta minutos no se escribirá en NRDB, lo que producirá el siguiente NrIntegrationError:
The span timestamp cannot be older than 60 minutes.
Problemas con los detalles de la traza.
Si su transacción solo envía el encabezado propietario de New Relic, es posible que algún middleware no reconozca el formato y luego elimine la información como se muestra en este diagrama:
Una solución es actualizar su agente New Relic a una versión que admita W3C Trace Context. En el siguiente diagrama, el agente New Relic compatible con W3C pasa el encabezado anterior junto con dos encabezados estandarizados:
Algunos problemas potenciales con apoderados y otros intermediarios:
Incomplete trace. Algunos intermediarios no propagarán automáticamente el encabezado del rastreo distribuido. En ese caso, debe configurar ese componente para permitir que el encabezado pase del origen al destino. Para obtener instrucciones, consulte la documentación de ese componente intermediario.
Missing intermediary in trace. Si el intermediario es New Relic-monitor, asegúrese de que propague el encabezado
newrelic
generado o actualizado por el agente de New Relic que se ejecuta en ese intermediario. Esto puede manifestarse cuando un intermediario estaba previamente visible en traza, pero desapareció después de que se habilitó rastreo distribuido para una entidad ascendente (por ejemplo, una aplicación browser-monitor).Sugerencia
Si alguna entidad reporta datos de traza a otro sistema de rastreo, puede usar el ID de traza de la UI de New Relic para buscar tramos faltantes en otros sistemas de rastreo.
Si cada agente en una cadena admite W3C Trace Context, entonces podemos unir los tramos en una traza completa. Si parte de la cadena proviene de un agente, como Zipkin, que no admite W3C Trace Context, es posible que los tramos provenientes de ese agente no se incluyan en la traza.
Si una traza contiene datos del monitor de aplicación de varias cuentas de New Relic y sus permisos de usuario no le permiten acceder a esas cuentas, algunos de los detalles del intervalo y del servicio se ocultarán en la UI.
Por ejemplo, es posible que veas una serie de asteriscos (*****) en lugar del nombre del servicio en tu lista de rastreo distribuido si no tienes acceso a la cuenta vinculada con el servicio.
La lista de trazas se genera mediante índices de trazas, que se capturan en una ventana de veinte minutos desde que se reciben los primeros tramos.
Por lo general, esto se debe a tramos tardíos.
Si observa tiempos de backend inusualmente cortos para trazas largas, es probable que se trate de un problema con la marca de tiempo que se envía.
Por ejemplo, el intervalo de raíz podría volver a publicar microsegundos como milisegundos. Esto también puede suceder si el tramo raíz es una aplicación browser . Al utilizar un cliente externo como un browser web, es posible que experimente asimetrías horarias (diferencias horarias) con más frecuencia.
Problemas con la aplicación browser
Las versiones anteriores de algunos agentes son incompatibles con rastreo distribuido para la aplicación browser . Si la aplicación del browser realiza una solicitud AJAX a una aplicación APM que ejecuta un agente incompatible, es posible que el agente APM no registre los datos de transacción y extensión para esa solicitud.
Si rastreo distribuido está habilitado para una aplicación de navegador y no ve datos de transacción o extensión para solicitudes APM posteriores, revise los datos del navegador en requisitos de rastreo distribuido y confirme que todas las aplicaciones estén ejecutando versiones compatibles del agente APM.
Si parece que a Traza le faltan tramos de usuario final, asegúrese de haber leído y comprendido los requisitos y procedimientos de habilitación del rastreo distribuido del navegador.
En la página UI AJAX , hay enlaces a la UI usuario del rastreo distribuido independientemente de si hay tramos finales de usuario presentes en esa traza. Para obtener detalles sobre qué datos generan intervalos, consulte Requisitos.
Las versiones anteriores de algunos agentes son incompatibles con rastreo distribuido para la aplicación browser . Si faltan intervalos de APM de manera constante en la traza que incluye la aplicación del navegador, consulte los datos del navegador en los requisitos distribuidos del rastreo y confirme que todas las aplicaciones ejecutan versiones compatibles del agente APM.
Para conocer otras causas de extensiones de navegador huérfanas, consulte Informes de extensiónbrowser .
Otros problemas
Causa posible: para aplicaciones que tienen varios nombres de aplicación, el atributo entity.name
se asociará solo con el nombre de la aplicación principal. Para buscar por otros nombres de aplicaciones, busque usando el atributo appName
.
Las preguntas sobre la integración con OpenTelemetry deben dirigirse al Foro de soporte.
Otros factores que afectan el acceso
Para obtener más información sobre los factores que pueden afectar su capacidad para acceder a la característica New Relic, consulte Factores que afectan el acceso.