Application Insights를 사용하여 런타임 예외 찾기 및 진단

Application Insights는 애플리케이션에서 원격 분석을 수집하여 런타임 예외를 식별하고 진단합니다. 이 자습서에서는 애플리케이션을 사용하여 이 프로세스를 안내합니다. 다음 방법을 알아봅니다.

  • 예외 추적을 사용하도록 프로젝트를 수정합니다.
  • 애플리케이션의 다양한 구성 요소에 대한 예외를 식별합니다.
  • 예외의 세부 정보를 봅니다.
  • 디버깅을 위해 예외 스냅샷 Visual Studio에 다운로드합니다.
  • 쿼리 언어를 사용하여 실패한 요청에 대한 세부 정보를 분석합니다.
  • 새 작업 항목을 만들어 결함이 있는 코드를 수정합니다.

필수 구성 요소

이 자습서를 완료하려면 다음이 필요합니다.

  • 다음 워크로드로 Visual Studio 2019를 설치합니다.
    • ASP.NET 및 웹 개발
    • Azure 개발
  • Visual Studio 스냅샷 디버거를 다운로드 및 설치합니다.
  • Visual Studio 스냅샷 디버거 사용
  • Azure에 .NET 애플리케이션 배포 및 Application Insights SDK 사용
  • 자습서가 애플리케이션에서 예외의 식별을 추적하므로 개발 또는 테스트 환경에서 코드를 수정하여 예외를 생성합니다.

Azure에 로그인

Azure Portal에 로그인합니다.

실패 분석

Application Insights는 애플리케이션에서 모든 실패를 수집합니다. 다양한 작업에서 빈도를 확인하여 가장 큰 영향을 미치는 문제에 집중할 수 있습니다. 그런 다음 이러한 오류에 대한 세부 정보를 드릴다운하여 근본 원인을 식별할 수 있습니다.

  1. Application Insights를 선택한 다음, 구독을 선택합니다.

  2. 실패 창을 열려면 조사 메뉴에서 실패를 선택하거나 실패한 요청 그래프를 선택합니다.

    실패한 요청을 보여 주는 스크린샷

  3. 실패한 요청 창에는 실패한 요청 수와 애플리케이션의 각 작업에 영향을 받는 사용자 수가 표시됩니다. 이 정보를 사용자별로 정렬하면 사용자에게 가장 큰 영향을 주는 오류를 식별할 수 있습니다. 이 예제에서 GET Employees/Create and GET Customers/Details 는 많은 수의 오류와 영향을 받는 사용자로 인해 조사할 가능성이 높습니다. 작업을 선택하면 오른쪽 창에 이 작업에 대한 자세한 정보가 표시됩니다.

    실패한 요청 창을 보여 주는 스크린샷

  4. 창을 축소하여 실패율이 급증을 나타내는 기간에 대해 확대합니다.

    실패한 요청 창을 보여 주는 스크린샷

  5. 필터링된 결과 수가 있는 단추를 선택하여 관련 샘플을 참조하세요. 제안된 샘플에는 샘플링이 적용된 경우에도 모든 구성 요소의 관련 원격 분석이 있습니다. 검색 결과를 선택하여 오류 세부 정보를 확인합니다.

    실패한 요청 샘플을 보여 주는 스크린샷

  6. 실패한 요청의 세부 정보에는 이 트랜잭션에 두 개의 종속성 오류가 있음을 보여 주는 Gantt 차트가 표시되며, 이 차트는 트랜잭션의 총 기간의 50% 이상을 차지했습니다. 이 환경은 이 작업 ID와 관련된 분산 애플리케이션의 구성 요소 간에 모든 원격 분석을 제공합니다. 항목을 선택하여 오른쪽에서 세부 정보를 볼 수 있습니다.

    실패한 요청 세부 정보를 보여 주는 스크린샷

  7. 작업 세부 정보는 실패를 일으킨 것으로 보이는 형식 예외도 보여 줍니다. 우편 번호가 잘못되었기 때문임을 알 수 있습니다. 디버그 스냅샷 열어 Visual Studio에서 코드 수준 디버그 정보를 볼 수 있습니다.

    예외 세부 정보를 보여 주는 스크린샷

실패 코드 식별

스냅샷 디버거는 애플리케이션에서 가장 빈번한 예외의 스냅샷을 수집하여 프로덕션에서 해당 근본 원인을 진단하는 데 도움을 줍니다. 포털에서 디버그 스냅샷을 확인하여 호출 스택을 보고 각 호출 스택 프레임에서 변수를 검사할 수 있습니다. 그런 다음, 스냅샷 다운로드하고 Visual Studio 2019 Enterprise에서 열어 소스 코드를 디버그할 수 있습니다.

  1. 예외의 속성에서 디버그 스냅샷 열기를 선택합니다.

  2. 요청에 대한 호출 스택과 함께 디버그 스냅샷 창이 열립니다. 요청 시 모든 지역 변수의 값을 보려면 메서드를 선택합니다. 이 예제의 top 메서드부터 값이 없는 지역 변수를 볼 수 있습니다.

    디버그 스냅샷 창을 보여 주는 스크린샷

  3. 유효한 값이 있는 첫 번째 호출은 ValidZipCode입니다. 우편 번호에 정수로 번역할 수 없는 문자가 제공된 것을 볼 수 있습니다. 이 문제는 수정해야 하는 코드의 오류로 나타납니다.

    수정해야 하는 코드의 오류를 보여 주는 스크린샷

  4. 그런 다음 이 스냅샷 Visual Studio로 다운로드하여 수정해야 하는 실제 코드를 찾을 수 있습니다. 이렇게 하려면 스냅샷 다운로드를 선택합니다.

  5. 스냅샷이 Visual Studio로 로드됩니다.

  6. 이제 Visual Studio Enterprise에서 예외를 발생시킨 코드 줄을 신속하게 식별하는 디버그 세션을 실행할 수 있습니다.

    코드의 예외를 보여 주는 스크린샷

분석 데이터 사용

Application Insights에서 수집한 모든 데이터는 다양한 방법으로 데이터를 분석하는 데 사용할 수 있는 풍부한 쿼리 언어를 제공하는 Azure Log Analytics에 저장됩니다. 이 데이터를 사용하여 조사 중인 예외를 생성한 요청을 분석할 수 있습니다.

  1. 코드 위의 CodeLens 정보를 선택하여 Application Insights에서 제공하는 원격 분석을 봅니다.

    CodeLens의 코드를 보여 주는 스크린샷

  2. 영향 분석을 선택하여 Application Insights Analytics를 엽니다. 영향을 받는 사용자, 브라우저 및 지역과 같이 실패한 요청에 대한 세부 정보를 제공하는 여러 쿼리로 채워집니다.

    여러 쿼리가 포함된 Application Insights 창을 보여 주는 스크린샷

작업 항목 추가

Application Insights를 Azure DevOps 또는 GitHub와 같은 추적 시스템에 연결하는 경우 Application Insights에서 직접 작업 항목을 만들 수 있습니다.

  1. Application Insights의 예외 속성 창으로 돌아갑니다.

  2. 새 작업 항목을 선택합니다.

  3. 새 작업 항목 창이 열리고 이미 채워진 예외에 대한 세부 정보가 표시됩니다. 저장하기 전에 추가 정보를 추가할 수 있습니다.

    새 작업 항목 창을 보여 주는 스크린샷

다음 단계

런타임 예외를 식별하는 방법을 알아보았으므로 다음 자습서로 이동하여 성능 문제를 식별하고 진단하는 방법을 알아봅니다.