Rozwiązywanie problemów z zestawem JAVAScript SDK usługi Application Insights
W tym artykule omówiono sposób rozwiązywania różnych problemów obejmujących zestaw SDK języka JavaScript usługi Application Insights. Tematami w tym artykule są błędy ładowania zestawu SDK dla aplikacji internetowych JavaScript i obsługa mapy źródłowej dla aplikacji JavaScript.
Rozwiązywanie problemów z błędem ładowania zestawu SDK dla aplikacji internetowych JavaScript
W poniższych sekcjach omówiono objawy, przyczyny i rozwiązania dla konkretnego scenariusza niepowodzenia ładowania zestawu SDK dla aplikacji internetowych JavaScript.
Symptomy
W elememencie <głównym> strony internetowej, który monitorujesz, fragment kodu JavaScript (wersja 3 lub nowsza) tworzy i zgłasza następujący wyjątek, gdy wykryje, że skrypt zestawu SDK nie pobrał lub zainicjował:
Niepowodzenie ładowania zestawu SDK: nie można załadować skryptu zestawu SDK usługi Application Insights (zobacz stos, aby uzyskać szczegółowe informacje)
Ten komunikat wskazuje, że klient użytkownika (przeglądarka) nie może pobrać zestawu SDK usługi Application Insights ani zainicjować go ze zidentyfikowanej strony hostingu. W związku z tym nie widzisz żadnych danych telemetrycznych ani zdarzeń.
Uwaga 16.
Ten wyjątek jest obsługiwany we wszystkich głównych przeglądarkach obsługujących fetch()
interfejs API lub XMLHttpRequest
. Te wersje przeglądarki wykluczają program Microsoft Internet Explorer 8 i starsze wersje. W związku z tym te przeglądarki nie będą zgłaszać tego typu wyjątku, chyba że środowisko zawiera polifill pobierania.
Szczegóły stosu zawierają podstawowe informacje o adresach URL używanych przez użytkownika.
Nazwa/nazwisko | opis |
---|---|
<Punkt końcowy usługi CDN> | Adres URL, który został użyty (i nie można go pobrać). |
<Link pomocy> | Adres URL, który zawiera linki do dokumentacji rozwiązywania problemów (ta strona). |
<Adres URL hosta> | Pełny adres URL strony, z którego korzystał użytkownik. |
<Adres URL punktu końcowego> | Adres URL, który został użyty do zgłaszania wyjątku. Ta wartość może pomóc określić, czy publiczny Internet, czy chmura prywatna uzyskują dostęp do strony hostingu. |
Poniższa lista zawiera najczęstsze przyczyny wystąpienia tego wyjątku:
Sporadyczne niepowodzenie łączności sieciowej
Awaria usługi Content Delivery Network (CDN) usługi Application Insights
Niepowodzenie inicjowania zestawu SDK po załadowaniu skryptu
Blokowanie sieci CDN języka JavaScript usługi Application Insights
Sporadyczne niepowodzenie łączności sieciowej jest najczęstszą przyczyną tego wyjątku, szczególnie w scenariuszach roamingu mobilnego.
W poniższych sekcjach omówiono sposób rozwiązywania problemów z każdą główną przyczyną tego błędu.
Uwaga 16.
Niektóre z tych kroków zakładają, że aplikacja ma bezpośrednią kontrolę nad skryptem/>tagiem fragmentu kodu <i jego konfiguracją zwróconą w ramach strony hostingu HTML. Jeśli te warunki nie mają zastosowania do twojego scenariusza, te kroki również nie mają zastosowania.
Przyczyna 1: Sporadyczne niepowodzenie łączności sieciowej
Jeśli użytkownik napotyka sporadyczne błędy łączności sieciowej, istnieje mniej możliwych rozwiązań niż w przypadku innych przyczyn. Jednak ten błąd zwykle szybko rozwiązuje się. Jeśli na przykład użytkownik odświeży stronę w celu ponownego załadowania witryny, pliki zostaną ostatecznie pobrane i zapisane w pamięci podręcznej lokalnie do momentu wydania zaktualizowanej wersji.
Rozwiązanie 1a: pobieranie zaktualizowanej wersji zestawu SDK
Aby zminimalizować sporadyczne błędy łączności sieciowej, zaimplementowaliśmy Cache-Control
nagłówki we wszystkich plikach CDN. Gdy przeglądarka użytkownika pobierze bieżącą wersję zestawu SDK, nie musi ponownie go pobrać, ponieważ ponownie używa wcześniej uzyskanej kopii. (Zobacz , jak działa buforowanie). Jeśli sprawdzanie buforowania zakończy się niepowodzeniem lub jest dostępna nowa wersja, przeglądarka użytkownika musi pobrać zaktualizowaną wersję. W związku z tym w scenariuszu niepowodzenia sprawdzania może zostać wyświetlony poziom tła "szumu". Może też wystąpić tymczasowy wzrost po wystąpieniu nowej wersji i stanie się ogólnie dostępny (wdrożony w usłudze CDN).
Rozwiązanie 1b: używanie pakietów npm do osadzania zestawu SDK razem z aplikacją w jednym pakiecie
Czy wyjątek niepowodzenia ładowania zestawu SDK jest trwały i czy występuje dla wielu użytkowników wraz z zmniejszeniem normalnej telemetrii klienta? W takim przypadku sporadyczne problemy z łącznością sieciową prawdopodobnie nie są prawdziwą przyczyną problemu i należy zapoznać się z innymi możliwymi przyczynami.
Uwaga 16.
Typowym wskazaniem, że ten błąd występuje dla wielu użytkowników, jest to, że wyjątek jest zgłaszany na szybkim i trwałym poziomie.
W takiej sytuacji hostowanie zestawu SDK na własnej sieci CDN jest mało prawdopodobne, aby zapewnić lub zmniejszyć liczbę wystąpień tego wyjątku. Ten sam problem dotyczy własnej sieci CDN i występuje również w przypadku korzystania z zestawu SDK za pośrednictwem rozwiązania pakietu npm. Awaria tego ostatniego scenariusza występuje szczególnie wtedy, gdy usługa Application Insights znajduje się w innym pakiecie niż monitorowana aplikacja, ponieważ awaria jest gwarantowana w co najmniej jednym z tych pakietów. Z perspektywy użytkownika, gdy wystąpi ten wyjątek, cała aplikacja nie może załadować ani zainicjować, a nie tylko zestawu SDK telemetrii (którego użytkownicy nie widzą). W związku z tym użytkownicy prawdopodobnie będą nadal odświeżać witrynę, dopóki nie zostanie załadowana całkowicie.
Możesz spróbować użyć pakietów npm do osadzenia zestawu SDK usługi Application Insights razem z monitorowaną aplikacją w jednym pakiecie. Mimo że w tym scenariuszu może nadal występować sporadyczne niepowodzenie, połączony pakiet daje realne szanse na rozwiązanie problemu.
Przyczyna 2. Awaria usługi CdN usługi Application Insights
Aby sprawdzić, czy wystąpiła awaria usługi CdN usługi Application Insights, spróbuj uzyskać dostęp do punktu końcowego usługi CDN bezpośrednio z przeglądarki z innej lokalizacji niż użytkownicy. Możesz na przykład spróbować uzyskać dostęp https://js.monitor.azure.com/scripts/b/ai.2.min.js z poziomu własnego komputera programistycznego. (Przyjęto założenie, że twoja organizacja nie zablokowała tej domeny).
Rozwiązanie 2. Tworzenie biletu pomocy technicznej
Jeśli sprawdzisz, czy wystąpi awaria, możesz utworzyć nowy bilet pomocy technicznej.
Przyczyna 3. Zestaw SDK nie zainicjował się po załadowaniu skryptu
Jeśli zestaw SDK nie zostanie zainicjowany, <skrypt /> jest nadal pomyślnie pobrany z sieci CDN, ale kończy się niepowodzeniem podczas inicjowania. Ten błąd występuje z powodu brakujących lub nieprawidłowych zależności albo z powodu jakiejś formy wyjątku języka JavaScript.
Rozwiązanie 3. Sprawdzanie pomyślnego pobierania zestawu SDK lub wyjątków języka JavaScript lub włączanie debugowania przeglądarki
Krok 1. Sprawdzanie pomyślnego pobrania zestawu SDK
Sprawdź, czy zestaw SDK został pomyślnie pobrany. Jeśli nie wystąpiło pobieranie skryptu, ten scenariusz nie jest przyczyną wyjątku niepowodzenia ładowania zestawu SDK. Użyj przeglądarki obsługującej narzędzia deweloperskie. Wybierz pozycję F12, aby wyświetlić narzędzia deweloperskie, a następnie wybierz kartę Sieć . Sprawdź, czy został pobrany skrypt zdefiniowany w konfiguracji fragmentu kodu src. Aby to zrobić, sprawdź kod 200
odpowiedzi (powodzenie) lub 304
(nie został zmieniony). Aby przejrzeć ruch sieciowy, możesz również użyć narzędzia do debugowania sieci Web, takiego jak Fiddler.
Jeśli zestaw SDK nie został pomyślnie pobrany, zapoznaj się z poniższą tabelą, aby poznać różne opcje raportowania.
Scenariusz | Przyczyna | Akcja |
---|---|---|
Problem dotyczy tylko kilku użytkowników i określonej wersji przeglądarki lub podzestawu wersji przeglądarki. (Sprawdź szczegóły zgłoszonego wyjątku). | Problem jest prawdopodobny tylko wtedy, gdy konkretni użytkownicy lub środowiska wymagają, aby aplikacja dostarczała dodatkowe polyfill implementacje. |
Zgłoś problem w usłudze GitHub. |
Problem dotyczy całej aplikacji i wszystkich użytkowników. | Jest to problem związany z wydaniami. | Utwórz nowy bilet pomocy technicznej. |
Jeśli zestaw SDK został pobrany pomyślnie, zapoznaj się z poniższymi sekcjami, aby rozwiązać problem z inicjowaniem zestawu SDK.
Krok 2. Sprawdzanie wyjątków języka JavaScript
Sprawdź wyjątki języka JavaScript. Użyj przeglądarki obsługującej narzędzia deweloperskie. Wybierz F12, aby wyświetlić narzędzia deweloperskie, załadować stronę, a następnie sprawdzić, czy wystąpiły jakiekolwiek wyjątki. Czy skrypt zestawu SDK (na przykład w ai.2.min.js) powoduje wyjątki? W tym przypadku wystąpił jeden z następujących scenariuszy:
Konfiguracja przekazana do zestawu SDK zawiera nieoczekiwaną konfigurację.
W konfiguracji przekazanej do zestawu SDK brakuje wymaganej konfiguracji.
Wadliwe wydanie zostało wdrożone w usłudze CDN.
Aby sprawdzić, czy konfiguracja jest uszkodzona, zmień konfigurację przekazaną do fragmentu kodu (jeśli jeszcze tego nie zrobiono), aby zawierała tylko klucz instrumentacji jako wartość ciągu. Poniższy kod przedstawia przykładową zmianę konfiguracji fragmentu kodu.
Uwaga 16.
Wsparcie pozyskiwania klucza instrumentacji kończy się 31 marca 2025 r. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Zobacz Przejście do parametry połączenia, aby skorzystać z nowych możliwości.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "<instrumentation-key-guid>"
}});
</script>
Jeśli używasz tej minimalnej konfiguracji, jeśli nadal widzisz wyjątek javaScript w skrypcie zestawu SDK, utwórz nowy bilet pomocy technicznej. Aby rozwiązać ten problem, należy wycofać wadliwą kompilację. Jest to spowodowane tym, że nowo wdrożona wersja jest prawdopodobnie przyczyną problemu.
Jeśli wyjątek zniknie, niezgodność typu lub nieoczekiwana wartość prawdopodobnie powoduje problem. Rozpocznij rozwiązywanie problemów, przywracając opcje konfiguracji po jednym i przetestuj po każdej zmianie, aż wyjątek wystąpi ponownie. Następnie sprawdź dokumentację elementu, który powoduje problem. Jeśli dokumentacja jest niejasna lub jeśli potrzebujesz pomocy, zgłoś problem w usłudze GitHub.
Czy konfiguracja została wcześniej wdrożona i działa, ale czy teraz zgłasza ten wyjątek? W takim przypadku może wystąpić problem, który ma wpływ na nowo wdrożoną wersję. Sprawdź, czy wyjątek dotyczy tylko małego zestawu użytkowników lub przeglądarek. Zgłoś problem w usłudze GitHub lub utwórz nowy bilet pomocy technicznej.
Krok 3. Włączanie debugowania konsoli przeglądarki
Jeśli nie wystąpią wyjątki zgłoszone, należy włączyć debugowanie konsoli przez dodanie ustawienia loggingLevelConsole do konfiguracji, jak pokazano w poniższym przykładzie konfiguracji fragmentu kodu. Ta zmiana wysyła wszystkie błędy inicjowania i ostrzeżenia do konsoli przeglądarki. (Aby wyświetlić konsolę przeglądarki, wybierz F12, aby otworzyć narzędzia deweloperskie, a następnie wybierz pozycję Karta Konsola ). Wszelkie zgłoszone błędy powinny być objaśniające. Jeśli potrzebujesz dalszej pomocy, zgłoś problem w usłudze GitHub.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "<instrumentation-key-guid>",
loggingLevelConsole: 2
}});
</script>
Uwaga 16.
Podczas inicjowania zestaw SDK przeprowadza pewne podstawowe testy pod kątem znanych głównych zależności. Jeśli bieżące środowisko uruchomieniowe nie zapewnia tych testów, środowisko uruchomieniowe zgłasza błędy jako komunikaty ostrzegawcze do konsoli (ale tylko wtedy, gdy loggingLevelConsole
wartość ustawienia jest większa niż zero).
Jeśli zestaw SDK nadal nie jest inicjowany, spróbuj włączyć ustawienie konfiguracji enableDebug. Po wprowadzeniu tej zmiany wszystkie błędy wewnętrzne są zgłaszane jako wyjątki. Powoduje to utratę danych telemetrycznych. Ponieważ to ustawienie dotyczy tylko deweloperów, prawdopodobnie powoduje zgłaszanie większej liczby wyjątków z powodu wewnętrznych testów. Przejrzyj każdy wyjątek, aby ustalić, który problem powoduje niepowodzenie zestawu SDK. Użyj niezmienianej wersji skryptu (zmieniając rozszerzenie nazwy pliku z .min.js na tylko .js). W przeciwnym razie wyjątki są nieczytelne. Poniższy kod przedstawia przykładowe zmiany konfiguracji fragmentu kodu.
Ostrzeżenie
To ustawienie tylko dla deweloperów nie powinno być włączone w pełnym środowisku produkcyjnym, ponieważ powoduje to utratę danych telemetrycznych.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.js",
cfg:{
instrumentationKey: "<instrumentation-key-guid>",
enableDebug: true
}});
</script>
Jeśli ta akcja nadal nie udostępnia żadnych szczegółowych informacji, należy zgłosić problem w usłudze GitHub , podając szczegóły i przykładową witrynę, jeśli jej używasz. Uwzględnij wersję przeglądarki, system operacyjny i szczegóły struktury JavaScript, aby ułatwić zidentyfikowanie problemu.
Przyczyna 4. Zablokowanie sieci CDN języka JavaScript usługi Application Insights
Blokada usługi CDN jest możliwa, jeśli punkt końcowy usługi CDN zestawu SDK JavaScript usługi Application Insights jest zgłaszany lub identyfikowany jako niebezpieczny. W takiej sytuacji punkt końcowy jest publicznie zablokowany, a użytkownicy tych list zaczynają blokować cały dostęp.
Aby rozwiązać ten problem, właściciel punktu końcowego usługi CDN powinien pracować z jednostką blokującą, która oznaczyła punkt końcowy jako niebezpieczny. Następnie jednostka blokująca może usunąć punkt końcowy z odpowiedniej listy.
Sprawdź następujące internetowe witryny sieci Web zabezpieczeń, aby dowiedzieć się, czy identyfikują punkt końcowy usługi CDN jako niebezpieczny:
Rozwiązanie tego problemu może zająć dużo czasu. Użytkownicy lub działy IT w firmie mogą wymusić aktualizację lub jawnie zezwolić na punkty końcowe usługi CDN. Łączny czas wymagany do rozwiązania tego problemu zależy od częstotliwości wymaganej przez aplikację, zaporę lub środowisko w celu zaktualizowania lokalnych kopii list.
Jeśli punkt końcowy usługi CDN zostanie zidentyfikowany jako niebezpieczny, utwórz bilet pomocy technicznej, aby rozwiązać ten problem tak szybko, jak to możliwe.
W poniższych sekcjach opisano bardziej szczegółowo, jak może wystąpić blokada i jak naprawić blokadę.
Przyczyna 4a: Blokada użytkownika (przeglądarka, zainstalowana blokada lub zapora osobista)
Sprawdź, czy użytkownicy wykonali dowolną z następujących akcji konfiguracyjnych:
Zainstalowano wtyczkę przeglądarki (zazwyczaj w postaci reklamy, złośliwego oprogramowania lub blokady wyskakujących okienek)
Zablokowane lub niedozwolone punkty końcowe usługi CdN usługi Application Insights w przeglądarce lub serwerze proxy
Skonfigurowano regułę zapory, która powoduje zablokowanie domeny CDN dla zestawu SDK (lub niepowodzenie rozpoznawania wpisu DNS)
Rozwiązanie 4a: Dodawanie wyjątków listy bloków dla punktów końcowych usługi CDN
Jeśli użytkownicy wykonali dowolną z wymienionych akcji konfiguracji, skontaktuj się z nimi (lub podaj dokumentację), aby zezwolić na punkty końcowe usługi CDN.
Użytkownicy mogą mieć zainstalowane wtyczki korzystające z publicznej listy zablokowanych. Jeśli nie, prawdopodobnie używają innego ręcznie skonfigurowanego rozwiązania lub wtyczki korzystają z listy bloków domeny prywatnej.
Poinformuj użytkowników, aby zezwolili na pobieranie skryptów z punktów końcowych usługi CdN usługi Application Insights, uwzględniając punkty końcowe na liście wyjątków wtyczki przeglądarki lub reguły zapory. Te listy różnią się w zależności od środowiska użytkownika.
Oto przykład tej sytuacji, w ramach którego pokazano, jak skonfigurować przeglądarkę Google Chrome tak, aby zezwalała na dostęp do witryn internetowych lub blokowała dostęp do tych witryn.
Przyczyna 4b: blokada zapory firmowej
Jeśli użytkownicy znajdują się w sieci firmowej, zapora firmowa prawdopodobnie jest źródłem blokady usługi CDN. Dział IT firmy prawdopodobnie zaimplementował jakąś formę systemu filtrowania internetu.
Rozwiązanie 4b1: Dodawanie wyjątków dla punktów końcowych usługi CDN dla korporacji
Ważne
Czy użytkownicy korzystają z chmury prywatnej i nie mają dostępu do publicznego Internetu? W takim przypadku musisz użyć pakietów npm usługi Application Insights do osadzenia zestawu SDK lub hostować zestaw SDK usługi Application Insights we własnej sieci CDN.
Skontaktuj się z działem IT twojej firmy, aby zezwolić na niezbędne reguły dla użytkowników. To rozwiązanie jest podobne do dodawania wyjątków dla użytkowników. Aby dział IT skonfigurował punkty końcowe usługi CDN usługi Application Insights do pobrania, włączając (lub usuwając) je w dowolnej domenie listy zablokowanych lub dozwolonych usług.
Rozwiązanie 4b2: hostowanie zestawu SDK we własnej usłudze CDN
Zamiast pobierać zestaw SDK usługi Application Insights z publicznej sieci CDN, możesz hostować zestaw SDK usługi Application Insights we własnym punkcie końcowym usługi CDN. Zalecamy użycie określonej wersji (ai.2.#.#.min.js) zestawu SDK, aby ułatwić określenie używanej wersji. Ponadto należy regularnie aktualizować zestaw SDK do bieżącej wersji (ai.2.min.js), aby można było używać wszelkich poprawek usterek i nowych funkcji, które staną się dostępne.
Rozwiązanie 4b3: osadzanie zestawu SDK usługi Application Insights przy użyciu pakietów npm
Zamiast używać fragmentu kodu i dodawania publicznych punktów końcowych usługi CDN, możesz użyć pakietów npm do uwzględnienia zestawu SDK w ramach własnych plików JavaScript. Zestaw SDK staje się tylko kolejnym pakietem we własnych skryptach. Aby uzyskać więcej informacji, zobacz sekcję konfiguracji opartej na narzędziu npm na stronie gitHub zestawu SDK języka JavaScript usługi Application Insights.
Uwaga 16.
Zalecamy, aby w przypadku korzystania z pakietów npm używać również jakiejś formy pakietu JavaScript, aby ułatwić dzielenie i minimalizowanie kodu.
Podobnie jak w przypadku fragmentu kodu, te same problemy blokujące, które pojawiają się tutaj, mogą mieć wpływ na własne skrypty (z pakietami npm zestawu SDK lub bez ich używania). W zależności od aplikacji, użytkowników i struktury warto rozważyć zaimplementowanie czegoś podobnego do logiki we fragmencie kodu, aby wykryć i zgłosić te problemy.
Rozwiązywanie problemów z obsługą mapy źródłowej dla aplikacji JavaScript
W poniższej tabeli opisano niektóre problemy, które obejmują obsługę mapy źródłowej dla aplikacji JavaScript i oferuje strategie ułatwiające rozwiązywanie tych problemów.
Problem | opis |
---|---|
Wymagane ustawienia kontroli dostępu opartej na rolach (RBAC) platformy Azure w kontenerze obiektów blob | Każdy użytkownik w portalu, który korzysta z tej funkcji, musi mieć przypisaną co najmniej rolę Czytelnik danych obiektu blob usługi Storage dla kontenera obiektów blob. Tę rolę należy przypisać do każdej osoby, która chce korzystać z map źródłowych za pomocą tej funkcji. W zależności od sposobu utworzenia kontenera ta rola może nie zostać automatycznie przypisana Tobie lub Twojemu zespołowi. |
Nie można odnaleźć mapy źródłowej | Aby rozwiązać ten problem, wykonaj następujące czynności:
|
Naprawiono ostrzeżenie "Klikanie wierszy zdarzeń bez wartości parentId"
W przypadku korzystania z usługi Application Insights i wtyczki Automatycznego zbierania analiz kliknięć w aplikacji w skoroszycie usługi Application Insights może pojawić się następujące ostrzeżenie dotyczące telemetrii: "Kliknij wiersze zdarzeń bez wartości parentId".
Przyczyna
Ten problem może wystąpić, jeśli identyfikator nadrzędny nie jest określony w nadrzędnym elemecie HTML. Ten warunek powoduje wyzwolenie zdarzenia we wszystkich elementach nadrzędnych.
Rozwiązanie
Aby rozwiązać ten problem, dodaj data-parentid
atrybut or data-<customPrefix>-parentid
do nadrzędnego elementu HTML. Oto przykład kodu HTML:
<div data-heart-id="demo Header" data-heart-parentid="demo.Header" data-heart-parent-group="demo.Header.Group">
Następne kroki
- Uzyskaj dodatkową pomoc, zgłaszając problem w usłudze GitHub
- Monitorowanie użycia strony internetowej
Zastrzeżenie dotyczące innych firm
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.
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.