본문 바로가기
WIKI 기술 지식 베이스

.NET OpenTracing 계측

원문 보기 위키 갱신

{% alert level="info" %} OpenTracing 지원은 더 이상 사용되지 않는(deprecated) 사양을 기반으로 해요. 오픈 스펙으로 코드를 계측하려면 OpenTelemetry를 사용하세요. Datadog SDK에서 OpenTelemetry 계측 데이터를 처리하는 방법을 시도해 보세요. {% /alert %}

자세한 내용과 정보는 OpenTracing API를 확인하세요.

출처: 문서

본문

설정

{% alert level="danger" %} 참고: v3.0.0부터 OpenTracing 지원을 사용하려면 자동 계측(automatic instrumentation)도 함께 사용해야 해요. 자동 계측과 커스텀 계측 패키지 버전(예: MSI와 NuGet)을 동기화된 상태로 유지하고, 패키지의 메이저 버전을 섞지 않도록 주의하세요. {% /alert %}

OpenTracing 지원을 사용하려면 Datadog.Trace.OpenTracing NuGet 패키지를 애플리케이션에 추가하세요. 애플리케이션 시작 중에 OpenTracing SDK를 초기화하세요:

using Datadog.Trace.OpenTracing;

public void ConfigureServices(IServiceCollection services)
{
    // Create an OpenTracing ITracer with the default setting
    OpenTracing.ITracer tracer = OpenTracingTracerFactory.CreateTracer();

    // Use the tracer with ASP.NET Core dependency injection
    services.AddSingleton<ITracer>(tracer);

    // Use the tracer with OpenTracing.GlobalTracer.Instance
    GlobalTracer.Register(tracer);
}

메서드 수동 계측

OpenTracing으로 span을 생성하세요.

using (IScope scope = GlobalTracer.Instance.BuildSpan("manual.sortorders").StartActive(finishSpanOnDispose: true))
{
    scope.Span.SetTag("resource.name", "<RESOURCE NAME>");
    SortOrders();
}

비동기 트레이스

비동기 작업에서 실행되는 코드를 트레이스하려면 동기 코드를 감싸는 것처럼 백그라운드 작업 안에서 새 scope를 만드세요.

 Task.Run(
     () =>
     {
         using (IScope scope = GlobalTracer.Instance.BuildSpan("manual.sortorders").StartActive(finishSpanOnDispose: true))
         {
             scope.Span.SetTag("resource.name", "<RESOURCE NAME>");
             SortOrders();
         }
     });

더 알아보기 (Learn more)

추가로 도움이 되는 문서, 링크, 아티클: