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 związanych z zestawem JavaScript SDK usługi Application Insights. Tematy w tym artykule obejmują niepowodzenie ładowania zestawu SDK dla aplikacji internetowych JavaScript i obsługę map źródłowych 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 określonego scenariusza awarii obciążenia zestawu SDK dla aplikacji internetowych JavaScript.

Symptomy

<W elemencie head> monitorowanej strony internetowej fragment kodu JavaScript (wersja 3 lub nowsza) tworzy i zgłasza następujący wyjątek, gdy wykryje, że skrypt zestawu SDK nie został pobrany lub zainicjowany:

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ć z zidentyfikowanej strony hostingu. W związku z tym nie widać żadnych danych telemetrycznych ani zdarzeń.

Azure Portal zrzut ekranu wyjątku o nazwie

Uwaga

Ten wyjątek jest obsługiwany we wszystkich głównych przeglądarkach, które obsługują fetch() interfejs API lub XMLHttpRequest. Te wersje przeglądarki nie obejmują programu Microsoft Internet Explorer 8 i starszych wersji. W związku z tym te przeglądarki nie będą zgłaszać tego typu wyjątków, chyba że środowisko zawiera wypełnienie pobierania.

Azure Portal zrzut ekranu przedstawiający wyjątek

Szczegóły stosu zawierają podstawowe informacje o adresach URL używanych przez użytkownika.

Name (Nazwa) Opis
<Punkt końcowy usługi CDN> Adres URL użyty (i zakończony niepowodzeniem) do pobrania zestawu SDK.
<Link pomocy> Adres URL zawierający linki do dokumentacji rozwiązywania problemów (ta strona).
<Adres URL hosta> Pełny adres URL strony, która była używana przez użytkownika.
<Adres URL punktu końcowego> Adres URL, który został użyty do zgłoszenia wyjątku. Ta wartość może pomóc w określeniu, czy publiczny Internet, czy chmura prywatna uzyskiwały dostęp do strony hostingu.

Poniższa lista zawiera najczęstsze przyczyny wystąpienia tego wyjątku:

  • Sporadyczne błędy łączności sieciowej

  • Awaria usługi Application Insights Content Delivery Network (CDN)

  • Niepowodzenie inicjowania zestawu SDK po załadowaniu skryptu

  • Zablokowanie usługi JavaScript CDN usługi Application Insights

Sporadyczna awaria łączności sieciowej jest najczęstszą przyczyną tego wyjątku, szczególnie w scenariuszach mobilnych roamingu.

W poniższych sekcjach omówiono sposób rozwiązywania problemów z każdą potencjalną główną przyczyną tego błędu.

Uwaga

W niektórych z tych kroków założono, że aplikacja ma bezpośrednią kontrolę nad skryptem/>tagiem fragmentu < kodu i jego konfiguracją, która jest zwracana jako część strony HTML hostingu. Jeśli te warunki nie mają zastosowania do twojego scenariusza, te kroki również nie mają zastosowania.

Przyczyna 1: Sporadyczne błędy łączności sieciowej

Jeśli użytkownik doświadcza sporadycznych awarii łączności sieciowej, istnieje mniej możliwych rozwiązań niż w przypadku innych przyczyn. Jednak ten błąd zwykle rozwiązuje się szybko. Jeśli na przykład użytkownik odświeży stronę w celu ponownego załadowania witryny, pliki zostaną ostatecznie pobrane i buforowane lokalnie do momentu wydania zaktualizowanej wersji.

Rozwiązanie 1a: Pobieranie zaktualizowanej wersji zestawu SDK

Aby zminimalizować sporadyczne awarie łączności sieciowej, zaimplementowaliśmy Cache-Control nagłówki we wszystkich plikach CDN. Po pobraniu bieżącej wersji zestawu SDK przez przeglądarkę użytkownika nie trzeba go ponownie pobierać, ponieważ używa ona ponownie uzyskanej wcześniej 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, gdy nastąpi nowe wydanie i stanie się ogólnie dostępne (wdrożone w usłudze CDN).

Rozwiązanie 1b: Użyj pakietów npm, aby osadzić zestaw SDK razem z aplikacją w jednym pakiecie

Czy wyjątek awarii obciążenia zestawu SDK jest trwały i czy występuje dla wielu użytkowników wraz ze zmniejszeniem normalnej telemetrii klienta? W takim przypadku sporadyczne problemy z łącznością sieciową prawdopodobnie nie są prawdziwą przyczyną problemu i należy zbadać inne możliwe przyczyny.

Uwaga

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 we własnej sieci CDN jest mało prawdopodobne, aby zapewnić lub zmniejszyć liczbę wystąpień tego wyjątku. Ten sam problem ma wpływ na własną sieć CDN i występuje również w przypadku używania 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, nie można załadować lub zainicjować całej aplikacji, a nie tylko zestawu SDK telemetrii (który użytkownicy nie widzą). W związku z tym użytkownicy prawdopodobnie będą nadal odświeżać witrynę do momentu jej całkowitego załadowania.

Możesz spróbować użyć pakietów npm, aby osadzić zestaw SDK usługi Application Insights razem z monitorowaną aplikacją w jednym pakiecie. Mimo że w tym scenariuszu nadal może wystąpić błąd sporadyczny, połączony pakiet oferuje 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. Na przykład możesz spróbować uzyskać dostęp https://js.monitor.azure.com/scripts/b/ai.2.min.js z własnego komputera deweloperskiego. (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ła awaria, możesz utworzyć nowy bilet pomocy technicznej.

Przyczyna 3. Zestaw SDK nie zainicjował się po załadowaniu skryptu

Jeśli zestaw SDK nie inicjuje, <skrypt /> nadal zostanie pomyślnie pobrany z sieci CDN, ale nie powiedzie się podczas inicjowania. Ten błąd występuje z powodu braku lub nieprawidłowych zależności lub z powodu pewnej formy wyjątku javascript.

Rozwiązanie 3. Sprawdzanie pomyślnego pobierania zestawu SDK lub wyjątków 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 pobrano skryptu, ten scenariusz nie jest przyczyną wyjątku niepowodzenia ładowania zestawu SDK. Użyj przeglądarki, która obsługuje narzędzia deweloperskie. Wybierz pozycję F12, aby wyświetlić narzędzia deweloperskie, a następnie wybierz kartę Sieć . Sprawdź, czy skrypt zdefiniowany w konfiguracji fragmentu kodu src został pobrany. W tym celu sprawdź kod 200 odpowiedzi (powodzenie) lub 304 (nie zmieniono). Aby przejrzeć ruch sieciowy, możesz również użyć narzędzia do debugowania internetowego, 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 występuje prawdopodobnie tylko wtedy, gdy określoni użytkownicy lub środowiska wymagają, aby aplikacja zapewniała dodatkowe polyfill implementacje. Złóż problem w usłudze GitHub.
Problem dotyczy całej aplikacji i wszystkich użytkowników. Jest to problem związany z wydaniem. 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, która obsługuje narzędzia deweloperskie. Wybierz pozycję F12, aby wyświetlić narzędzia deweloperskie, załadować stronę, a następnie sprawdzić, czy wystąpiły 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ę.

  • Konfiguracja przekazana do zestawu SDK nie ma wymaganej konfiguracji.

  • W usłudze CDN wdrożono wadliwe wydanie.

Aby sprawdzić wadliwą konfigurację, zmień konfigurację przekazaną do fragmentu kodu (jeśli jeszcze tego nie zrobiono), tak aby zawierała tylko klucz instrumentacji jako wartość ciągu. Poniższy kod przedstawia przykładową zmianę konfiguracji fragmentu kodu.

Uwaga

Obsługa pozyskiwania kluczy instrumentacji kończy się 31 marca 2025 r. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie będziemy już zapewniać aktualizacji ani obsługi tej funkcji. Zobacz Przejście do parametrów 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 ta minimalna konfiguracja jest używana, jeśli w skrypcie zestawu SDK nadal występuje wyjątek JavaScript, utwórz nowy bilet pomocy technicznej. Aby rozwiązać ten problem, należy wycofać uszkodzoną kompilację. Wynika to z faktu, że przyczyną problemu jest prawdopodobnie nowo wdrożona wersja.

Jeśli wyjątek zniknie, niezgodność typu lub nieoczekiwana wartość prawdopodobnie powoduje problem. Rozpocznij rozwiązywanie problemów, przywracając opcje konfiguracji jeden po drugim i przetestuj je po każdej zmianie, dopóki wyjątek nie wystąpi ponownie. Następnie zapoznaj się z dokumentacją elementu, który powoduje problem. Jeśli dokumentacja jest niejasna lub potrzebujesz pomocy, złóż problem w usłudze GitHub.

Czy konfiguracja była wcześniej wdrożona i działał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 niewielkiego zestawu użytkowników lub przeglądarek. Złóż 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ły żadne zgłoszone wyjątki, należy włączyć debugowanie konsoli, dodając ustawienie loggingLevelConsole do konfiguracji, jak pokazano w poniższym przykładzie konfiguracji fragmentu kodu. Ta zmiana wysyła wszystkie błędy i ostrzeżenia inicjowania do konsoli przeglądarki. (Aby wyświetlić konsolę przeglądarki, wybierz pozycję F12, aby otworzyć narzędzia deweloperskie, a następnie wybierz kartę Konsola ). Wszelkie zgłoszone błędy powinny być objaśniające. Jeśli potrzebujesz dalszej pomocy, złóż 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

Podczas inicjowania zestaw SDK przeprowadza podstawowe kontrole 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 inicjuje, 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 jest przeznaczone tylko dla deweloperów, prawdopodobnie powoduje zgłaszanie większej liczby wyjątków z powodu wewnętrznych kontroli. Przejrzyj każdy wyjątek, aby określić, który problem powoduje niepowodzenie zestawu SDK. Użyj niezweryfikowanej wersji skryptu (zmieniając rozszerzenie nazwy pliku z .min.js na .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 nigdy 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 zapewnia żadnych szczegółowych informacji, należy złożyć problem w usłudze GitHub , podając szczegóły i przykładową witrynę, jeśli jej używasz. Dołącz szczegóły wersji przeglądarki, systemu operacyjnego i struktury JavaScript, aby ułatwić zidentyfikowanie problemu.

Przyczyna 4. Zablokowanie usługi JavaScript CDN usługi Application Insights

Zablokowanie usługi CDN jest możliwe, jeśli punkt końcowy zestawu SDK cdn zestawu JavaScript usługi Application Insights jest zgłaszany lub identyfikowany jako niebezpieczny. W takiej sytuacji punkt końcowy jest publicznie blokowany, 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 współ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 witryny internetowe 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 firmy mogą być zmuszeni do wymuszenia aktualizacji lub jawnego zezwolenia 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 do aktualizowania 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 dokładniej, jak może wystąpić blokada i jak rozwiązać problem z blokadą.

Przyczyna 4a: Blokada użytkownika (przeglądarka, zainstalowany bloker lub zapora osobista)

Sprawdź, czy użytkownicy wykonali dowolną z następujących akcji konfiguracji:

  • Zainstalowano wtyczkę przeglądarki (zazwyczaj w postaci blokady reklam, złośliwego oprogramowania lub wyskakujących wyskakujących wyskakujących plików)

  • 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 nie można rozpoznać wpisu DNS)

Rozwiązanie 4a: Dodawanie wyjątków listy zablokowanych dla punktów końcowych usługi CDN

Jeśli użytkownicy podjęli dowolną z wymienionych akcji konfiguracji, współpracuj z nimi (lub podaj dokumentację), aby zezwolić na punkty końcowe usługi CDN.

Użytkownicy mogli zainstalować wtyczki korzystające z publicznej listy zablokowanych. Jeśli tak nie jest, prawdopodobnie używają innego ręcznie skonfigurowanego rozwiązania lub wtyczki używają listy blokowej domeny prywatnej.

Poinformuj użytkowników, aby zezwolili na pobieranie skryptów z punktów końcowych usługi CDN usługi Application Insights, dołączając punkty końcowe na liście wyjątków wtyczki lub reguł zapory w przeglądarce. Te listy różnią się w zależności od środowiska użytkownika.

Oto przykład tej sytuacji, który pokazuje, jak skonfigurować przeglądarce Google Chrome, aby zezwalać na dostęp do witryn internetowych lub blokować go.

Przyczyna 4b: Blokada zapory firmowej

Jeśli użytkownicy znajdują się w sieci firmowej, zapora firmowa jest prawdopodobnie ź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 firm

Ważna

Czy użytkownicy korzystają z chmury prywatnej i czy nie mają dostępu do publicznego Internetu? W takim przypadku należy użyć pakietów npm usługi Application Insights do osadzenia zestawu SDK lub hostowania zestawu 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. Poproś dział IT o skonfigurowanie punktów końcowych usługi CDN usługi Application Insights do pobrania, dołączając (lub usuwając) je w dowolnych usługach blokujących lub zezwalających na listę domen.

Rozwiązanie 4b2: Hostowanie zestawu SDK we własnej sieci 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 zestawu SDK (ai.2.#.#.min.js), aby ułatwić określenie używanej wersji. Ponadto regularnie aktualizuj zestaw SDK do bieżącej wersji (ai.2.min.js), aby można było używać wszelkich poprawek błędów i nowych funkcji, które stają 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 dodawać publiczne punkty końcowe usługi CDN, możesz użyć pakietów npm , aby dołączyć zestaw SDK jako część własnych plików JavaScript. Zestaw SDK staje się kolejnym pakietem w ramach własnych skryptów. Aby uzyskać więcej informacji, zobacz sekcję konfiguracji opartą na narzędziu npm na stronie gitHub zestawu JavaScript SDK usługi Application Insights.

Uwaga

Zalecamy, aby podczas korzystania z pakietów npm również użyć jakiejś formy pakietu JavaScript , aby ułatwić dzielenie kodu i minyfikację.

Podobnie jak w przypadku fragmentu kodu, te same problemy z blokowaniem, które pojawiają się tutaj, mogą mieć wpływ na własne skrypty (przy użyciu pakietów npm zestawu SDK lub bez). W zależności od aplikacji, użytkowników i struktury możesz rozważyć zaimplementowanie czegoś podobnego do logiki we fragmencie kodu w celu wykrycia i zgłoszenia tych problemów.

Rozwiązywanie problemów z obsługą mapy źródłowej dla aplikacji JavaScript

W poniższej tabeli wyjaśniono niektóre problemy, które obejmują obsługę map źródłowych dla aplikacji JavaScript, i oferuje strategie ułatwiające rozwiązanie tych problemów.

Problem Opis
Wymagane ustawienia kontroli dostępu opartej na rolach (RBAC) platformy Azure w kontenerze obiektów blob Każdemu użytkownikowi portalu, który korzysta z tej funkcji, musi mieć przypisaną co najmniej rolę Czytelnik danych obiektów blob magazynu dla kontenera obiektów blob. Musisz przypisać tę rolę każdemu, kto chce korzystać z map źródłowych za pośrednictwem tej funkcji. W zależności od sposobu utworzenia kontenera ta rola mogła nie zostać automatycznie przypisana do Ciebie lub Twojego zespołu.
Nie można odnaleźć mapy źródłowej Aby rozwiązać ten problem, wykonaj następujące czynności:
  1. Sprawdź, czy odpowiednia mapa źródłowa została przekazana do poprawnego kontenera obiektów blob.
  2. Sprawdź, czy plik mapy źródłowej pobiera swoją nazwę z pliku JavaScript, na który jest mapowany, i czy ma rozszerzenie nazwy pliku map . Na przykład /static/js/main.4e2ca5fa.chunk.js wyszukuje obiekt blob o nazwie main.4e2ca5fa.chunk.js.map.
  3. Sprawdź konsolę przeglądarki, aby dowiedzieć się, czy rejestruje błędy. Uwzględnij te dane wyjściowe w dowolnym bilecie pomocy technicznej.

Naprawiono ostrzeżenie "Kliknij wiersze zdarzeń bez wartości parentId"

Jeśli używasz usługi Application Insights i wtyczki Click Analytics Auto-Collection w aplikacji, w skoroszycie usługi Application Insights może pojawić się następujące ostrzeżenie telemetrii: "Kliknij wiersze zdarzeń bez wartości parentId".

Przyczyna

Ten problem może wystąpić, jeśli identyfikator nadrzędny nie zostanie określony w nadrzędnym elemencie HTML. Ten warunek powoduje wyzwolenie zdarzenia we wszystkich jego elementach nadrzędnych.

Rozwiązanie

Aby rozwiązać ten problem, dodaj data-parentid atrybut lub 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

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 platformy Azure.