El agente .NET de New Relic ofrece varias opciones para instrumentación personalizada. La instrumentación personalizada le permite instrumentar partes de su aplicación que no se instrumentan automáticamente. Este documento describe cómo instrumentar su aplicación decorando los métodos en el código de su aplicación con atributos.
- Utilice el atributo
Transaction
para crear una transacción personalizada. También puede marcar la transacción personalizada como una transacción web con la propiedadWeb
del atributo. - Utilice el atributo
Trace
para agregar instrumentación personalizada a los métodos que se invocan dentro de una transacción preexistente.
Requisitos y recomendaciones
Los requisitos incluyen:
- Agente .NET versión 6.16.178.0 o superior.
- Debes estar dispuesto a modificar tu código fuente. Si no puede o no quiere modificar su código fuente, utilice instrumentación personalizada a través de XML.
- Su proyecto debe tener una referencia a
NewRelic.Api.Agent.dll
(por ejemplo, instalar el paquete y colocarusing NewRelic.Api.Agent;
en su código). Este paquete está en la galería NuGet. - Los atributos
Transaction
yTrace
deben aplicarse a implementaciones concretas de métodos. No se pueden aplicar en interfaces o definiciones de métodos de superclase.
Transacción llamada dentro de transacción
Los métodos decorados con el atributo [Transaction]
solo crearán una nueva transacción cuando ya no exista ninguna. Cuando se llama a un método decorado con [Transaction]
desde within una transacción iniciada anteriormente, se tratará como el atributo [Trace]
y proporcionará más información sobre la transacción existente.
Crear una nueva transacción no web
Para iniciar una transacción no web (también conocida como solicitud en segundo plano) con el atributo Transaction
:
[Transaction]public void Run(){ // your background task}
Para obtener detalles sobre por qué utilizar web o no web, consulte Clasificar como web o no web.
Crear una nueva transacción web
Para indicarle al agente que marque una tarea que no sea web como una transacción browser web, utilice cualquiera de estas opciones:
- Establezca la propiedad
Web
del atributoTransaction
entrue
. - Establezca el URI de la transacción con
SetTransactionUri()
.
[Transaction(Web = true)]public void Run(){ var uri = new Uri("https://www.mydomain.com/path"); NewRelic.Api.Agent.NewRelic.SetTransactionUri(uri);
// your web task}
Cuando se utiliza dentro de una transacción iniciada anteriormente, se tratará como un atributo [Trace]
.
Para obtener detalles sobre por qué utilizar web o no web, consulte Clasificar como web o no web.
Agregar detalles a la transacción existente con Trace
Si su traza de la transacción muestra grandes bloques de tiempo no instrumentados y desea incluir métodos adicionales dentro de la traza, puede utilizar el atributo Trace
:
[Trace]protected void MethodWithinTransaction(){ // your app code}
Importante
Si algunos de sus métodos no aparecen en traza después de agregar el atributo [Trace]
, deshabilite la inserción de métodos para esos métodos con [MethodImpl(MethodImplOptions.NoInlining)]
.
Importante
Ejecutar su aplicación desde Visual Studio en modo debug puede evitar que algunos métodos aparezcan en New Relic traza. Para garantizar que los métodos aparezcan en New Relic, ejecute la aplicación en modo de lanzamiento a través de la línea de comando.
Propiedades para Transaction
El atributo Transaction
admite las siguientes propiedades:
Ejemplo: instrumento cuatro métodos
Leer publicaciones del foro sobre instrumentación
Para obtener recomendaciones más específicas, consulte estas publicaciones en nuestra comunidad del Foro de soporte:
- Solucionar problemas de instrumentación personalizada basada en atributos
- Construya fábricas de rastreadores de instrumentación personalizada a partir del agente .NET archivo de registro
Utilice otras funciones API
Para obtener más información sobre la API del agente .NET y su funcionalidad, consulte la guía API del agente .NET de New Relic. Para instrumentación personalizada sin modificar su código fuente, consulte Crear transacción vía XML y Agregar detalles a transacción vía XML.