Udostępnij za pośrednictwem


Rozwiązywanie problemów z włączaniem debugera migawek usługi Application Insights lub wyświetlania migawek

Jeśli włączono debuger migawek usługi Application Insights dla aplikacji, ale nie widzisz migawek dla wyjątków, możesz użyć tych instrukcji, aby rozwiązać problemy.

Istnieje wiele różnych powodów, dla których migawki nie są generowane. Możesz rozpocząć od uruchomienia kontroli kondycji migawki, aby zidentyfikować niektóre z możliwych typowych przyczyn.

Nieobsługiwane scenariusze

Poniżej przedstawiono scenariusze, w których moduł zbierający migawki nie jest obsługiwany:

Scenariusz Efekty uboczne Zalecenie
Jeśli używasz zestawu SDK modułu zbierającego migawki bezpośrednio w aplikacji (csproj) i włączono opcję "Interop". Lokalny zestaw SDK usługi Application Insights (w tym dane telemetryczne modułu zbierającego migawki) zostanie utracony; w związku z tym żadne migawki nie będą dostępne.
Aplikacja może ulec awarii podczas uruchamiania za pomocą polecenia System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Aby uzyskać więcej informacji na temat funkcji "Interop" usługi Application Insights, zobacz Monitorowanie aplikacji dla usługi aplikacja systemu Azure Service i ASP.NET Core.
Jeśli używasz opcji z wyprzedzeniem "Interop", użyj bez kodu iniekcji modułu zbierającego migawki (włączonego za pośrednictwem środowiska użytkownika witryny Azure Portal).

Upewnij się, że używasz odpowiedniego punktu końcowego debugera migawek

Obecnie jedynymi regionami, które wymagają modyfikacji punktów końcowych, są Azure Government i Azure (Chiny).

W przypadku usługi App Service i aplikacji korzystających z zestawu SDK usługi Application Insights należy zaktualizować parametry połączenia przy użyciu obsługiwanych przesłonięć dla debugera migawek zgodnie z definicją poniżej:

Właściwość parametrów połączenia Chmura dla instytucji rządowych USA Chmura w Chinach
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Aby uzyskać więcej informacji na temat innych przesłonięć połączeń, zobacz dokumentację usługi Application Insights.

W przypadku aplikacji funkcji należy zaktualizować metodę host.json przy użyciu obsługiwanych przesłonięć poniżej:

Właściwości Chmura dla instytucji rządowych USA Chmura w Chinach
Punkt końcowy agenta https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Oto przykład zaktualizowanego host.json punktu końcowego agenta chmury dla instytucji rządowych USA:

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

Używanie kontroli kondycji migawki

Kilka typowych problemów powoduje, że migawka otwórz debugowanie nie jest wyświetlana. Na przykład jest używany nieaktualny moduł zbierający migawki; osiągnięto dzienny limit przekazywania; lub być może migawka trwa tylko długo, aby przekazać. Użyj kontroli kondycji migawki, aby rozwiązać typowe problemy.

W okienku wyjątków w widoku śledzenia kompleksowego znajduje się link umożliwiający przejście do kontroli kondycji migawki.

Zrzut ekranu przedstawiający sposób wprowadzania kontroli kondycji migawki.

Interaktywny interfejs przypominający czat szuka typowych problemów i przeprowadzi Cię do ich rozwiązania.

Zrzut ekranu przedstawiający interaktywne okno sprawdzania kondycji z listą problemów i sugestii dotyczących ich rozwiązywania.

Jeśli to nie rozwiąże problemu, zapoznaj się z poniższymi ręcznymi krokami rozwiązywania problemów.

Weryfikowanie klucza instrumentacji

Upewnij się, że używasz poprawnego klucza instrumentacji w opublikowanej aplikacji. Zazwyczaj klucz instrumentacji jest odczytywany z pliku ApplicationInsights.config . Sprawdź, czy wartość jest taka sama jak klucz instrumentacji dla zasobu usługi Application Insights widocznego w portalu.

31 marca 2025 r. zostanie zakończone świadczenie pomocy technicznej dla pozyskiwania klucza instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Przejście do parametry połączenia w celu skorzystania z nowych możliwości.

Sprawdzanie ustawień klienta PROTOKOŁU TLS/SSL (ASP.NET)

Jeśli masz aplikację ASP.NET hostowaną w usłudze aplikacja systemu Azure lub w usługach IIS na maszynie wirtualnej, aplikacja może nie nawiązać połączenia z usługą Snapshot Debugger z powodu braku protokołu zabezpieczeń SSL.

Punkt końcowy debugera migawek wymaga protokołu TLS w wersji 1.2. Zestaw protokołów zabezpieczeń SSL jest jednym z dziwactwa włączanych przez httpRuntime targetFramework wartość w system.web sekcji .web.config Jeśli parametr httpRuntime targetFramework ma wartość 4.5.2 lub niższą, protokół TLS 1.2 nie jest domyślnie dołączany.

Uwaga 16.

Wartość jest niezależna httpRuntime targetFramework od platformy docelowej używanej podczas kompilowania aplikacji.

Aby sprawdzić ustawienie, otwórz plik web.config i znajdź sekcję system.web. Upewnij się, że dla parametru targetFramework jest httpRuntime ustawiona wartość 4.6 lub nowsza.

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

Uwaga 16.

Modyfikowanie httpRuntime targetFramework wartości zmienia środowisko uruchomieniowe ekscentryczne zastosowane do aplikacji i może spowodować inne, subtelne zmiany zachowania. Pamiętaj, aby dokładnie przetestować aplikację po wprowadzeniu tej zmiany. Aby uzyskać pełną listę zmian zgodności, zobacz Zmiany dotyczące ponownego określania wartości docelowej.

Uwaga 16.

Jeśli jest to targetFramework wersja 4.7 lub nowsza, system Windows określa dostępne protokoły. W usłudze aplikacja systemu Azure dostępny jest protokół TLS 1.2. Jeśli jednak używasz własnej maszyny wirtualnej, może być konieczne włączenie protokołu TLS 1.2 w systemie operacyjnym.

Wersje zapoznawcza platformy .NET Core

Jeśli używasz wersji zapoznawczej platformy .NET Core lub aplikacja odwołuje się do zestawu Application Insights, bezpośrednio lub pośrednio za pośrednictwem zestawu zależnego, postępuj zgodnie z instrukcjami dotyczącymi włączania debugera migawek dla innych środowisk.

Sprawdź stronę stanu rozszerzenia lokacji usług diagnostycznych

Jeśli debuger migawek został włączony za pośrednictwem okienka usługi Application Insights w portalu, został on włączony przez rozszerzenie lokacji usług diagnostycznych.

Uwaga 16.

Bez kodu instalacja debugera migawek usługi Application Insights jest zgodna z zasadami obsługi platformy .NET Core. Aby uzyskać więcej informacji na temat obsługiwanych środowisk uruchomieniowych, zobacz Zasady pomocy technicznej platformy .NET Core.

Stronę stanu tego rozszerzenia możesz sprawdzić, przechodząc do następującego adresu URL: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Uwaga 16.

Domena linku Strona stanu będzie się różnić w zależności od chmury. Ta domena będzie taka sama jak witryna zarządzania Kudu dla usługi App Service.

Ta strona stanu przedstawia stan instalacji agentów profilera i modułu zbierającego migawki. Jeśli wystąpił nieoczekiwany błąd, zostanie wyświetlony i pokaże, jak go naprawić.

Aby uzyskać podstawowy adres URL tej strony stanu, możesz użyć witryny zarządzania Kudu dla usługi App Service:

  1. Otwórz aplikację usługi App Service w witrynie Azure Portal.
  2. Wybierz pozycję Narzędzia zaawansowane lub wyszukaj pozycję Kudu.
  3. Wybierz pozycję Idź.
  4. Po przejściu do witryny zarządzania Kudu w adresie URL dołącz i /DiagnosticServices naciśnij Enter. Zostanie ona zakończona następująco: https://<kudu-url>/DiagnosticServices.

Uaktualnianie do najnowszej wersji pakietu NuGet

Na podstawie sposobu włączania debugera migawek zobacz następujące opcje:

Aby uzyskać najnowsze aktualizacje i poprawki błędów, zapoznaj się z informacjami o wersji.

Sprawdzanie dzienników programu przekazującego

Po utworzeniu migawki na dysku jest tworzony plik minidump (.dmp). Oddzielny proces przekazywania tworzy ten plik minidump i przekazuje go wraz ze skojarzonymi plikami PDB do magazynu debugera migawek usługi Application Insights. Po pomyślnym przekazaniu minidump zostanie on usunięty z dysku. Pliki dziennika procesu przekazywania są przechowywane na dysku. W środowisku usługi App Service można znaleźć te dzienniki w pliku D:\Home\LogFiles. Użyj witryny zarządzania Kudu dla usługi App Service, aby znaleźć te pliki dziennika.

  1. Otwórz aplikację usługi App Service w witrynie Azure Portal.
  2. Wybierz pozycję Narzędzia zaawansowane lub wyszukaj pozycję Kudu.
  3. Wybierz pozycję Idź.
  4. Z listy rozwijanej Konsola debugowania wybierz pozycję CMD.
  5. Wybierz pozycję LogFiles.

Powinien zostać wyświetlony co najmniej jeden plik o nazwie rozpoczynającej się od Uploader_ lub SnapshotUploader_ i .log rozszerzeniu. Wybierz odpowiednią ikonę, aby pobrać wszystkie pliki dziennika lub otworzyć je w przeglądarce. Nazwa pliku zawiera unikatowy sufiks identyfikujący wystąpienie usługi App Service. Jeśli wystąpienie usługi App Service jest hostowane na więcej niż jednej maszynie, istnieją oddzielne pliki dziennika dla każdej maszyny. Gdy moduł przekazujący wykryje nowy plik minidump, jest rejestrowany w pliku dziennika. Oto przykład pomyślnej migawki i przekazania:

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

Uwaga 16.

Powyższy przykład pochodzi z wersji 1.2.0 Microsoft.ApplicationInsights.SnapshotCollector pakietu NuGet. We wcześniejszych wersjach proces przekazywania jest wywoływany MinidumpUploader.exe , a dziennik jest mniej szczegółowy.

W poprzednim przykładzie klucz instrumentacji to c12a605e73c44346a984e00000000000. Ta wartość powinna być zgodna z kluczem instrumentacji dla aplikacji. Minidump jest skojarzony z migawką z identyfikatorem 139e411a23934dc0b9ea08a626db16c5. Tego identyfikatora można później użyć do zlokalizowania skojarzonego rekordu wyjątku w usłudze Application Insights Analytics.

Program przekazujący skanuje nowe pliki PDB około raz na 15 minut. Oto przykład:

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

W przypadku aplikacji, które nie są hostowane w usłudze App Service, dzienniki modułu przekazującego znajdują się w tym samym folderze co minidumps: %TEMP%\Dumps\<ikey> (gdzie <ikey> to klucz instrumentacji).

Rozwiązywanie problemów z usługami Cloud Services

W usługach Cloud Services domyślny folder tymczasowy może być za mały, aby przechowywać pliki minidump, co prowadzi do utraty migawek.

Wymagane miejsce zależy od całkowitego zestawu roboczego aplikacji i liczby współbieżnych migawek.

Zestaw roboczy 32-bitowej roli ASP.NET sieci Web jest zazwyczaj z zakresu od 200 MB do 500 MB. Zezwalaj na co najmniej dwie współbieżne migawki.

Jeśli na przykład aplikacja używa 1 GB całkowitego zestawu roboczego, upewnij się, że do przechowywania migawek jest co najmniej 2 GB miejsca na dysku.

Wykonaj następujące kroki, aby skonfigurować rolę usługi w chmurze przy użyciu dedykowanego zasobu lokalnego na potrzeby migawek.

  1. Dodaj nowy zasób lokalny do usługi w chmurze, edytując plik definicji usługi w chmurze (csdef). W poniższym przykładzie zdefiniowano zasób o rozmiarze SnapshotStore 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Zmodyfikuj kod uruchamiania roli, aby dodać zmienną środowiskową wskazującą SnapshotStore zasób lokalny. W przypadku ról procesu roboczego kod powinien zostać dodany do metody roli OnStart :

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

    W przypadku ról sieci Web (ASP.NET) kod powinien zostać dodany do metody aplikacji Application_Start internetowej:

    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. Zaktualizuj plik ApplicationInsights.config roli, aby zastąpić tymczasową lokalizację folderu używaną przez SnapshotCollectorprogram .

    <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>
    

Zastąpij folder kopiowania w tle

Po uruchomieniu modułu zbierającego migawki próbuje znaleźć folder na dysku, który jest odpowiedni do uruchomienia procesu przekazywania migawek. Wybrany folder jest znany jako folder kopiowania w tle.

Moduł zbierający migawki sprawdza kilka dobrze znanych lokalizacji, upewniając się, że ma uprawnienia do kopiowania plików binarnych modułu przekazującego migawki. Używane są następujące zmienne środowiskowe:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Jeśli nie można odnaleźć odpowiedniego folderu, moduł zbierający migawki zgłasza błąd informujący o błędzie "Nie można odnaleźć odpowiedniego folderu kopii w tle".

Jeśli kopiowanie zakończy się niepowodzeniem ShadowCopyFailed , moduł zbierający migawki zgłosi błąd.

Jeśli nie można uruchomić modułu przekazującego, moduł zbierający migawki zgłasza UploaderCannotStartFromShadowCopy błąd. Treść wiadomości często zawiera System.UnauthorizedAccessExceptionwartość . Ten błąd zwykle występuje, ponieważ aplikacja działa na koncie z ograniczonymi uprawnieniami. Konto ma uprawnienia do zapisu w folderze kopiowania w tle, ale nie ma uprawnień do wykonywania kodu.

Ponieważ te błędy zwykle występują podczas uruchamiania, zwykle następuje po nich błąd z informacją ExceptionDuringConnect : "Nie można uruchomić modułu przekazującego".

Aby obejść te błędy, możesz ręcznie określić folder kopiowania w tle za pomocą ShadowCopyFolder opcji konfiguracji. Na przykład przy użyciu pliku 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>

Jeśli używasz appsettings.json z aplikacją platformy .NET Core:

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

Wyszukiwanie w usłudze Application Insights umożliwia znajdowanie wyjątków z migawkami

Po utworzeniu migawki zgłaszany wyjątek jest oznaczony identyfikatorem migawki. Ten identyfikator migawki jest dołączany jako właściwość niestandardowa, gdy wyjątek jest zgłaszany do usługi Application Insights. Za pomocą funkcji Wyszukiwania w usłudze Application Insights można znaleźć wszystkie rekordy z właściwością niestandardową ai.snapshot.id .

  1. Przejdź do zasobu usługi Application Insights w witrynie Azure Portal.
  2. Wybierz Wyszukaj.
  3. Wpisz ai.snapshot.id w polu tekstowym Wyszukaj i naciśnij Enter.

Zrzut ekranu przedstawiający wyszukiwanie danych telemetrycznych z identyfikatorem migawki w portalu.

Jeśli to wyszukiwanie nie zwraca żadnych wyników, żadne migawki nie zostały zgłoszone do usługi Application Insights w wybranym zakresie czasu.

Aby wyszukać określony identyfikator migawki z dzienników modułu przekazującego, wpisz ten identyfikator w polu Wyszukaj. Jeśli nie możesz znaleźć rekordów dla migawki, którą znasz, została przekazana, wykonaj następujące kroki:

  1. Sprawdź dokładnie, czy szukasz odpowiedniego zasobu usługi Application Insights, sprawdzając klucz instrumentacji.

  2. Dostosuj filtr Zakres czasu wyszukiwania, aby uwzględnić ten zakres czasu przy użyciu znacznika czasu z dziennika modułu przekazującego.

Jeśli nadal nie widzisz wyjątku z tym identyfikatorem migawki, rekord wyjątku nie został zgłoszony do usługi Application Insights. Taka sytuacja może wystąpić, jeśli aplikacja uległa awarii po jej wykonaniu migawki, ale przed zgłoszeniem rekordu wyjątku. W takim przypadku sprawdź dzienniki usługi App Service w obszarze Diagnose and solve problems , aby sprawdzić, czy wystąpiły nieoczekiwane ponowne uruchomienia lub nieobsługiwane wyjątki.

Edytowanie reguł serwera proxy sieci lub zapory

Jeśli aplikacja łączy się z Internetem za pośrednictwem serwera proxy lub zapory, może być konieczne zaktualizowanie reguł w celu komunikowania się z usługą Snapshot Debugger.

Adresy IP używane przez debuger migawek usługi Application Insights znajdują się w tagu usługi Azure Monitor. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą tagów usługi.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.