.NET의 원격 분석 API

완료됨

문제 해결이나 성능 최적화를 위해 앱 동작을 어떻게 조사할 수 있나요? 앱이 수행한 작업에 대한 데이터가 많을수록 문제를 진단하기가 더 쉬워집니다.

야외 장비 판매점에서 일하고 있다고 상상해 보세요. 사용자의 팀은 테스트 단계를 위한 준비가 된 마이크로 서비스를 빌드하고 있습니다. 테스트, 준비 및 프로덕션 중에 문제를 진단할 수 있도록 클라우드 네이티브 앱이 해당 동작에 대한 원격 분석을 내보내는지 확인하려고 합니다.

이 단원에서는 원격 분석과 이를 사용하여 기록할 수 있는 다양한 종류의 데이터에 대해 알아봅니다.

원격 분석이란?

엔지니어링에서 원격 분석은 데이터를 측정하고 모니터링을 위해 중앙 시스템으로 자동 전송하는 것입니다. 예를 들어, 경주용 자동차는 성능에 대한 데이터를 기록하고 엔지니어가 이를 분석하는 대기소로 다시 보낼 수 있습니다. 마찬가지로 우주 캡슐은 캡슐의 상태에 대한 정보를 기록하고 이를 미션 컨트롤로 다시 보낼 수 있습니다. 최근에는 보다 일반적인 시스템에서 원격 분석 데이터를 기록하고 분석하는 것이 일반화되었습니다. 예를 들어, 중앙 난방 장치는 문제 해결을 돕기 위해 제조업체에 원격 분석을 보낼 수 있습니다.

클라우드 네이티브 앱을 작성하는 경우 다음과 같은 경우 원격 분석이 도움이 됩니다.

  • 마이크로 서비스를 개발 중이며 마이크로 서비스가 예상대로 작동하는지 알고 싶습니다.
  • 앱을 테스트 중이며 테스트에 실패하면 어떤 일이 발생하는지 알고 싶습니다.
  • 앱을 준비 중이며 앱의 성능이 어떤지 알고 싶습니다.
  • 프로덕션 환경에서 앱을 지원하고 있으며 예외 문제를 해결하거나 성능을 최적화하려고 합니다.

풍부한 원격 분석을 내보내는 시스템을 다음과 같이 설명할 수 있습니다.

  • 관찰 가능: 관찰 가능한 시스템은 외부에서 시스템의 동작을 이해할 수 있는 시스템입니다.
  • 계측된: 계측 시스템은 개발자가 문제를 해결하는 데 필요한 모든 데이터를 내보내는 시스템입니다.

OpenTelemetry는 앱에서 원격 분석 데이터를 만들고, 처리하고, 내보내는 데 사용할 수 있는 가시성 프레임워크 및 도구 키트입니다. 클라우드 네이티브 앱의 마이크로 서비스를 포함하여 모든 .NET 애플리케이션에 쉽게 추가할 수 있습니다. Jaeger 및 Prometheus와 같은 일반적인 가시성 도구가 사용하고 분석할 수 있는 형식으로 데이터를 내보냅니다.

관찰 가능성의 핵심 요소

서로 다른 기술을 사용하는 분산 마이크로 서비스로 구성된 클라우드 네이티브 앱의 특성으로 인해 관찰 가능하고 적절하게 계측된 코드를 빌드하기가 어려울 수 있습니다. 모든 팀은 마이크로 서비스에 가시성을 통합해야 합니다. 그렇지 않으면 앱의 일부를 모니터링하고 문제를 해결하기 어려울 수 있습니다.

Important

전체 앱을 가시성하게 하려면 모든 개발팀이 마이크로 서비스에서 가시성의 세 가지 핵심 요소를 고려해야 합니다. 로깅, 메트릭추적.

가시성의 세 가지 핵심 요소는 향후 분석을 위해 소프트웨어 통합의 동작을 저장하는 세 가지 형식의 레코드입니다.

  • 로그: 요청 처리 중에 발생한 상황에 대한 타임스탬프가 표시된 텍스트 레코드입니다.
  • 메트릭: 런타임 시 캡처된 서비스 측정값입니다. 메트릭 값은 다음을 포함하여 프로세스에 대한 통계로 집계될 수 있습니다.
    • 사용된 메모리 또는 발생한 가비지 수집 수와 같은 .NET 런타임 통계입니다.
    • 완료된 요청 수, 요청 기간 또는 오류 수와 같은 ASP.NET 또는 NuGet 패키지 통계입니다.
    • 주문 횟수 등 앱과 관련된 사용자 지정 통계입니다.
  • 분산 추적: 개별 요청을 처리하는 데 필요한 모든 작업 단위의 기록(종종 범위이라고도 함)입니다. 클라우드 네이티브 앱에서는 많은 마이크로 서비스와 지원 서비스가 단일 요청에 포함될 수 있으며 분산 추적은 응답을 준비하기 위해 공동 작업하는 모든 서비스를 보여 줍니다.

참고 항목

OpenTelemetry에서는 분산 추적이나 메트릭의 일부가 아닌 모든 데이터(예: 이벤트)가 로그로 간주됩니다.

.NET에서 원격 분석 사용

.NET에는 세 가지 핵심 요소를 나타내는 기본 제공 형식이 있습니다.

  • ILogger: 이 인터페이스는 .NET 코드에서 이벤트를 기록할 때 사용할 수 있는 표준 인터페이스를 제공합니다.
  • 미터: 이 클래스를 사용하여 각각 코드의 성능이나 동작과 관련된 값을 측정하는 계측기 그룹을 만들 수 있습니다. 예를 들어, 제품 판매량을 계산하는 도구나 메시지가 큐에서 대기한 시간을 측정하는 도구를 추가할 수 있습니다. .NET은 또한 다양한 기본 제공 메트릭을 제공합니다.
  • 활동: 이 클래스를 사용하여 추적 정보를 기록할 수 있습니다. 네임스페이스에 대한 ActivitySource 개체를 만드는 것부터 시작합니다. 그런 다음 StartActivity 메서드를 호출하여 데이터 기록을 시작합니다.

모든 .NET 코드에서 이러한 클래스를 사용할 수 있습니다. 다음 단원에서는 .NET Aspire를 통해 클라우드 네이티브 앱에서 OpenTelemetry 클래스를 더 쉽게 사용할 수 있는 방법을 알아봅니다.

자세한 정보