• English日本語한국어
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하십시오.

문제 신고

XML(.NET)을 통해 트랜잭션에 세부 정보 추가

New Relic은 웹 브라우저 트랜잭션 및 웹이 아닌 트랜잭션(백그라운드 작업)에 대한 정보를 수집하고 보고합니다. 일반적으로 .NET 에이전트는 애플리케이션 코드를 수정할 필요 없이 완전한 정보를 자동으로 생성합니다. 그러나 New Relic이 프레임워크 를 지원하지 않는 경우 사용자 정의 계측 을 추가해야 할 수 있습니다.

New Relic은 메서드 추적자를 사용하여 사용자 지정 계측을 구현합니다. 메서드 추적기는 모든 클래스의 메서드에 넣을 수 있는 소프트웨어 프로브입니다. .NET 에이전트는 확장 디렉터리의 모든 XML 파일에서 추적해야 하는 메서드를 정의하는 계측 지시문을 로드합니다.

이 문서는 에이전트가 이미 트랜잭션을 수집하고 있지만 이러한 트랜잭션에 더 자세한 정보를 추가하려는 경우의 계측 작업에 대해 설명합니다. 에이전트가 트랜잭션을 자동으로 생성하지 않을 때 작업을 계측하려면 XML을 통해 트랜잭션 생성 을 참조하십시오. 코드를 속성으로 장식하여 세부 정보를 추가하고 트랜잭션을 생성할 수도 있습니다.

사용자 지정 계측으로 세부 정보 추가

확장 파일은 계측 요소에서 여러 추적자 팩토리를 정의합니다. 각 추적 프로그램 팩터리는 어셈블리, 정규화된 클래스 이름 및 일치시킬 메서드 이름을 정의하는 일치 요소를 포함합니다. 새 사용자 정의 계측 XML 파일을 정의하려면:

  1. .NET 에이전트가 모든 XML 파일을 읽고 해당 계측 세트를 정의하는 데 사용하는 확장 디렉토리에 새 .xml 파일을 만듭니다. .NET Framework 에이전트의 경우 다음 위치를 사용합니다.

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

    중요

    .xml 파일을 C:\Program Files\New Relic\.NET agent\Extensions 디렉토리에 넣지 마십시오 . 사용자 정의 계측이 작동하려면 파일이 ProgramData 파일 위치에 있어야 합니다.

    배포된 xml 파일을 수정하지 마십시오. 에이전트가 업그레이드될 때마다 이러한 파일을 덮어씁니다.

  2. 샘플을 예제로 사용하여 생성한 파일에 이 템플릿을 복사합니다. 이것은 두 가지 방법을 계측하지만 계측 파일에 메서드를 추가할 수 있습니다.

    AssemblyName , NameSpace.ClassNameMethodName 값은 대소문자를 구분합니다.

    <?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. extension.xsd 에 대해 .xml 계측 파일의 유효성을 검사합니다 .

  4. 비 IIS 앱(예: 콘솔 앱 또는 백그라운드 프로세스): 계측하는 메서드를 포함하려면 XML을 통해 트랜잭션도 생성 해야 합니다. 트랜잭션 외부에서 계측된 사용자 정의 방법은 New Relic에 보고되지 않습니다.

  5. 중요

    .NET 에이전트 버전이 7.0 이상인 경우 이것이 절차의 끝입니다.

    .NET 에이전트 버전이 7.0 미만인 경우 다음 단계를 계속합니다.

  6. 앱이 IIS에서 호스팅되는 경우 IIS를 다시 시작합니다.

  7. 비 IIS 응용 프로그램의 경우 응용 프로그램의 호스트 프로세스 또는 응용 프로그램 자체를 다시 시작합니다.

중요

XML 사용자 지정 계측을 추가한 후에도 일부 메서드가 여전히 추적에 표시되지 않으면 [MethodImpl(MethodImplOptions.NoInlining)] 을 사용하여 해당 메서드에 대한 메서드 인라인을 비활성화합니다.

트랜잭션 무시

사용자 정의 계측 파일을 사용하여 보고되는 트랜잭션을 중지할 수 있습니다. 무시된 메서드가 호출될 때마다 .NET 에이전트는 전체 상위 트랜잭션을 무시합니다. 이는 IgnoreTransaction() 호출과 동일합니다.

트랜잭션을 무시하려면:

  1. 사용자 정의 계측을 추가합니다 .
  2. 이름이 NewRelic.Agent.Core.Tracer.Factories.IgnoreTransactionTracerFactorytracerFactory 추가:
<tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.IgnoreTransactionTracerFactory">
<match assemblyName="System.Web.Extensions" className="System.Web.Handlers.ScriptResourceHandler">
<exactMethodMatcher methodName="Throw404" />
</match>
</tracerFactory>

별도의 트랜잭션에서 비동기 작업 추적

경우에 따라 AsyncForceNewTransactionWrapper 계측을 적용하여 비동기 작업을 별도의 트랜잭션으로 추적할 수 있습니다.

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

비동기 사용 고려 사항

코멘트

계측 방법

계측 메서드는 Task.Run , Task.Factory.StartNew 또는 new Thread() 를 사용하여 호출해야 합니다. await 키워드를 사용하여 호출할 수 없습니다.

반환 유형

계측 메서드는 async 일 필요가 없습니다. 그러나 async 이면 Task 또는 Task<T> 의 반환 유형을 가져야 합니다. void 반환 유형을 가질 수 없습니다.

속성 계측

계측된 메서드에는 속성 계측을 적용할 수 없습니다. [Transaction] 또는 [Trace] 속성으로 장식할 수 없습니다.

예제 MyInstrumentation.xml

이 예제에서는 두 가지 방법을 계측하고 다른 방법을 무시합니다.

  • 악기 : CustomInstrumentDemo.Controllers.FirstController.FirstExample()
  • 악기 : CustomInstrumentDemo.Controllers.SecondController.SecondExample()
  • 무시 : CustomInstrumentDemo.Controllers.SecondController.ThirdExample()
  • 악기 : CustomInstrumentDemo.Controllers.SecondController.FourthExample(int id, string name)

이 사용자 정의 계측 체계를 구현하려면 다음 예제 파일과 계측 방법을 사용하십시오.

이름 측정항목

추적 프로그램에서 생성된 메트릭은 일치하는 메서드의 클래스 이름과 메서드 이름을 사용하여 이름이 지정됩니다. metricName 속성으로 이 이름을 재정의할 수 있습니다. metricNameCustom/ 로 시작합니다(예: 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>

이름 거래

에이전트는 이름 지정 우선 순위가 가장 높은 트랜잭션의 추적 프로그램을 사용하여 트랜잭션 이름을 지정합니다.

  • 웹 트랜잭션은 트랜잭션 실행에서 호출된 추적 프로그램에 따라 HTTP 처리기, ASP 이름, MVC 컨트롤러 이름 또는 웹 서비스 이름을 사용하여 이름을 지정할 수 있습니다.
  • 트랜잭션 이름을 명시적으로 지정하는 추적 프로그램이 없는 백그라운드 트랜잭션은 단일 트랜잭션 이름으로 롤업됩니다.

transactionNamingPriority 속성을 사용하여 에이전트에 추적자 트랜잭션 이름 지정 우선순위를 지정하도록 지시합니다. 유효한 값은 1 - 7 이며, 여기서 71 - 6 보다 우선합니다. 또한 metricName 속성은 Custom/ 로 시작해야 합니다(예: 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>

XSD 검증

XML 계측 파일은 모든 XSD 유효성 검사기를 사용하여 XSD 파일( C:\ProgramData\New Relic\.NET Agent\Extensions\extension.xsd 에 있음)에 대해 확인할 수 있습니다.

문제점 해결

.NET 에이전트는 메소드를 재작성할 때 NewRelic.Profiler.####.log (여기서 #### 은 계측 프로세스의 PID)에 로그 메시지를 씁니다. 이렇게 하면 사용자 지정 계측이 읽혀지고 적절한 메서드가 계측되고 있는지 확인하는 데 도움이 됩니다.

맞춤 계측에서 tracerFactory 요소의 name 속성을 사용하지 마세요. 자세한 내용은 에이전트 디렉터리의 extension.xsd 스키마 파일을 검토하십시오.

Copyright © 2024 New Relic Inc.

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