Application Insights 스냅샷 디버거를 사용하도록 설정하거나 스냅샷을 보는 문제 해결

애플리케이션에 대해 Application Insights 스냅샷 디버거를 사용하도록 설정했지만 예외에 대한 스냅샷이 표시되지 않는 경우 다음 지침을 사용하여 문제를 해결할 수 있습니다.

스냅샷이 생성되지 않는 여러 가지 이유가 있을 수 있습니다. 먼저 스냅샷 상태 검사 실행하여 가능한 일반적인 원인 중 일부를 식별할 수 있습니다.

지원되지 않는 시나리오

아래에서 스냅샷 수집기가 지원되지 않는 시나리오를 찾을 수 있습니다.

시나리오 부작용 권장 사항
애플리케이션에서 직접(.csproj) 스냅샷 수집기 SDK를 사용하고 고급 옵션 "Interop"을 사용하도록 설정한 경우 로컬 Application Insights SDK(스냅샷 수집기 원격 분석 포함)가 손실됩니다. 따라서 스냅샷을 사용할 수 없습니다.
애플리케이션이 시작할 때 작동이 중단될 수 있음 System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Application Insights 기능 "Interop"에 대한 자세한 내용은 Azure App Service 및 ASP.NET Core 대한 애플리케이션 모니터링을 참조하세요.
고급 옵션 "Interop"을 사용하는 경우 코드 없는 스냅샷 수집기 삽입(Azure Portal UX를 통해 사용)을 사용합니다.

적절한 스냅샷 디버거 엔드포인트를 사용하고 있는지 확인합니다.

현재 엔드포인트를 수정해야 하는 지역은 Azure Government Azure 중국뿐입니다.

Application Insights SDK를 사용하는 App Service 및 애플리케이션의 경우 아래에 정의된 대로 스냅샷 디버거에 대해 지원되는 재정의를 사용하여 연결 문자열 업데이트해야 합니다.

연결 문자열 속성 미국 정부 클라우드 중국 클라우드
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

다른 연결 재정의에 대한 자세한 내용은 Application Insights 설명서를 참조하세요.

함수 앱의 경우 아래 지원되는 재정의를 사용하여 를 업데이트 host.json 해야 합니다.

속성 미국 정부 클라우드 중국 클라우드
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

다음은 미국 정부 클라우드 에이전트 엔드포인트로 업데이트된 예제 host.json 입니다.

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

스냅샷 상태 검사 사용

몇 가지 일반적인 문제로 인해 디버그 스냅샷 열기가 표시되지 않습니다. 예를 들어 오래된 스냅샷 수집기가 사용됩니다. 일일 업로드 제한에 도달했습니다. 또는 스냅샷 업로드하는 데 시간이 오래 걸리는 것일 수 있습니다. 스냅샷 상태 검사를 사용하여 일반적인 문제를 해결합니다.

엔드 투 엔드 추적 보기의 예외 창에 스냅샷 상태 검사로 연결되는 링크가 있습니다.

스냅샷 상태 검사 입력하는 방법을 보여 주는 스크린샷

대화형 채팅과 유사한 인터페이스는 일반적인 문제를 찾고 문제를 해결하도록 안내합니다.

문제 및 문제를 해결하는 방법을 나열하는 대화형 상태 검사 창을 보여 주는 스크린샷

문제가 해결되지 않으면 다음 수동 문제 해결 단계를 참조하세요.

계측 키 확인

게시된 애플리케이션에서 올바른 계측 키를 사용하고 있는지 확인합니다. 일반적으로 계측 키는 ApplicationInsights.config 파일에서 읽습니다. 값이 포털에 표시되는 Application Insights 리소스의 계측 키와 동일한지 확인합니다.

2025년 3월 31일에 계측 키 수집에 대한 지원이 종료됩니다. 계측 키 수집은 계속 작동하지만 더 이상 기능에 대한 업데이트 또는 지원을 제공하지 않습니다. 새 기능을 활용하려면 연결 문자열로 전환합니다.

TLS/SSL 클라이언트 설정 확인(ASP.NET)

가상 머신의 Azure App Service 또는 IIS에서 호스트되는 ASP.NET 애플리케이션이 있는 경우 누락된 SSL 보안 프로토콜로 인해 애플리케이션이 스냅샷 디버거 서비스에 연결하지 못할 수 있습니다.

스냅샷 디버거 엔드포인트에는 TLS 버전 1.2가 필요합니다. SSL 보안 프로토콜 집합은 의 섹션web.config에 있는 값에 system.web 의해 httpRuntime targetFramework 활성화되는 단점 중 하나입니다. 가 httpRuntime targetFramework 4.5.2 이하인 경우 TLS 1.2는 기본적으로 포함되지 않습니다.

참고

값은 httpRuntime targetFramework 애플리케이션을 빌드할 때 사용되는 대상 프레임워크와 독립적입니다.

설정을 검사 web.config 파일을 열고 system.web 섹션을 찾습니다. 에 대한 httpRuntimetargetFramework 4.6 이상으로 설정되어 있는지 확인합니다.

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

참고

값을 수정하면 httpRuntime targetFramework 애플리케이션에 적용되는 런타임 단점이 변경되고 다른 미묘한 동작이 변경될 수 있습니다. 이 변경 후 애플리케이션을 철저히 테스트해야 합니다. 호환성 변경의 전체 목록은 변경 내용 다시 대상 지정을 참조하세요.

참고

targetFramework 4.7 이상 버전인 경우 Windows는 사용 가능한 프로토콜을 결정합니다. Azure App Service TLS 1.2를 사용할 수 있습니다. 그러나 사용자 고유의 가상 머신을 사용하는 경우 OS에서 TLS 1.2를 사용하도록 설정해야 할 수 있습니다.

.NET Core의 미리 보기 버전

.NET Core의 미리 보기 버전을 사용하거나 애플리케이션이 종속 어셈블리를 통해 직접 또는 간접적으로 Application Insights SDK를 참조하는 경우 다른 환경에 스냅샷 디버거 사용 지침을 따릅니다.

Diagnostic Services 사이트 확장의 상태 페이지를 확인합니다.

포털의 Application Insights 창을 통해 스냅샷 디버거를 사용하도록 설정한 경우 Diagnostic Services 사이트 확장에서 사용하도록 설정되었습니다.

참고

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

다음 URL로 이동하여 이 확장의 상태 페이지를 검사 수 있습니다.https://{site-name}.scm.azurewebsites.net/DiagnosticServices

참고

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

이 상태 페이지에는 프로파일러 및 스냅샷 수집기 에이전트의 설치 상태가 표시됩니다. 예기치 않은 오류가 발생하면 이 오류가 표시되고 해결 방법을 보여 드립니다.

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

  1. Azure Portal App Service 애플리케이션을 엽니다.
  2. 고급 도구를 선택하거나 Kudu를 검색합니다.
  3. 이동을 선택합니다.
  4. Kudu 관리 사이트에 있으면 URL에서 를 추가하고 /DiagnosticServices Enter 키를 누릅니 . 다음과 https://<kudu-url>/DiagnosticServices같이 끝납니다.

최신 버전의 NuGet 패키지로 업그레이드

스냅샷 디버거를 사용하도록 설정한 방법에 따라 다음 옵션을 참조하세요.

  • 포털의 Application Insights 창을 통해 스냅샷 디버거를 사용하도록 설정한 경우 애플리케이션이 이미 최신 NuGet 패키지를 실행하고 있어야 합니다.

  • Microsoft.ApplicationInsights.SnapshotCollector NuGet 패키지를 포함하여 스냅샷 디버거를 사용하도록 설정한 경우 Visual Studio의 NuGet 패키지 관리자를 사용하여 최신 버전의 Microsoft.ApplicationInsights.SnapshotCollector를 사용하고 있는지 확인합니다.

최신 업데이트 및 버그 수정은 릴리스 정보를 참조하세요.

업로더 로그 확인

스냅샷 만든 후 디스크에 미니덤프 파일(.dmp)이 만들어집니다. 별도의 업로더 프로세스는 해당 미니덤프 파일을 만들고 연결된 모든 PDB와 함께 Application Insights 스냅샷 디버거 스토리지에 업로드합니다. 미니덤프가 성공적으로 업로드되면 디스크에서 삭제됩니다. 업로더 프로세스의 로그 파일은 디스크에 유지됩니다. App Service 환경에서 이러한 로그를 D:\Home\LogFiles찾을 수 있습니다. App Service Kudu 관리 사이트를 사용하여 이러한 로그 파일을 찾습니다.

  1. Azure Portal App Service 애플리케이션을 엽니다.
  2. 고급 도구를 선택하거나 Kudu를 검색합니다.
  3. 이동을 선택합니다.
  4. 디버그 콘솔 드롭다운 목록에서 CMD를 선택합니다.
  5. LogFiles를 선택합니다.

또는 SnapshotUploader_.log 로 시작하는 Uploader_ 이름과 확장명을 가진 파일이 하나 이상 표시되어야 합니다. 적절한 아이콘을 선택하여 로그 파일을 다운로드하거나 브라우저에서 엽니다. 파일 이름에는 App Service instance 식별하는 고유한 접미사가 포함되어 있습니다. App Service instance 둘 이상의 컴퓨터에서 호스트되는 경우 각 컴퓨터에 대해 별도의 로그 파일이 있습니다. 업로더가 새 미니덤프 파일을 검색하면 로그 파일에 기록됩니다. 성공적인 스냅샷 업로드의 예는 다음과 같습니다.

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

참고

위의 예는 NuGet 패키지 버전 1.2.0에서 온 Microsoft.ApplicationInsights.SnapshotCollector 것입니다. 이전 버전에서는 업로더 프로세스가 호출 MinidumpUploader.exe 되고 로그가 덜 상세합니다.

이전 예제에서 계측 키는 입니다 c12a605e73c44346a984e00000000000. 이 값은 애플리케이션의 계측 키와 일치해야 합니다. 미니덤프는 ID139e411a23934dc0b9ea08a626db16c5가 인 스냅샷 연결됩니다. 나중에 이 ID를 사용하여 Application Insights Analytics에서 연결된 예외 레코드를 찾을 수 있습니다.

업로더는 15분마다 한 번씩 새 PDB를 검색합니다. 다음은 예입니다.

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

App Service 호스트되지 않는 애플리케이션의 경우 업로더 로그는 미니덤프 %TEMP%\Dumps\<ikey> 와 동일한 폴더에 있습니다( 여기서 <ikey> 은 계측 키임).

Cloud Services 문제 해결

Cloud Services 기본 임시 폴더가 너무 작아 미니덤프 파일을 보관할 수 없어 스냅샷이 손실될 수 있습니다.

필요한 공간은 애플리케이션의 총 작업 집합과 동시 스냅샷 수에 따라 달라집니다.

32비트 ASP.NET 웹 역할의 작업 집합은 일반적으로 200MB에서 500MB 사이입니다. 두 개 이상의 동시 스냅샷을 허용합니다.

예를 들어 애플리케이션에서 총 작업 집합 1GB를 사용하는 경우 스냅샷을 저장할 디스크 공간이 2GB 이상 있는지 확인해야 합니다.

다음 단계에 따라 스냅샷에 대한 전용 로컬 리소스를 사용하여 클라우드 서비스 역할을 구성합니다.

  1. 클라우드 서비스 정의(.csdef) 파일을 편집하여 클라우드 서비스에 새 로컬 리소스를 추가합니다. 다음 예제에서는 크기가 5GB인 라는 SnapshotStore 리소스를 정의합니다.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. 역할의 시작 코드를 수정하여 로컬 리소스를 가리키는 환경 변수를 SnapshotStore 추가합니다. 작업자 역할의 경우 역할의 OnStart 메서드에 코드를 추가해야 합니다.

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    웹 역할(ASP.NET)의 경우 코드를 웹 애플리케이션의 Application_Start 메서드에 추가해야 합니다.

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. 에서 사용하는 SnapshotCollector임시 폴더 위치를 재정의하도록 역할의 ApplicationInsights.config 파일을 업데이트합니다.

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

섀도 복사본 폴더 재정의

스냅샷 수집기가 시작되면 스냅샷 업로더 프로세스를 실행하는 데 적합한 폴더를 디스크에서 찾으려고 합니다. 선택한 폴더를 섀도 복사본 폴더라고 합니다.

스냅샷 수집기는 잘 알려진 몇 가지 위치를 확인하여 스냅샷 업로더 이진 파일을 복사할 수 있는 권한이 있는지 확인합니다. 다음 환경 변수가 사용됩니다.

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

적절한 폴더를 찾을 수 없는 경우 스냅샷 수집기는 "적절한 섀도 복사본 폴더를 찾을 수 없습니다"라는 오류를 보고합니다.

복사에 실패하면 스냅샷 수집기에서 오류를 보고합니다 ShadowCopyFailed .

업로더를 시작할 수 없는 경우 스냅샷 수집기에서 오류를 보고합니다 UploaderCannotStartFromShadowCopy . 메시지 본문에는 종종 가 포함됩니다 System.UnauthorizedAccessException. 이 오류는 일반적으로 애플리케이션이 권한이 감소된 계정에서 실행 중이기 때문에 발생합니다. 계정에는 섀도 복사본 폴더에 쓸 수 있는 권한이 있지만 코드를 실행할 수 있는 권한이 없습니다.

이러한 오류는 일반적으로 시작 중에 발생하므로 일반적으로 "업로더를 ExceptionDuringConnect 시작하지 못했습니다"라는 오류가 발생합니다.

이러한 오류를 해결하려면 구성 옵션을 통해 섀도 복사본 폴더를 ShadowCopyFolder 수동으로 지정할 수 있습니다. 예를 들어ApplicationInsights.config를 사용하는 경우

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

또는 .NET Core 애플리케이션에서 appsettings.json 사용하는 경우:

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

Application Insights 검색을 사용하여 스냅샷으로 예외 찾기

스냅샷 만들면 throw 예외에 스냅샷 ID로 태그가 지정됩니다. 예외가 Application Insights에 보고되면 해당 스냅샷 ID가 사용자 지정 속성으로 포함됩니다. Application Insights에서 Search 사용하여 사용자 지정 속성을 사용하여 모든 레코드를 ai.snapshot.id 찾을 수 있습니다.

  1. Azure Portal Application Insights 리소스로 이동합니다.
  2. 검색을 선택합니다.
  3. Search 텍스트 상자를 입력 ai.snapshot.id 하고 Enter 키를 누릅니.

포털에서 스냅샷 ID가 있는 원격 분석 검색을 보여 주는 스크린샷

이 검색에서 결과를 반환하지 않으면 선택한 시간 범위의 Application Insights에 스냅샷이 보고되지 않습니다.

업로더 로그에서 특정 스냅샷 ID를 검색하려면 Search 상자에 해당 ID를 입력합니다. 업로드된 스냅샷 대한 레코드를 찾을 수 없는 경우 다음 단계를 수행합니다.

  1. 계측 키를 확인하여 올바른 Application Insights 리소스를 보고 있는지 두 번 검사.

  2. 업로더 로그의 타임스탬프를 사용하여 해당 시간 범위를 포함하도록 검색의 시간 범위 필터를 조정합니다.

해당 스냅샷 ID에 대한 예외가 여전히 표시되지 않으면 예외 레코드가 Application Insights에 보고되지 않았습니다. 이 상황은 애플리케이션이 스냅샷 수행한 후 예외 레코드를 보고하기 전에 중단된 경우에 발생할 수 있습니다. 이 경우 아래 Diagnose and solve problems 의 App Service 로그를 검사 예기치 않은 다시 시작 또는 처리되지 않은 예외가 있는지 확인합니다.

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

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

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

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.