• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

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.

Criar um problema

Adicionar detalhes à transação via XML (.NET)

A New Relic coleta e relata informações sobre transações de browsers da web e transações fora da web (tarefas em segundo plano). Normalmente o agente .NET produz informações completas automaticamente, sem necessidade de você modificar o código do seu aplicativo. No entanto, se o New Relic não oferecer suporte à sua framework, pode ser necessário adicionar instrumentação personalizada.

A New Relic usa o rastreador de método para implementar instrumentação personalizada. Um tracer de método é uma sonda de software que você pode colocar em um método de qualquer classe. O agente .NET carrega as diretivas de instrumentação que definem quais métodos devem ser rastreados de todos os arquivos XML no diretório de extensões.

Este documento descreve o trabalho instrumentado quando o agente já está cobrando a transação, mas deseja adicionar mais detalhes a essa transação. Para que o instrumento funcione quando o agente não está criando a transação automaticamente, consulte Criar transação via XML. Você também pode adicionar detalhes e criar transações decorando seu código com atributo.

Adicione detalhes com instrumentação personalizada

Os arquivos de extensão definem um número de fábricas tracer em um elemento de instrumentação. Cada fábrica tracer contém elementos de correspondência que definem o assembly, o nome completo da classe e o nome do método a serem correspondidos. Para definir um novo arquivo XML de instrumentação personalizada:

  1. Crie um novo arquivo .xml no diretório de extensões usado pelo agente .NET para ler cada arquivo XML e definir seu conjunto de instrumentação. Para o agente do .NET framework , use o seguinte local:

    C:\ProgramData\New Relic\.NET Agent\Extensions

    Importante

    Não coloque o .xml arquivo no diretório C:\Program Files\New Relic\.NET agent\Extensions . O arquivo deve estar no local do arquivo ProgramData para que a instrumentação personalizada funcione.

    Não modifique os arquivos XML distribuídos. Esses arquivos são substituídos sempre que o agente é atualizado.

  2. Copie este modelo no arquivo que você criou e use a amostra como exemplo. Este instrumento tem dois métodos, mas você pode adicionar métodos ao seu arquivo de instrumentação.

    Dica

    Os valores AssemblyName, NameSpace.ClassName e MethodName diferenciam maiúsculas de minúsculas.

    <?xml version="1.0" encoding="utf-8"?>
    <extension xmlns="urn:newrelic-extension">
    <instrumentation>
    <!-- These methods appear in the transactions breakdown table and in transaction traces -->
    <tracerFactory metricName="Category/Name">
    <match assemblyName="AssemblyName" className="NameSpace.ClassName">
    <exactMethodMatcher methodName="MethodName" />
    </match>
    </tracerFactory>
    <tracerFactory metricName="Category/Name2">
    <match assemblyName="AssemblyName" className="NameSpace.ClassName2">
    <exactMethodMatcher methodName="MethodName2" />
    </match>
    </tracerFactory>
    </instrumentation>
    </extension>
  3. Valide o arquivo de instrumentação .xml em relação a extension.xsd.

  4. Aplicativos não IIS (como um aplicativo de console ou processo em segundo plano): você também deve criar uma transação via XML para conter os métodos que você instrumento. Métodos personalizados instrumentados fora de uma transação não serão informados à New Relic.

  5. Importante

    Se a versão do seu agente .NET for 7.0 ou superior, este é o fim do procedimento.

    Se a versão do seu agente .NET for inferior a 7.0, prossiga para as próximas etapas.

  6. Se o seu aplicativo estiver hospedado no IIS, reinicie o IIS.

  7. Para aplicativos não IIS, reinicie o processo host do seu aplicativo ou o próprio aplicativo.

Importante

Se alguns dos seus métodos ainda não aparecerem no rastreamento depois de adicionar a instrumentação personalizada XML, desative o método embutido para esses métodos com [MethodImpl(MethodImplOptions.NoInlining)].

Ignorar uma transação

Você pode impedir que uma transação seja informada usando um arquivo de instrumentação personalizada. Sempre que um método ignorado é chamado, o agente .NET ignora toda a transação pai. Isso é o mesmo que chamar IgnoreTransaction().

Para ignorar uma transação:

  1. Adicione instrumentação personalizada.

  2. Adicione um tracerFactory cujo nome é NewRelic.Agent.Core.Tracer.Factories.IgnoreTransactionTracerFactory:

    <tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.IgnoreTransactionTracerFactory">
    <match assemblyName="System.Web.Extensions" className="System.Web.Handlers.ScriptResourceHandler">
    <exactMethodMatcher methodName="Throw404" />
    </match>
    </tracerFactory>

Acompanhe o trabalho assíncrono em uma transação separada

Em alguns casos, o trabalho assíncrono pode ser rastreado como uma transação separada aplicando a instrumentação AsyncForceNewTransactionWrapper :

<tracerFactory name="AsyncForceNewTransactionWrapper">
<match assemblyName="AssemblyName" className="Namespace.ClassName">
<exactMethodMatcher methodName="MethodName" />
</match>
</tracerFactory>

Considerações de uso assíncrono

Comentários

Método instrumentado

O método instrumentado deve ser invocado usando Task.Run, Task.Factory.StartNew ou new Thread(). Não pode ser invocado usando a palavra-chave await .

Tipo de retorno

O método instrumentado não precisa ser async. Porém, se for async, deverá ter um tipo de retorno Task ou Task<T>. Não pode ter um tipo de retorno void .

Atributo instrumentação

O método instrumentado não pode ter atributo instrumentação aplicada a ele. Não pode ser decorado com o atributo [Transaction] ou [Trace] .

Exemplo MinhaInstrumentação.xml

Este exemplo instrumento dois métodos e ignora outro método:

  • Instrument

    : CustomInstrumentDemo.Controllers.FirstController.FirstExample()

  • Instrument

    : CustomInstrumentDemo.Controllers.SecondController.SecondExample()

  • Ignore

    : CustomInstrumentDemo.Controllers.SecondController.ThirdExample()

  • Instrument

    : CustomInstrumentDemo.Controllers.SecondController.FourthExample(int id, string name)

Para implementar este esquema de instrumentação personalizada, utilize o seguinte arquivo de exemplo e métodos instrumentados:

Nome métrica

A métrica criada a partir do rastreador será nomeada usando o nome da classe e o nome do método correspondente. Você pode substituir esse nome pelo atributo metricName . Comece metricName com Custom/ (por exemplo, metricName="Custom/OrderSubmissions").

<!-- instruments MyCompany.Order.Submit() and creates a metric named Custom/OrderSubmissions -->
<tracerFactory metricName="Custom/OrderSubmissions">
<match assemblyName="MyCompany" className="MyCompany.Order">
<exactMethodMatcher methodName="Submit" />
</match>
</tracerFactory>

Nome transação

O agente nomeia as transações usando o tracer na transação com maior prioridade de nomenclatura.

  • A transação da web pode ser nomeada usando o manipulador HTTP, o nome ASP, o nome do controlador MVC ou o nome do serviço web, dependendo do rastreador invocado na execução da transação.
  • As transações em segundo plano sem tracer que nomeie explicitamente a transação são acumuladas em um único nome de transação.

Use o atributo transactionNamingPriority para instruir o agente a dar prioridade de nomenclatura a uma transação tracer . Os valores válidos são 1 a 7, onde 7 tem precedência sobre 1 a 6. Além disso, o atributo metricName deve começar com Custom/ (por exemplo, metricName="Custom/instance").

<!-- instructs the agent to create a metric for MyControllerBase.Execute and to name the transaction using this tracer's metric name -->
<tracerFactory metricName="Custom/instance" transactionNamingPriority="7">
<match assemblyName="MyCompany" className="MyCompany.MyControllerBase">
<exactMethodMatcher methodName="Execute" />
</match>
</tracerFactory>

Validação XSD

O arquivo de instrumentação XML pode ser verificado em relação ao arquivo XSD (localizado em C:\ProgramData\New Relic\.NET Agent\Extensions\extension.xsd) com qualquer validador XSD.

Resolução de problemas

O agente .NET escreverá uma mensagem do log em NewRelic.Profiler.####.log (onde #### é o PID do processo instrumentado) enquanto reescreve os métodos. Isso ajuda a verificar se a instrumentação customizada está sendo lida e se os métodos adequados estão sendo instrumentados.

Dica

Evite usar o atributo name do elemento tracerFactory na instrumentação personalizada. Para obter mais informações, revise o arquivo de esquema extension.xsd no diretório do agente.

Copyright © 2024 New Relic Inc.

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