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.
- Infinite Tracing (muestreo tail-based): Nuestro servicio basado en la nube acepta todas sus trazas y luego las clasifica para encontrar las más importantes. Después de configurar el seguimiento estándar, le recomendamos agregar esta opción porque analiza toda su traza y le brinda opciones de configuración para tomar muestras de la traza que más le importa.
Todos los pasos que necesitas para empezar con rastreo distribuido están aquí:
- Nuevo agente PHP: Pasos para head- y muestreo tail-based para la instalación del nuevo agente
- Agente PHP más antiguo: opciones de seguimiento si tiene un agente PHP más antiguo
- Establecer nivel de detalle de la traza
- Aplicación y servicios de instrumento manual con API de agente PHP
Nuevo agente PHP
Ya sea que solo desee probar el rastreo distribuido estándar (muestreo head-based) o también desee configurar Infinite Tracing (muestreo tail-based), debe comenzar configurando el rastreo estándar. Lo guiaremos a través de la instalación del agente APM para poner en marcha el muestreo head-based. Después de eso, puedes configurar Infinite Tracing, que es opcional pero recomendado.
Instale un agente para obtener rastreo estándar distribuido
Este es el mejor enfoque para configurar el rastreo distribuido estándar si aún no ha instalado ningún agente APM para sus servicios o si desea implementar servicios adicionales.
Si ya tiene algunos servicios instrumentados con este agente APM y desea incluirlos en rastreo distribuido, deberá habilitar rastreo distribuido manualmente para cada servicio. Consulte Opciones para agentes PHP más antiguos.
Sugerencia
Necesitará una cuenta de New Relic para configurar rastreo distribuido. Si aún no tiene una, puede crear rápidamente una cuenta gratuita.
Paso 1. 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.
Paso 2. Instrumentar cada servicio con un agente de APM
Repetirás la rutina de instalación del agente para cada servicio involucrado en tu transacción. Si algunos de sus servicios utilizan 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.
Paso 3. 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:
Configurar el seguimiento infinito
El rastreo distribuido estándar para el agente APM (arriba) captura hasta el 10% de su traza, pero si desea que analicemos todos sus datos y encontremos la traza más relevante, puede configurar Infinite Tracing.
Sugerencia
Para obtener más información sobre esta característica, consulte Seguimiento infinito.
Antes de comenzar, primero asegúrese de cumplir con los requisitos.
Paso 1. Complete la instalación del nuevo agente
La configuración de Infinite Tracing se basa en el paso de instrumentación de la instalación del nuevo agente para el rastreo distribuido estándar. Después de terminar de instalar el agente, continúe con la configuración del observador de traza.
Paso 2. 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.
Paso 3: 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.
Paso 4. (Opcional) Personaliza 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:
- Configurar monitoreo de observador de trazas
- Configurar filtro de traza de atributo span
- Configurar filtro de traza aleatorio
Opciones para agentes PHP más antiguos
Si tiene un agente PHP anterior, confirme que la característica de rastreo distribuido que desea sea compatible antes de habilitarla.
Guía de compatibilidad
Después de revisar la información de compatibilidad a continuación, consulte Configurar su agente PHP anterior.
Configura tu antiguo agente PHP
Consulte la configuración a continuación para habilitar rastreo distribuido.
Sugerencia
Si ha estado usando un agente antiguo sin rastreo distribuido, antes de activar rastreo distribuido, consulte Impactos en APM.
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
.