Rastreo distribuido te permite ver el recorrido completo de tus solicitudes a lo largo de un sistema distribuido. El agente PHP instrumentado automáticamente con rastreo distribuyó una serie de funciones PHP nativas, así como algunos clientes HTTP de terceros:
- Función PHP
file_get_contents
- Funciones PHP
curl_exec
ycurl_multi_exec
- Trago 4, Trago 5, Trago 6
- Drupal
drupal_http_request function
- Trabajos en cola de Laravel
Para el agente PHP, ofrecemos dos tipos de rastreo distribuido (para más detalles, consulte Cómo funciona el muestreo de intervalo):
Estándar (muestreo head-based): Antes de que llegue cualquier traza, determinamos un porcentaje determinado de traza para aceptar y analizar. Esto le brinda un punto de partida sólido para ver cómo el rastreo puede ayudarlo. Está activado de forma predeterminada en agente PHP 9.21.0 y superior.
Rastreo infinito (ejemplificación al final): Nuestro servicio basado en la nube acepta todos sus trazos y luego los clasifica para encontrar los más importantes. Infinite tracing analiza todos tus trazos y te brinda opciones de configuración para tomar muestra de los trazos que más te interesan.
Ya sea que simplemente desee probar el rastreo distribuido estándar (ejemplificación al inicio) o también desee configurar el rastreo infinito (ejemplificación al final), debe comenzar configurando el rastreo estándar.
Rastreo estándar distribuido
Este es el mejor enfoque para configurar el rastreo distribuido estándar si aún no instaló ningún agente APM para sus servicios.
Sugerencia
Cuando instala el agente PHP New Relic, el rastreo distribuido estándar se activa de forma predeterminada. Si prefiere desactivarlo, consulte nuestra guía de configuración.
Identificar servicios
Averigüe qué servicios se relacionan con su solicitud para que pueda instrumentar cada uno de ellos para enviar datos de traza a New Relic.
Instrumentar cada servicio con un agente APM
Para cada servicio involucrado en sus transacciones, deberá realizar una instalación separada del agente. Si algunos de sus servicios emplean otros idiomas, simplemente repita los pasos de instalación para esos idiomas.
Para iniciar la rutina de instalación, haga clic en el mosaico a continuación. Cuando haya terminado de instalar cada agente, regrese aquí para ver consejos para ver su traza.
Ver traza
Después de instrumentar cada uno de sus servicios con el agente APM, genere algo de tráfico en su aplicación para que podamos capturar alguna traza. A continuación se muestran algunas formas de ver su traza en la UI:
Para obtener más ayuda para encontrar su traza en la UI:
Rastreo infinito
El rastreo estándar distribuido por el agente APM captura hasta 10 rastreos por minuto, pero si desea que analicemos todos sus datos y encontremos los rastreos más relevantes, puede configurar el Rastreo Infinito.
Antes de comenzar, cerciorar primero de cumplir con los requisitos.
Complete la configuración para el rastreo distribuido estándar.
La configuración de Infinite Tracing se basa en el rastreo distribuido estándar. Por lo tanto, cerciorar de completar los pasos anteriores y luego continúe con la configuración del observador traza.
Configurar el observador de trazas
El observador de trazas es un servicio de New Relic basado en AWS que recopila y analiza todas sus trazas. Siga las instrucciones en Configurar traza observer. Cuando haya terminado, regrese aquí con su información de observador de traza y continúe con el siguiente paso para configurar el agente.
Configurar el agente para Infinite Tracing
Los ajustes de configuración de Infinite Tracing incluyen el rastreo estándar distribuido más información sobre el observador de traza. Tenga en cuenta que la configuración del lado del servidor no está disponible para Infinite Tracing.
Sugerencia
Si necesita ayuda con la configuración del proxy, consulte Soporte de proxy.
(Opcional) Personalizar el seguimiento infinito
Después de agregar los ajustes de configuración del agente, debería comenzar a ver datos en la UI de New Relic. Después de pasar algún tiempo analizando sus datos, es posible que desee ajustar algunas de las características de Infinite Tracing:
Establecer nivel de detalle de la traza
El soporte de rastreo distribuido depende del rastreador de transacciones del agente PHP. Cuando el rastreo distribuido está habilitado, se crea un tramo para cada segmento visto por el rastreador de transacciones.
A medida que se muestrean los intervalos, el agente PHP dará prioridad a los intervalos relacionados con llamadas externas por encima de otros intervalos, que luego se registran en orden descendente de duración.
Si descubre que se informan demasiados intervalos sin importancia para las llamadas a funciones PHP, puede reducir el detalle del rastreador de transacciones configurando newrelic.transaction_tracer.detail
en 0
. Luego puede usar la configuración newrelic.transaction_tracer.custom
o el método API newrelic_add_custom_tracer
para agregar segmentos y tramos de traza para la función PHP específica o los métodos que desea agregar a su traza.
Importante
Para las versiones del agente PHP 8.4 a 8.7: cuando rastreo distribuido está habilitado, estas versiones se comportan como si newrelic.transaction_tracer.detail
estuviera configurado en 0
(como se describe anteriormente), lo que da como resultado que las llamadas a funciones de PHP no generen intervalos. Para obtener intervalos relacionados con llamadas a funciones PHP, actualice a la versión 9.0 o superior.
Aplicación y servicios de instrumento manual con API de agente PHP
Importante
La compatibilidad con W3C Trace Context se agregó en la versión 9.8. Con esto, la API para aplicaciones instrumentadas manualmente ha cambiado de las funciones relacionadas con la carga útil JSON:
newrelic_create_distributed_trace_payload()newrelic_accept_distributed_trace_payload($payload)
A los formularios de matriz de encabezado:
newrelic_insert_distributed_trace_headers($outbound_headers)newrelic_accept_distributed_trace_headers($inbound_headers)
Las funciones JSON ahora se consideran obsoletas y se eliminarán en una versión futura.
Si está utilizando una biblioteca no compatible o tiene un componente de sistemas distribuidos no basado en HTTP (como cola de mensajes), puede usar la API del agente PHP para identificar manualmente las transacciones que se incluirán en un rastreo distribuido. Este es un proceso de dos pasos:
- Modifica tu servicio o aplicación a create o insert los datos del rastreo distribuido
- Modifique su servicio o aplicación a accept datos de rastreo distribuido creados por otras transacciones o solicitudes.
El siguiente ejemplo utiliza una cola genérica de mensajes/trabajos. Si bien los detalles reales variarán según el tipo de sistema que intente agregar a un rastreo distribuido, los conceptos básicos son los mismos. Además, aunque hemos utilizado una cola de trabajos como ejemplo, puedes utilizar estos métodos con el componente any sistemas distribuidos.
Sugerencia
Cuando create a payload o insert headers, le estás diciendo a New Relic que deseas que esta solicitud o transacción o solicitud participe en un rastreo distribuido. Cuando los accept , vincula la solicitud o transacción actual con su solicitud o transacción principal.
Para obtener más información sobre el uso de instrumentación manual para obtener más detalles o ver conexiones entre servicios, consulte la documentación sobre las API de rastreo distribuida.
API de encabezado
API de carga útil (obsoleta)
Programas PHP de línea de comando
Los programas PHP ejecutados desde la línea de comando PHP siempre son muestreados por el rastreador distribuido del agente. Dependiendo de los programas que ejecutes, estos procesos podrían tener una sobrerrepresentación en tu colección de rastreo distribuido. En estas situaciones, puede optar por desactivar la instrumentación de línea de comando utilizando la configuración per-directory newrelic.enabled
en su newrelic.ini files
.