Rozwiązywanie problemów z włączaniem debugera migawek usługi Application Insights lub wyświetlaniem 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.
Może istnieć wiele różnych powodów, dla których migawki nie są generowane. Możesz rozpocząć od uruchomienia sprawdzania kondycji migawki, aby zidentyfikować niektóre z możliwych typowych przyczyn.
Scenariusze nieobsługiwane
Poniżej przedstawiono scenariusze, w których moduł zbierający migawki nie jest obsługiwany:
Scenariusz | Skutki uboczne | Zalecenie |
---|---|---|
W przypadku bezpośredniego użycia zestawu SDK modułu zbierającego migawki w aplikacji (csproj) 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 przy użyciu polecenia System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor Aby uzyskać więcej informacji na temat funkcji "Interop" usługi Application Insights, zobacz Monitorowanie aplikacji dla Azure App Service i ASP.NET Core. |
Jeśli używasz opcji "Interop" z wyprzedzeniem, użyj bezkodowego wstrzykiwania modułu zbierającego migawki (włączonego za pośrednictwem środowiska użytkownika Azure Portal). |
Upewnij się, że używasz odpowiedniego punktu końcowego debugera migawek
Obecnie jedynymi regionami, które wymagają modyfikacji punktu końcowego, są Azure Government i Azure China.
W przypadku 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ęć debugera migawek zgodnie z poniższą definicją:
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ć host.json
element przy użyciu poniższych obsługiwanych przesłoń:
Właściwość | Chmura dla instytucji rządowych USA | Chmura w Chinach |
---|---|---|
AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Oto przykład host.json
aktualizacji z punktem końcowym agenta us Government Cloud:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
},
"snapshotConfiguration": {
"isEnabled": true,
"agentEndpoint": "https://snapshot.monitor.azure.us"
}
}
}
}
Korzystanie z kontroli kondycji migawki
Kilka typowych problemów powoduje, że otwarta migawka debugowania 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 przekazywanie migawki zajmuje dużo czasu. Użyj sprawdzania kondycji migawki, aby rozwiązać typowe problemy.
W okienku wyjątków kompleksowego widoku śledzenia znajduje się link, który prowadzi do sprawdzania kondycji migawki.
Interaktywny interfejs podobny do czatu szuka typowych problemów i prowadzi Cię do ich rozwiązania.
Jeśli to nie rozwiąże problemu, zapoznaj się z poniższymi instrukcjami rozwiązywania problemów ręcznych.
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, który jest widoczny w portalu.
31 marca 2025 r. zakończy się obsługa pozyskiwania kluczy instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie będziemy już zapewniać aktualizacji ani obsługi tej funkcji. Przejście do parametrów 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 Azure App Service lub w usługach IIS na maszynie wirtualnej, połączenie aplikacji z usługą debugera migawek może zakończyć się niepowodzeniem z powodu braku protokołu zabezpieczeń protokołu SSL.
Punkt końcowy debugera migawek wymaga protokołu TLS w wersji 1.2. Zestaw protokołów zabezpieczeń SSL jest jednym z dziwactw włączonych przez httpRuntime targetFramework
wartość w system.web
sekcji web.config
.
httpRuntime targetFramework
Jeśli parametr ma wartość 4.5.2 lub niższą, protokół TLS 1.2 nie jest domyślnie uwzględniany.
Uwaga
Wartość jest niezależna httpRuntime targetFramework
od platformy docelowej używanej podczas tworzenia aplikacji.
Aby sprawdzić to ustawienie, otwórz plik web.config i znajdź sekcję system.web. Upewnij się, że targetFramework
dla httpRuntime
jest ustawiona wartość 4.6 lub nowsza.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Uwaga
Modyfikowanie httpRuntime targetFramework
wartości zmienia dziwactwa środowiska uruchomieniowego stosowane do aplikacji i może powodować 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 ponownego określania wartości docelowej.
Uwaga
Jeśli jest to targetFramework
wersja 4.7 lub nowsza, system Windows określa dostępne protokoły. W Azure App Service 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.
Wersja zapoznawcza platformy .NET Core
Jeśli używasz wersji zapoznawczej platformy .NET Core lub aplikacja odwołuje się do zestawu SDK usługi 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ł włączony przez rozszerzenie witryny usług diagnostycznych.
Uwaga
Instalacja bez kodu debugera migawek usługi Application Insights jest zgodna z zasadami pomocy technicznej platformy .NET Core. Aby uzyskać więcej informacji na temat obsługiwanych środowisk uruchomieniowych, zobacz Zasady pomocy technicznej platformy .NET Core.
Możesz sprawdzić stronę stanu tego rozszerzenia, przechodząc do następującego adresu URL: https://{site-name}.scm.azurewebsites.net/DiagnosticServices
Uwaga
Domena linku strony stanu będzie się różnić w zależności od chmury. Ta domena będzie taka sama jak lokacja zarządzania Kudu dla App Service.
Na tej stronie stanu jest wyświetlany stan instalacji agentów modułu zbierającego profilera i migawki. Jeśli wystąpił nieoczekiwany błąd, zostanie on wyświetlony i pokaże, jak go naprawić.
Możesz użyć witryny zarządzania Kudu dla App Service, aby uzyskać podstawowy adres URL tej strony stanu:
- Otwórz aplikację App Service w Azure Portal.
- Wybierz pozycję Narzędzia zaawansowane lub wyszukaj pozycję Kudu.
- Wybierz pozycję Idź.
- Gdy jesteś w witrynie zarządzania Kudu, w adresie URL dołącz
/DiagnosticServices
ciąg i naciśnij klawisz Enter. Zakończy się to w następujący sposób:https://<kudu-url>/DiagnosticServices
.
Uaktualnianie do najnowszej wersji pakietu NuGet
W zależności od sposobu włączenia debugera migawek zobacz następujące opcje:
Jeśli debuger migawek został włączony za pośrednictwem okienka usługi Application Insights w portalu, aplikacja powinna już uruchamiać najnowszy pakiet NuGet.
Jeśli debuger migawek został włączony przez dołączenie pakietu NuGet Microsoft.ApplicationInsights.SnapshotCollector , użyj Menedżera pakietów NuGet programu Visual Studio, aby upewnić się, że używasz najnowszej
Microsoft.ApplicationInsights.SnapshotCollector
wersji programu .
Aby uzyskać najnowsze aktualizacje i poprawki błędów, zapoznaj się z informacjami o wersji.
Sprawdzanie dzienników przekazywania
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 App Service te dzienniki można znaleźć w D:\Home\LogFiles
pliku . Użyj witryny zarządzania Kudu, aby App Service, aby znaleźć te pliki dziennika.
- Otwórz aplikację App Service w Azure Portal.
- Wybierz pozycję Narzędzia zaawansowane lub wyszukaj pozycję Kudu.
- Wybierz pozycję Idź.
- Z listy rozwijanej Konsoli debugowania wybierz pozycję CMD.
- Wybierz pozycję LogFiles.
Powinien zostać wyświetlony co najmniej jeden plik o nazwie rozpoczynającej Uploader_
się od lub SnapshotUploader_
i .log
rozszerzeniu. Wybierz odpowiednią ikonę, aby pobrać pliki dziennika lub otworzyć je w przeglądarce.
Nazwa pliku zawiera unikatowy sufiks, który identyfikuje wystąpienie App Service. Jeśli wystąpienie App Service jest hostowane na więcej niż jednej maszynie, istnieją oddzielne pliki dziennika dla każdej maszyny. Gdy uploader wykryje nowy plik minidump, zostanie on zapisany 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
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 aplikacji.
Minidump jest skojarzony z migawką o identyfikatorze 139e411a23934dc0b9ea08a626db16c5
. Tego identyfikatora można użyć później, aby zlokalizować skojarzony rekord wyjątku w usłudze Application Insights Analytics.
Moduł przekazywania skanuje w poszukiwaniu nowych baz danych PDB co około 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 App Service, dzienniki przekazywania znajdują się w tym samym folderze co minidumps: %TEMP%\Dumps\<ikey>
(gdzie <ikey>
jest klucz instrumentacji).
Rozwiązywanie problemów z Cloud Services
W Cloud Services domyślny folder tymczasowy może być zbyt mały, aby pomieścić pliki minidump, co prowadzi do utraty migawek.
Wymagane miejsce zależy od całkowitego zestawu roboczego aplikacji i liczby równoczesnych migawek.
Zestaw roboczy 32-bitowej roli ASP.NET sieci Web zazwyczaj wynosi od 200 MB do 500 MB. Zezwalaj na co najmniej dwie równoczesne 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 z dedykowanym zasobem lokalnym na potrzeby migawek.
Dodaj nowy zasób lokalny do usługi w chmurze, edytując plik definicji usługi w chmurze (csdef). Poniższy przykład definiuje zasób o nazwie
SnapshotStore
o rozmiarze 5 GB.<LocalResources> <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" /> </LocalResources>
Zmodyfikuj kod uruchamiania roli, aby dodać zmienną środowiskową wskazującą zasób
SnapshotStore
lokalny. W przypadku ról procesu roboczego kod powinien zostać dodany do metody roliOnStart
: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 internetowej
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 } } }
Zaktualizuj plik ApplicationInsights.config roli, aby zastąpić tymczasową lokalizację folderu używaną przez
SnapshotCollector
program .<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ępowanie folderu kopiowania w tle
Po uruchomieniu modułu zbierającego migawki próbuje znaleźć folder na dysku, który jest odpowiedni do uruchamiania procesu przekazywania migawek. Wybrany folder jest znany jako folder kopii w tle.
Moduł zbierający migawki sprawdza kilka dobrze znanych lokalizacji, upewniając się, że ma uprawnienia do kopiowania plików binarnych modułu przekazywania migawek. Używane są następujące zmienne środowiskowe:
Fabric_Folder_App_Temp
LOCALAPPDATA
APPDATA
TEMP
Jeśli nie można znaleźć odpowiedniego folderu, moduł zbierający migawki zgłasza błąd z komunikatem "Nie można znaleźć odpowiedniego folderu kopii w tle".
Jeśli kopiowanie zakończy się niepowodzeniem, moduł zbierający migawki zgłosi ShadowCopyFailed
błąd.
Jeśli nie można uruchomić modułu przekazywania, moduł zbierający migawki zgłasza UploaderCannotStartFromShadowCopy
błąd. Treść wiadomości często zawiera System.UnauthorizedAccessException
. 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 komunikatem ExceptionDuringConnect
"Nie można uruchomić modułu przekazującego".
Aby obejść te błędy, możesz ręcznie określić folder kopiowania w ShadowCopyFolder
tle za pomocą opcji konfiguracji. Na przykład przy użyciu 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 w celu znalezienia wyjątków z migawkami
Po utworzeniu migawki zgłaszany wyjątek jest oznaczony identyfikatorem migawki. Ten identyfikator migawki jest uwzględniany jako właściwość niestandardowa, gdy wyjątek jest zgłaszany do usługi Application Insights. Za pomocą Search w usłudze Application Insights można znaleźć wszystkie rekordy z właściwością niestandardowąai.snapshot.id
.
- Przejdź do zasobu usługi Application Insights w Azure Portal.
- Wybierz pozycję Search.
- Wpisz
ai.snapshot.id
w polu tekstowym Search i naciśnij klawisz Enter.
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 przekazywania, wpisz ten identyfikator w polu Search. Jeśli nie możesz znaleźć rekordów dla migawki, o których wiesz, że została przekazana, wykonaj następujące kroki:
Sprawdź dokładnie, czy patrzysz na odpowiedni zasób usługi Application Insights, sprawdzając klucz instrumentacji.
Dostosuj filtr Zakres czasu wyszukiwania, aby pokryć ten zakres czasu, używając sygnatury czasowej 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 utworzeniu migawki, ale przed zgłoszeniem rekordu wyjątku. W tym przypadku sprawdź dzienniki App Service w obszarzeDiagnose and solve problems
, aby sprawdzić, czy wystąpiły nieoczekiwane ponowne uruchomienie 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ą debugera migawek.
Adresy IP używane przez debuger migawek usługi Application Insights są uwzględniane w tagu usługi Azure Monitor. Aby uzyskać więcej informacji, zobacz dokumentację 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 platformy Azure.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla