• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Crea una propuesta

Agente de Java API: Instrumento que utiliza anotación

El agente de Java de New Relic proporciona varias opciones para instrumentación personalizada. Una de esas opciones es agregar las anotaciones @Trace, @TraceLambda o @TraceByReturnType del agente de Java API al código de su aplicación. Este documento describe cómo utilizar las anotaciones.

Importante

Para utilizar anotaciones, debe modificar el código fuente. Si no puede o no quiere modificar su código fuente, consulte instrumentación personalizada para conocer otras opciones de instrumentación.

Las anotaciones están habilitadas de forma predeterminada.

De forma predeterminada, la configuración enable_custom_tracing está establecida en true en el agente de Java, que es la configuración necesaria para que funcionen las anotaciones @Trace.

Esta configuración no está incluida en newrelic.yml de forma predeterminada. Si desea desactivar las anotaciones, establezca enable_custom_tracing: false (precedido por dos espacios) en la sección common de su newrelic.yml.

@Rastro

Anotar un método con @Trace le dice al agente de Java que se deben tomar medidas para ese método.

Para agregar una llamada a un método como una traza personalizada, agregue @Trace anotaciones a su método. Asegúrese de que newrelic-api.jar aparezca en su classpath ya que contiene todas estas anotaciones.

import com.newrelic.api.agent.Trace;
...
@Trace
public void run() {
// background task
}

Crear una nueva transacción

Si las transacciones no aparecen y desea iniciar una nueva transacción, incluya dispatcher=true con la anotación @Trace :

@Trace (dispatcher=true)
public void run() {
// background task
}

Añade detalles a tu transacción

Si su traza de la transacción muestra grandes bloques de tiempo no instrumentados y desea incluir algunos métodos más dentro de la traza, puede usar la anotación @Trace sin parámetro:

@Trace
protected void methodWithinTransaction() {
// work
}

Convertir una transacción en una solicitud web

Para generar un informe de tarea en segundo plano como una transacción browser web con una llamada API de agente de Java : En el método anotado con @Trace(dispatcher=true), llame a:

NewRelic.setRequestAndResponse(Request request, Response response)

Los argumentos son implementaciones de las interfaces Request y Response en newrelic-api.jar.

Importante

Incluso si sus objetos Request y Response ya están presentes, aún necesita agregar esta llamada API.

Defina su propia clase de anotación @Trace

Si define su propia clase de anotación @Trace , no hay dependencia de newrelic-api.jar. Para definir la clase:

package com.test;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Trace {
public static final String NULL = "";
String metricName() default NULL;
boolean dispatcher() default false;
String tracerFactoryName() default NULL;
}

Luego, configure el agente para usar esta anotación en la sección common de newrelic.yml:

class_transformer:
trace_annotation_class_name: com.test.Trace

Propiedades para @Trace

La anotación @Trace admite las siguientes propiedades.

@TraceLambda

Esta característica está deshabilitada de forma predeterminada y debe habilitarse explícitamente (p. ej. -Dnewrelic.config.instrumentation.trace_lambda.enabled=true) para que las anotaciones surtan efecto. La variable de entorno equivalente es NEW_RELIC_INSTRUMENTATION_TRACE_LAMBDA_ENABLED.

Si su traza de la transacción muestra grandes bloques de tiempo no instrumentados y desea incluir expresiones lambda dentro de la traza, puede usar la anotación @TraceLambda sin parámetro:

import com.newrelic.api.agent.TraceLambda;
@TraceLambda
class ClassContainingLambdaExpressions() {
// work
}

Las expresiones lambda se convierten en métodos estáticos de la clase que las contiene después de la compilación. De forma predeterminada, los métodos estáticos dentro de las clases marcadas con la anotación @TraceLambda que coincidan con el patrón de anotaciones se marcarán con la anotación @Trace .

Propiedades para @TraceLambda

La anotación @TraceLambda admite las siguientes propiedades.

@TraceByReturnType

Para incluir métodos con un tipo de retorno particular dentro de la traza, puede usar la anotación @TraceByReturnType para marcar una clase que pasa los tipos de retorno como una propiedad. Los métodos de las clases anotadas que coincidan con uno de los tipos de devolución especificados se marcarán con la anotación @Trace .

@TraceByReturnType(traceReturnTypes={Integer.class, String.class})
class ClassContainingMethods() {
// ...
}

Propiedades de @TraceByReturnType

La anotación @TraceByReturnType admite las siguientes propiedades.

Consideraciones de rendimiento

Cuando el agente de Java está presente en la JVM, inyectará código en los métodos anotados. El impacto en el rendimiento es insignificante en operaciones pesadas, como base de datos o llamadas a servicios web, pero es notable en métodos que se llaman con frecuencia, como un descriptor de acceso llamado miles de veces por segundo.

Advertencia

No utilice instrumentos en todos sus métodos, ya que esto puede provocar una disminución del rendimiento y un problema de agrupación métrica.

Más funciones API

Para obtener más información sobre la API del agente de Java y su funcionalidad, consulte la introducción a la API del agente de Java.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.