Windows에서 Azure App Service 앱용 .NET Profiler 사용

.NET Application Insights Profiler는 라이브 앱의 추적을 캡처하여 속도가 느린 요청과 속도 저하를 유발하는 코드 줄을 표시합니다. 앱이 프로덕션 환경에서 예상보다 느리게 실행되는 경우 Profiler는 추측하는 대신 병목 상태를 찾는 데 도움이 됩니다.

프로파일러가 Azure App Service 런타임의 일부로 미리 설치됩니다. 이 문서에서는 기본 서비스 계층 이상을 사용하여 App Service에서 실행되는 ASP.NET 및 ASP.NET Core 앱에 사용하도록 설정하는 방법을 보여 줍니다.

.NET용 Application Insights Profiler의 코드리스 설치는 .NET Core 지원 정책을 따릅니다. Azure는 Windows 기반 웹앱에서만 지원합니다. Linux에서 .NET Profiler를 사용하도록 설정하려면 Linux에서 Azure App Service 앱에 .NET Profiler 사용 설정을 참조하세요.

필수 조건

"Always On"이 사용하도록 설정되어 있는지 확인합니다.

프로파일러가 연속 WebJob으로 실행되므로 유휴 상태인 경우에도 앱이 계속 실행되어야 합니다. Profiler를 사용하도록 설정하기 전에 Always On 설정이 사용하도록 설정되어 있는지 확인합니다.

  1. Azure Portal에서 App Service 인스턴스로 이동합니다.

  2. 왼쪽 메뉴에서 설정>구성을 선택합니다.

    왼쪽 메뉴에서 구성을 선택하는 방법을 보여 주는 스크린샷.

  3. 일반 설정을 선택합니다.

  4. Always On이 On으로 설정되어 있는지 확인합니다.

    참고

    Always On을 사용하지 않도록 설정한 경우 App Service 웹앱을 업그레이드하여 기본 계층 이상에서 실행합니다.

    Always On이 사용하도록 설정되었음을 표시하는 구성 창의 일반 탭을 보여 주는 스크린샷.

  5. 변경 내용을 적용한 경우 저장을 선택합니다.

Application Insights 및 .NET Profiler 사용

다음 시나리오 중 하나에서 Profiler를 사용하도록 설정합니다.

동일한 구독의 Application Insights 및 App Service의 경우

Application Insights 리소스가 App Service 인스턴스와 동일한 구독에 있는 경우:

  1. App Service 인스턴스의 왼쪽 메뉴에서Application Insights> 선택합니다.

  2. Application Insights 켜기를 선택합니다.

    앱에 대해 Application Insights를 켜는 것을 보여 주는 스크린샷.

  3. Application Insights 설정 페이지의 Application Insights에서 사용을 선택합니다.

  4. Application Insights 리소스를 앱에 연결했는지 확인합니다.

    앱에서 Application Insights 사용하도록 설정을 보여 주는 스크린샷.

  5. 아래로 스크롤하고 앱에 따라 .NET 또는 .NET Core 탭을 선택합니다.

  6. 컬렉션 수준에서권장을 선택합니다.

  7. 프로파일러 및 코드 최적화에서 켜기를 선택합니다. 이전에 기본 컬렉션 수준을 선택한 경우 Profiler 설정이 사용되지 않습니다.

    앱에서 Profiler를 사용하도록 설정하는 것을 보여 주는 스크린샷.

  8. 적용을 선택한 다음 예를 눌러 확인합니다.

서로 다른 구독에 있는 Application Insights 및 App Service의 경우

Application Insights 리소스가 App Service 인스턴스와 다른 구독에 있는 경우 수동으로 .NET용 Profiler를 사용하도록 설정해야 합니다. App Service 인스턴스에 대한 앱 설정을 만들어 이를 활성화합니다. 템플릿 또는 다른 방법을 사용하여 이러한 설정 만들기를 자동화할 수 있습니다. Profiler를 사용하도록 설정하는 데 필요한 설정은 다음과 같습니다.

앱 설정 값
APPLICATIONINSIGHTS_CONNECTION_STRING Application Insights 리소스에 대한 개요 페이지에서 이 값을 가져옵니다.
APPINSIGHTS_PROFILERFEATURE_VERSION 1.0.0
DiagnosticServices_EXTENSION_VERSION ~3

다음을 사용하여 이러한 값을 설정합니다.

소버린 클라우드에 .NET 프로파일러 사용

앱이 소버린 클라우드에서 실행되는 경우 Profiler를 올바른 지역 엔드포인트로 가리키는 앱 설정을 추가합니다. 21Vianet에서 작동하는 Azure Government 및 Microsoft Azure 대해서만 수정합니다.

앱 설정 Azure Government 21Vianet에서 운영하는 Microsoft Azure
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://{region}.in.applicationinsights.azure.us https://{region}.in.applicationinsights.azure.cn

일반적인 Azure 서비스에 대한 Azure 공용 및 Azure Government 엔드포인트를 비교 합니다.

프로필 수집에 Microsoft Entra 인증 사용

.NET용 Application Insights Profiler는 프로필 수집을 위한 Microsoft Entra 인증을 지원합니다. Profiler 에이전트가 애플리케이션의 모든 프로필을 수집하려면 애플리케이션이 인증하고 필요한 애플리케이션 설정을 Profiler 에이전트에 제공해야 합니다.

Profiler는 애플리케이션에서 Application Insights SDK를 사용하여 Microsoft Entra ID를 참조하고 구성할 때만 Microsoft Entra 인증을 지원합니다.

프로필 수집에 Microsoft Entra ID를 사용하도록 설정하려면 다음을 수행합니다.

  1. 관리 ID를 생성하고 추가하여 App Service에서 Application Insights 리소스에 대한 인증을 수행합니다.

  2. Application Insights 리소스에서 Microsoft Entra ID를 구성하고 사용하도록 설정합니다.

  3. 다음 애플리케이션 설정을 추가하여 Profiler 에이전트가 사용할 관리 ID를 알 수 있도록 합니다.

    • 시스템 할당 ID의 경우:

      앱 설정 값
      APPLICATIONINSIGHTS_AUTHENTICATION_STRING Authorization=AAD
    • 사용자가 할당한 ID의 경우:

      앱 설정 값
      APPLICATIONINSIGHTS_AUTHENTICATION_STRING Authorization=AAD;ClientId={Client id of the User-Assigned Identity}

.NET Profiler 사용 안 함

개별 앱의 인스턴스에 대해 Profiler를 중지하거나 다시 시작하려면:

  1. Azure Portal에서 App Service 인스턴스로 이동합니다.

  2. 왼쪽 메뉴의 설정 에서 WebJobs를 선택합니다.

    왼쪽 메뉴에서 웹 작업 선택을 보여 주는 스크린샷

  3. ApplicationInsightsProfiler3라는 WebJob을 선택합니다.

  4. 중지 아이콘을 선택합니다.

    웹 작업 중지를 위한 중지 선택을 보여 주는 스크린샷.

  5. 중지를 선택하여 확인합니다.

모든 앱에서 프로파일러를 사용하도록 설정하여 가능한 한 빨리 성능 문제를 검색합니다.

웹 배포 중에 프로파일러 파일이 삭제되지 않도록 방지

웹 배포를 사용하여 웹 애플리케이션에 변경 내용을 배포하는 경우 배포에서 Profiler의 파일을 삭제할 수 있습니다. 삭제를 방지하려면 배포 중에 App_Data 폴더를 삭제에서 제외합니다.