Share via


Application Insights Profiler 문제 해결

이 문서에서는 Application Insights Profiler를 사용할 수 있도록 하는 문제 해결 단계 및 정보를 제공합니다.

적절한 Profiler 엔드포인트를 사용하고 있나요?

현재 엔드포인트 수정이 필요한 유일한 지역은 Azure Government21Vianet에서 운영하는 Microsoft Azure입니다.

앱 설정 미국 정부 클라우드: 중국 클라우드
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

앱이 올바른 버전에서 실행되고 있나요?

Profiler는 4.6.2 이후의 .NET Framework에서 지원됩니다.

웹앱이 ASP.NET Core 애플리케이션인 경우 지원되는 최신 ASP.NET Core 런타임에서 실행되어야 합니다.

적합한 Azure Service 요금제를 사용하고 있나요?

현재 무료 또는 공유 App Service 요금제에서는 Profiler가 지원되지 않습니다. Profiler가 작동을 시작할 수 있는 기본 요금제 중 하나로 업드레이드하세요.

참고 항목

Azure Functions 소비 플랜은 지원되지 않습니다. Application Insights를 사용하여 라이브 Azure Functions 앱 프로파일링을 참조하세요.

적절한 시간 프레임 내에 Profiler 데이터를 검색하고 있나요?

확인하려는 데이터가 생성된 지 2주 넘게 지난 경우에는 시간 필터의 범위를 제한한 후에 다시 시도해 보세요. 추적은 7일 후에 삭제됩니다.

게이트웨이에 액세스할 수 있나요?

방화벽 또는 프록시가 이 웹 페이지에 대한 액세스를 차단하고 있지 않은지 확인합니다.

시간 제한이 표시되거나 Profiler가 실행 중인지 확인해야 하나요?

프로파일링 데이터는 Profiler가 실행되는 동안 발생한 요청에 첨부할 수 있을 때에만 업로드됩니다. Profiler는 매시간 2분간 데이터를 수집합니다. 프로파일링 세션을 시작하여 Profiler를 트리거할 수도 있습니다.

Profiler는 Application Insights 리소스에 추적 메시지 및 사용자 지정 이벤트를 씁니다. 해당 이벤트를 사용하여 Profiler의 실행 방식을 확인할 수 있습니다.

Profiler가 Application Insights 리소스에 보낸 추적 메시지 및 사용자 지정 이벤트를 검색합니다.

  1. Application Insights 리소스의 맨 위 메뉴에서 검색을 선택합니다.

    Screenshot that shows selecting the Search button from the Application Insights resource.

  2. 다음 검색 문자열을 사용하여 관련 데이터를 찾습니다.

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Screenshot that shows the search results from aforementioned search string.

    이전 검색 결과에는 두 개의 AI 리소스에서 검색한 두 가지 예가 포함됩니다.

    • Profiler가 실행되는 동안 애플리케이션에서 요청을 수신하지 않으면, 메시지를 통해 활동이 없어 업로드가 취소되었다고 설명합니다.

    • Profiler가 시작되었고, Profiler가 실행되는 동안 발생한 요청을 검색하면 사용자 지정 이벤트를 전송했습니다. ServiceProfilerSample 사용자 지정 이벤트가 표시되는 경우, 프로필이 캡처되었고 Application Insights 성능 창에서 해당 프로필을 사용할 수 있다는 뜻입니다.

    레코드가 표시되지 않으면 Profiler가 실행되고 있지 않거나 시간이 초과된 것입니다. Azure 서비스에서 Profiler를 사용했는지 확인합니다.

병렬 스레드에서 이중 계산

두 개 이상의 병렬 스레드가 요청과 연결된 경우 스택 뷰어의 총 시간 메트릭이 요청 기간보다 더 길 수 있습니다. 이 경우 총 스레드 시간은 실제로 경과된 시간보다 깁니다.

예를 들어, 다른 스레드가 완료될 때까지 하나의 스레드가 대기 중일 수 있습니다. 뷰어는 이러한 상황의 검색을 시도하여 불필요한 대기를 생략합니다. 이렇게 하면 중요할 수도 있는 정보를 생략하는 문제 대신, 너무 많은 정보가 표시되는 문제가 발생합니다.

추적에 병렬 스레드가 표시되면 대기 중인 스레드를 확인하여 요청에 대한 실행 부하 과다 경로를 식별합니다. 일반적으로 대기 상태로 빠르게 전환되는 스레드는 다른 스레드에서 대기 중입니다. 다른 스레드에 집중하고 대기 중인 스레드 대기 시간을 무시합니다.

특정 Azure 서비스에서 Profiler 문제 해결

다음 섹션에서는 Azure App Service 또는 Azure Cloud Services에서 Profiler를 사용하기 위한 문제 해결 단계를 안내합니다.

Azure App Service

Profiler가 제대로 작동하도록 하려면 다음을 확인합니다.

  • 웹앱에는 올바른 설정으로 Application Insights가 활성화되어 있습니다.

  • ApplicationInsightsProfiler3 WebJob이 실행되고 있는지 확인 웹 작업을 확인하려면 다음 단계를 수행합니다.

    1. Kudu로 이동합니다. Azure Portal에서 다음을 수행합니다.

      1. App Service 인스턴스의 왼쪽 창에서 고급 도구를 선택합니다.
      2. 이동을 선택합니다.
    2. 맨 위 메뉴에서 도구>WebJobs 대시보드를 선택합니다. 웹 작업 창이 열립니다.

      ApplicationInsightsProfiler3이 표시되지 않으면 App Service 애플리케이션을 다시 시작합니다.

      Screenshot that shows the WebJobs pane, which displays the name, status, and last runtime of jobs.

    3. 로그를 비롯한 WebJob 세부 정보를 확인하려면 ApplicationInsightsProfiler3 링크를 선택합니다. 지속적인 웹 작업 세부 정보 창이 열립니다.

      Screenshot that shows the Continuous WebJob Details pane.

Profiler가 여전히 작동하지 않는 경우 로그를 다운로드하고 Azure 지원 티켓을 제출합니다.

진단 서비스 사이트 확장 상태 페이지를 확인합니다.

Profiler가 포털의 Application Insights 창을 통해 사용하도록 설정된 경우, 진단 서비스 사이트 확장을 통해 사용하도록 설정된 것입니다. https://{site-name}.scm.azurewebsites.net/DiagnosticServices로 이동하여 이 확장의 상태 페이지를 확인할 수 있습니다.

참고 항목

상태 페이지 링크의 도메인은 클라우드에 따라 다릅니다. 이 도메인은 App Service용 Kudu 관리 사이트와 동일합니다.

이 상태 페이지는 Profiler 및 스냅샷 디버거 에이전트의 설치 상태를 표시합니다. 예기치 않은 오류가 발생한 경우 문제를 해결하는 방법에 대한 단계와 함께 표시됩니다.

App Service용 Kudu 관리 사이트를 사용하여 해당 상태 페이지의 기준 URL을 가져올 수 있습니다.

  1. Azure Portal에서 App Service 애플리케이션을 엽니다.
  2. 고급 도구를 선택합니다.
  3. 이동을 선택합니다.
  4. Kudu 관리 사이트에서 다음을 수행합니다.
    1. URL에 /DiagnosticServices를 추가합니다.
    2. Enter를 선택합니다.

https://<kudu-url>/DiagnosticServices와 같이 끝납니다.

상태 페이지는 다음 예제와 유사하게 표시됩니다.

Screenshot that shows the Diagnostic Services status page.

참고 항목

Application Insights Profiler의 코드리스 설치는 .NET Core 지원 정책을 따릅니다. 지원되는 런타임에 대한 자세한 내용은 .NET Core 지원 정책을 참조하세요.

수동 설치

Profiler를 구성하면 웹앱의 설정에 업데이트가 이루어집니다. 필요한 경우 업데이트를 수동으로 적용할 수 있습니다.

너무 많은 활성 프로파일링 세션

동일한 서비스 계획으로 실행 중인 최대 4개의 웹앱에서 Profiler를 사용하도록 설정할 수 있습니다. 4개가 넘는 경우 Profiler에서 다음 오류를 throw할 수 있습니다.

Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException

이 문제를 해결하려면 일부 웹앱을 다른 서비스 계획으로 이동합니다.

배포 오류: 디렉터리가 비어 있지 않음 'D:\home\site\wwwroot\App_Data\jobs'

Profiler를 사용하는 Web Apps 리소스에 웹앱을 다시 배포하는 경우 다음과 같은 메시지가 표시될 수 있습니다.

"디렉터리가 비어 있지 않음 'D:\home\site\wwwroot\App_Data\jobs'"

이 오류는 스크립트 또는 Azure Pipelines에서 웹 배포를 실행하는 경우에 발생합니다. 웹 배포 작업에 다음과 같은 배포 매개 변수를 추가하여 해결합니다.

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

이러한 매개 변수는 Application Insights Profiler에서 사용하는 폴더를 삭제하고 재배포 프로세스의 차단을 해제합니다. 현재 실행 중인 Profiler 인스턴스에는 영향을 주지 않습니다.

Application Insights Profiler가 실행되고 있나요?

Profiler는 웹앱에서 지속적인 WebJob으로 실행됩니다. Azure Portal에서 웹앱 리소스를 열 수 있습니다. WebJobs 창에서 ApplicationInsightsProfiler의 상태를 확인합니다. 실행되지 않는 경우 로그를 열어 자세한 정보를 찾습니다.

VM 및 Azure Cloud Services

Azure Diagnostics를 통해 Profiler가 올바르게 구성되었는지 확인하려면 다음을 수행합니다.

  1. 배포된 Azure Diagnostics 구성의 콘텐츠가 올바른지 확인합니다.

  2. Azure Diagnostics가 Profiler 명령줄에서 적절한 iKey를 전달하는지 확인합니다.

  3. Profiler 로그 파일에서 Profiler가 실행되었으나 오류를 반환했는지 여부를 확인합니다.

Azure Diagnostics를 구성하는 데 사용된 설정을 확인하려면 다음 단계를 수행합니다.

  1. 가상 머신(VM)에 로그인합니다.

  2. 이 위치에서 로그 파일을 엽니다. 플러그 인 버전이 컴퓨터에 최신 버전일 수 있습니다.

    VM의 경우:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Azure Cloud Services의 경우:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. 파일에서 WadCfg 문자열을 검색하여 Azure Diagnostics를 구성하기 위해 VM에 전달된 설정을 찾습니다.

  4. Profiler 싱크에서 사용하는 iKey가 올바른지 확인합니다.

  5. Profiler를 시작하는 데 사용되는 명령줄을 확인합니다. Profiler를 시작하는 데 사용되는 인수는 다음 파일에 있습니다(드라이브가 c: 또는 d:일 수 있고 디렉터리가 숨겨질 수 있음).

    VM의 경우:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Azure Cloud Services의 경우:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Profiler 명령줄의 ikey가 올바른지 확인합니다.

  7. 이전 config.json 파일에 있는 경로를 사용하여 BootstrapN.log라는 Profiler 로그 파일을 확인합니다. 표시되는 항목은 다음과 같습니다.

    • Profiler에서 사용 중인 설정을 나타내는 디버그 정보
    • Profiler의 상태 및 오류 메시지

    값은 다음 파일에서 찾을 수 있습니다.

    VM의 경우:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Azure Cloud Services의 경우:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. 애플리케이션이 요청을 수신하는 동안 Profiler가 실행되는 경우 "iKey에서 활동이 검색되었습니다."라는 메시지가 표시됩니다.

  9. 추적을 업로드할 때 "추적 업로드를 시작합니다."라는 메시지가 표시됩니다.

네트워크 프록시 또는 방화벽 규칙 편집

애플리케이션에서 프록시 또는 방화벽을 통해 인터넷에 연결하는 경우 Profiler와 통신할 수 있도록 규칙을 업데이트해야 할 수 있습니다.

Application Insights Profiler에서 사용하는 IP는 Azure Monitor 서비스 태그에 포함됩니다. 자세한 내용은 서비스 태그 설명서를 참조하세요.

지원

여전히 도움이 필요한 경우 Azure Portal에서 지원 티켓을 제출합니다. 오류 메시지의 상관 관계 ID를 포함합니다.