• 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

Guía de migración del agente .NET 8.x a 9.x

Esta guía describe los cambios principales entre las versiones 8.x y 9.x del agente .NET, los problemas que puede encontrar durante la actualización y cómo migrar exitosamente a la versión 9.x.

Los principales cambios incluyen:

  • Rastreo distribuido está habilitado por defecto
  • Eliminación de la API pública del agente obsoleta
  • Eliminación de configuraciones de agentes configurables obsoletas

Rastreo distribuido habilitado por defecto

rastreo distribuido es una característica que existe en el agente .NET desde julio de 2018. Reemplaza el rastreo de aplicaciones múltiples (CAT) como la mejor manera de comprender rápidamente qué sucede con las solicitudes a medida que viajan a través de varios servicios en una arquitectura de aplicaciones distribuidas. CAT quedará obsoleto en el agente .NET a partir de la versión 9.0 y se eliminará en una versión importante futura.

En las versiones 8.x del agente .NET, el archivo newrelic.config predeterminado instalado en un host por cualquier instalador del agente .NET tendría el elemento crossApplicationTracer presente y configurado enabled="true". El elemento distributedTracing no estaba presente de forma predeterminada.

En 9.x, esto se invertirá: crossApplicationTracer no estará presente de forma predeterminada y distributedTracing estará presente con el valor predeterminado de enabled="true". Sin embargo, el instalador del agente no sobrescribe un archivo newrelic.config existente al actualizar de una versión a otra. Por lo tanto, si actualiza el agente de 8.x a 9.x en un host determinado, el comportamiento del agente en ese host no cambiará.

Sugerencia

Si desea adoptar el nuevo comportamiento de seguimiento predeterminado al actualizar de 8.x a 9.x, deberá modificar la configuración de su agente para habilitar rastreo distribuido. La nueva instalación del agente 9.x en un host tendrá el rastreo distribuido habilitado de forma predeterminada.

Eliminación de métodos públicos obsoletos de API del agente

Todos los métodos API obsoletos tienen métodos API de reemplazo con funcionalidad equivalente.

Sugerencia

Si está utilizando la API del agente .NET en el código de su aplicación, le recomendamos que actualice la referencia del paquete en su proyecto a la última versión 9.x del ensamblado de la API del agente antes de actualizar el agente .NET a 9.x. De esa manera, obtendrá errores en tiempo de compilación si su código utiliza cualquiera de los métodos API eliminados en 9.x.

Importante

Si continúa usando una versión 8.x o anterior del ensamblado API y su código usa cualquiera de las API obsoletas que se enumeran a continuación, no obtendrá errores en tiempo de compilación. Sin embargo, si luego implementa su aplicación con una versión 9.x del agente, los métodos API no tendrán ningún efecto y recibirá mensajes de advertencia en tiempo de ejecución en el archivo de registro del agente.

API eliminada

API de reemplazo

CreateDistributedTracePayload

InsertDistributedTraceHeaders

Crea encabezados W3C Trace Context , así como encabezados distribuidos de rastreo New Relic.

AcceptDistributedTracePayload

AcceptDistributedTraceHeaders

Acepta encabezados W3C Trace Context , así como encabezados distribuidos de rastreo New Relic.

AddCustomParameter

AddCustomAttribute

AddCustomAttribute es un método de la interfaz ITransaction , por lo que se necesita una referencia a la transacción actual para utilizar esta API.

GetBrowserTimingFooter

GetBrowserTimingHeader

GetBrowserTimingFooter se ha marcado Obsolete desde la versión 3.x del agente.

Ejemplos

Crear carga útil de seguimiento distribuido

Si anteriormente tenía un código parecido a este:

// Create an external web request to another instrumented service
HttpWebRequest requestMessage = (HttpWebRequest)WebRequest.Create("https://remote-address");
// Create the trace payload
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();
ITransaction transaction = agent.CurrentTransaction;
IDistributedTracePayload payload = transaction.CreateDistributedTracePayload();
// Add the trace payload to the headers of the outgoing request
requestMessage.Headers.Set(NewRelic.Api.Agent.Constants.DistributedTracePayloadKey, payload.HttpSafe());

reemplácelo con esto:

// Create an external web request to another instrumented service
HttpWebRequest requestMessage = (HttpWebRequest)WebRequest.Create("https://remote-address");
// Insert the distributed trace headers to the message. The "setter"
// action tells the API how to add headers to the "carrier", which
// is the HttpWebRequest message in this example
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();
ITransaction currentTransaction = agent.CurrentTransaction;
var setter = new Action<HttpWebRequest, string, string>((carrier, key, value) =>
{
carrier.Headers?.Set(key, value);
});
currentTransaction.InsertDistributedTraceHeaders(requestMessage, setter);

AceptarDistributedTracePayload

Si anteriormente tenía un código parecido a este:

// Obtain the payload from the upstream request object
HttpContext httpContext = HttpContext.Current;
string payload = httpContext.Request.Headers[NewRelic.Api.Agent.Constants.DistributedTracePayloadKey];
// Accept the payload
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();
ITransaction transaction = agent.CurrentTransaction;
transaction.AcceptDistributedTracePayload(payload, TransportType.HTTP);

reemplácelo con esto:

HttpContext httpContext = HttpContext.Current;
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();
ITransaction currentTransaction = agent.CurrentTransaction;
// The "Getter" method defines how to get headers from the carrier,
// which is the HttpContext in this example
IEnumerable<string> Getter(HttpContext carrier, string key)
{
string value = carrier.Request.Headers[key];
return value == null ? null : new string[] { value };
}
// Call the API
currentTransaction.AcceptDistributedTraceHeaders(httpContext, Getter, TransportType.HTTP);

Agregar parámetro personalizado

Si anteriormente tenía un código parecido a este:

// Called in code that runs inside a transaction created by the
// agent, for example an ASP.NET WebApi endpoint
NewRelic.Api.Agent.NewRelic.AddCustomParameter("myCustomParameter", "myValue");

reemplácelo con esto:

// Get the current transaction
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();
ITransaction currentTransaction = agent.CurrentTransaction;
// Add the custom attribute to the current transaction
currentTransaction.AddCustomAttribute("myCustomParameter", "myValue");

Eliminación de ajustes de configuración del agente obsoletos

Las siguientes opciones de configuración del agente se están eliminando del agente. Para que la ruta de actualización de 8.x a 9.x sea lo más sencilla posible, no eliminaremos la configuración del esquema XML del archivo newrelic.config . Sin embargo, la lógica de configuración interna del agente se actualizará para ignorar estas configuraciones y se enviará un mensaje de registro al archivo de registro del agente advirtiéndole que estos valores de configuración ya no tienen ningún efecto.

Un poco sobre la notación: para facilitar la descripción, el resto de esta sección describirá los elementos de configuración con una abreviatura de "notación de puntos" en lugar de XML completo.

Por ejemplo, un elemento de configuración que aparece en su archivo newrelic.config puede verse así:

<configuration>
<parameterGroups>
<identityParameters>
</identityParameters>
</parameterGroups>
</configuration>

En este ejemplo, se escribirá como parameterGroups.IdentityParameters. Dado que todos estos elementos de configuración son hijos del elemento <configuration> de nivel superior, se omite por motivos de brevedad.

La mayoría de las opciones de configuración que se eliminan se relacionan con la captura o exclusión de datos de atributos. Los siguientes documentos son útiles para comprender el panorama general de la recopilación de datos de atributos del agente y cómo se configura:

Opción de configuración eliminada

Opción de configuración de reemplazo

parameterGroups.identityParameters.*

attributes.include

<parameterGroups>
<identityParameter enabled="true"/>
</parameterGroups>

es equivalente a

<attributes enabled="true">
<include>identity.*</include>
</attributes>

parameterGroups.customParameters.enabled

attributes.include

parameterGroups.customParameters.ignore

attributes.exclude

parameterGroups.requestHeaderParameters.enabled

attributes.include

<attributes>
<include>request.parameters.*</include>
</attributes>

Incluirá todos los parámetros de la solicitud.

parameterGroups.requestHeaderParameters.ignore

attributes.exclude

<attributes>
<exclude>request.parameters.specificRequestParameter</exclude>
</attributes>

parameterGroups.responseHeaderParameters.*

Ninguno

requestParameters.enabled

attributes.include

<attributes>
<include>request.parameters.*</include>
</attributes>

Incluirá todos los parámetros de la solicitud.

requestParameters.ignore

attributes.exclude

<attributes>
<exclude>request.parameters.specificRequestParamter</exclude>
</attributes>

analyticsEvents.*

transactionEvents.*

Todos los elementos de configuración secundarios y el atributo de analyticsEvents.* también existen en transactionEvents.* y tienen el mismo significado, con la excepción de la opción transactionEvents.maximumSamplesPerMinute obsoleta.

Además, transactionEvents.attributes* brinda un control más preciso sobre la inclusión y exclusión de atributos personalizados en eventos de transacción.

transactionTracer.captureAttributes

transactionTracer.attributes.enabled

transactionTracer.attributes.include/exclude brinda un control más preciso sobre qué parámetro personalizado incluir con la traza de la transacción.

errorCollector.captureAttributes

errorCollector.attributes.enabled

errorCollector.attributes.include/exclude brinda un control más preciso sobre qué atributo personalizado incluir con el evento de error.

browserMonitoring.captureAttributes

browserMonitoring.attributes.enabled

browserMonitoring.attributes.include/exclude brinda un control más preciso sobre qué atributo personalizado incluir con los datos de .

errorCollector.ignoreErrors

errorCollector.ignoreClasses

Para obtener más información, consulte la documentación de configuración de la recopilación de errores .

transactionEvents.maximumSamplesPerMinute

Ninguno

Este elemento de configuración no se estaba utilizando en el agente.

Copyright © 2024 New Relic Inc.

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