A continuación se ofrecen algunos consejos para la solución de problemas de instrumentación personalizada con el agente de Java de New Relic.
Opciones UI
Puede utilizar UI de New Relic para definir reglas de instrumentación con el editor de instrumentación personalizado o editar su archivo XML a través del Settings de su aplicación Java.
Java apps only: Para editar su archivo XML directamente desde la UI de New Relic: vaya a one.newrelic.com > All capabilities > APM & services > (select a Java app) > Settings > Live Instrumentation. Desde aquí puedes:
- Descargue un archivo XML de muestra.
- Seleccione un archivo XML existente para editar.
- Busque en el historial de instrumentación.
Transacción anidada en hilo generador de perfiles
La instrumentación personalizada es útil para transacciones anidadas. En el generador de perfiles de subprocesos, los métodos con íconos grises al lado no se pueden instrumentar porque hacerlo resultaría en una sobrecarga inaceptable. Sin embargo, los hijos de esos métodos suelen ser instrumentados.
one.newrelic.com > All capabilities > APM & services > (select an app) > Events > Thread profiler: Un icono gris significa que no se puede instrumentar. Un icono blanco significa que no está instrumentado pero que puede instrumentarse. Un ícono azul significa que actualmente está instrumentado.
Para identificar métodos que puede tocar, expanda el árbol de perfiles de hilo hasta que encuentre un método adecuado:
Vaya a
one.newrelic.com > All capabilities > APM & services > (select an app) > Events > Thread profiler
.
Expanda el árbol de perfiles de subprocesos hasta que encuentre un método adecuado.
Siga los procedimientos estándar para definir y desplegar instrumentación personalizada.
Clases y métodos
Cuando resuelva problemas con la instrumentación personalizada para su agente de Java, compare la información pointcut
en su archivo de configuración newrelic.yml
con los mensajes de confirmación en su archivo de registro. Verifique que las clases y los métodos coincidan.
Aquí hay un ejemplo:
# This is a pointcut example in your newrelic.yml config file:<pointcut transactionStartPoint="true"> <className>com.example.class.name</className> <method> <name>exampleMethod</name> </method></pointcut>
Si esto se está instrumentando correctamente, es posible que vea un mensaje similar a este en el archivo de registro:
# This is a confirmation example in your log file:Oct 1, 2015 10:58:52 -0700 [9805 1] com.newrelic FINER: Instrumenting com/example/class/name
Si la clase y el método del archivo de registro no coinciden con los valores de su instrumentación personalizada, revíselos y ajústelos según sea necesario. (Es posible que no siempre vea una confirmación en su archivo de registro sobre si la carga de instrumentación personalizada se realizó correctamente o falló).
Transacción separada en XML
A continuación se muestra un ejemplo de un punto de corte con varios valores method
. Se agregó nameTransaction
al XML para desglosar el método como una transacción separada en lugar de como un segmento en la tabla de desglose de APMTransactions .
# This is a pointcut example to identify a specific transaction with XML custom instrumentation:<pointcut> <nameTransaction/> <className>com.examplename.client.actionflow.impl.exampleActionFlow</className> <method> <name>requestNAME</name> <parameters> <type>boolean</type> </parameters> </method></pointcut>
Transacción asincrónica
Si su aplicación utiliza procesos asincrónicos, es posible conectar la actividad del trabajador asincrónico a la transacción principal mediante la API de Java. Por defecto estas transacciones no están vinculadas. Para obtener más información, consulte Instrumentación asincrónica de Java.