소프트웨어가 항상 예상한 대로 작동하지는 않지만 .NET Core에는 이러한 문제를 빠르고 효과적으로 진단할 수 있는 도구 및 API가 있습니다.
네이티브 AOT 배포는 .NET 7부터 사용 가능한 애플리케이션 모델입니다. 네이티브 AOT 앱에 대한 .NET 8 진단 지원에 대한 자세한 내용은 Native AOT 진단을 참조하세요.
이 문서는 필요한 다양한 도구를 찾는 데 도움이 됩니다.
디버거
디버거를 사용하여 프로그램과 상호 작용할 수 있습니다. 일시 중지, 증분 실행, 검사 및 다시 시작은 코드 동작에 대한 인사이트를 제공합니다. 디버거는 쉽게 재현될 수 있는 기능 문제를 진단하는 데 적합합니다.
단위 테스트
유닛 테스트는 고품질 소프트웨어의 연속 통합 및 배포를 위한 핵심 구성 요소입니다. 단위 테스트는 항목을 중단할 때 조기 경고를 제공하도록 설계되었습니다.
관찰 가능성을 위한 계측
.NET은 일반적으로 관찰 가능성의 세 가지 핵심 요소로 알려진 메트릭, 로그 및 분산 추적을 사용하는 업계 표준 계측 기술을 지원합니다.
계측은 수행하는 작업을 기록하기 위해 소프트웨어 프로젝트에 추가되는 코드입니다. 그런 다음 이 정보를 파일, 데이터베이스 또는 메모리 내에서 수집하고 분석하여 소프트웨어 프로그램이 작동하는 방식을 이해할 수 있습니다. 이는 종종 프로덕션 환경에서 문제를 모니터링하고 진단하는 데 사용됩니다. .NET 런타임에는 선택적으로 사용하도록 설정할 수 있는 기본 제공 계측과 애플리케이션용으로 특수화된 사용자 지정 계측을 추가할 수 있는 API가 있습니다.
로그
로깅은 코드가 계측되어 로그를 생성하는 기술로, 프로그램이 실행되는 동안 발생한 흥미로운 이벤트의 레코드입니다. 로그 이벤트의 기준 집합이 기본적으로 구성되는 경우가 많으며, 요청 시 더 광범위한 로깅을 사용하도록 설정하여 특정 문제를 진단할 수 있습니다. 기록되는 데이터의 양에 따라 성능 오버헤드가 가변적입니다.
대부분의 경우 기존 프로젝트에 로깅을 추가하든 새 프로젝트를 만들든 관계없이 ILogger 인프라가 좋은 기본 선택입니다. ILogger는 빠른 구조적 로깅, 유연한 구성, 그리고 ASP.NET 앱을 실행할 때 표시되는 콘솔을 포함한 공통 싱크 컬렉션을 지원합니다. 또한, ILogger 인터페이스는 풍부한 기능과 확장성을 제공하는 다양한 타사 로깅 구현에 대한 외관 역할을 할 수도 있습니다.
메트릭
메트릭은 애플리케이션 성능 및 상태를 모니터링하기 위해 시간을 두고 점차 기록되는 숫자 측정값입니다. 메트릭은 대개 잠재적 문제가 탐지될 때 경고를 생성하는 데 사용됩니다. 메트릭은 성능 오버헤드가 매우 낮으며 많은 서비스에서 항상 원격 분석으로 구성합니다. 예외는 종종 메트릭으로 기록되며 데이터의 카디널리티를 줄이기 위해 요약할 수 있습니다. 자세한 내용은 예외 요약을 참조하세요.
분산 추적
분산 추적은 여러 컴퓨터 또는 프로세스에 분산된 애플리케이션 내에서 오류 및 성능 문제를 지역화하는 데 도움이 되는 특수한 형태의 로깅입니다. 해당 기술은 애플리케이션을 통해 요청을 추적하여 다양한 애플리케이션 구성 요소에서 수행되는 작업을 함께 상호 연결하고 애플리케이션이 동시 요청에 대해 수행 중일 수 있는 다른 작업과 해당 작업을 구분합니다. 모든 요청을 추적할 수 있으며, 샘플링은 필요에 따라 성능 오버헤드를 바인딩하기 위해 사용될 수 있습니다.
계측 수집
다음과 같은 여러 가지 방법으로 애플리케이션에서 계측 데이터를 송신할 수 있습니다.
OpenTelemetry - 원격 분석 수집 및 내보내기를 위한 플랫폼 간 공급업체 중립적 표준
리소스 모니터링은 시스템 내에서 다양한 컴퓨팅 리소스의 사용률, 성능 및 가용성을 지속적으로 관찰하고 추적하는 프로세스입니다. 이러한 리소스에는 하드웨어 구성 요소(예: CPU, 메모리, 디스크 스토리지 및 네트워크 인터페이스)뿐만 아니라 소프트웨어 구성 요소(예: 애플리케이션 및 서비스)가 포함될 수 있습니다. 리소스 모니터링은 성능 문제를 감지 및 진단하고 시스템이 예상 매개 변수 내에서 작동하도록 하는 데 자주 사용됩니다.
특수 진단
디버깅 또는 관찰 가능성으로 충분하지 않은 경우 .NET은 EventSource, 덤프, DiagnosticSource와 같은 추가 진단 메커니즘을 지원합니다. 자세한 내용은 특수 진단 문서를 참조하세요.
문제 해결에 Web App Down, Crash Monitoring, Ask Genie를 사용합니다. 이러한 도구를 사용하여 애플리케이션 및 플랫폼 가용성을 모니터링하고, 처리되지 않은 예외를 식별하고, 메모리 덤프 및 호출 스택을 캡처하고, 조사 및 진단 영역을 찾습니다.