Problemen met Application Insights JavaScript SDK oplossen
In dit artikel wordt beschreven hoe u verschillende problemen oplost die betrekking hebben op de JavaScript SDK van Application Insights. De onderwerpen in dit artikel bevatten SDK-laadfouten voor JavaScript-web-apps en ondersteuning voor brontoewijzingen voor JavaScript-apps.
Problemen met sdk-belasting oplossen voor JavaScript-web-apps
In de volgende secties worden de symptomen, oorzaken en oplossingen besproken voor een specifiek SCENARIO met SDK-belastingsfouten voor JavaScript-web-apps.
Symptomen
In het <hoofdelement> van de webpagina die u bewaakt, maakt het JavaScript-fragment (versie 3 of een latere versie) de volgende uitzondering wanneer wordt gedetecteerd dat het SDK-script niet is gedownload of geïnitialiseerd:
SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)
Dit bericht geeft aan dat de client van de gebruiker (browser) de Application Insights SDK niet kan downloaden of initialiseren vanaf de geïdentificeerde hostingpagina. Daarom ziet u geen telemetrie of gebeurtenissen.
Notitie
Deze uitzondering wordt ondersteund in alle belangrijke browsers die ondersteuning bieden voor de fetch()
API of XMLHttpRequest
. Deze browserversies sluiten Microsoft Internet Explorer 8 en eerdere versies uit. Daarom melden deze browsers dit type uitzondering niet, tenzij uw omgeving een fetch polyfill bevat.
De stackdetails bevatten de basisinformatie over de URL's die door de gebruiker worden gebruikt.
Name | Beschrijving |
---|---|
<CDN-eindpunt> | De URL die is gebruikt (en is mislukt) om de SDK te downloaden. |
<Help-koppeling> | Een URL die is gekoppeld aan documentatie voor probleemoplossing (deze pagina). |
<Host-URL> | De volledige URL van de pagina die de gebruiker gebruikte. |
<Eindpunt-URL> | De URL die is gebruikt om de uitzondering te rapporteren. Deze waarde kan helpen bepalen of het openbare internet of een privécloud toegang heeft tot de hostingpagina. |
De volgende lijst bevat de meest voorkomende redenen waarom deze uitzondering optreedt:
Onregelmatige netwerkverbindingsfout
Storing van Application Insights Content Delivery Network (CDN)
Fout bij het initialiseren van de SDK na het laden van het script
Blokkering van de Application Insights JavaScript CDN
Onregelmatige netwerkconnectiviteitsfouten zijn de meest voorkomende reden voor deze uitzondering, met name in scenario's voor mobiele roaming.
In de volgende secties wordt beschreven hoe u elke mogelijke hoofdoorzaak van deze fout kunt oplossen.
Notitie
Bij sommige van deze stappen wordt ervan uitgegaan dat uw toepassing directe controle heeft over het script/codefragment < en> de configuratie die wordt geretourneerd als onderdeel van de hosting-HTML-pagina. Als deze voorwaarden niet van toepassing zijn op uw scenario, zijn deze stappen ook niet van toepassing.
Oorzaak 1: Onregelmatige netwerkverbindingsfout
Als de gebruiker onregelmatige netwerkverbindingsfouten ondervindt, zijn er minder mogelijke oplossingen dan voor andere oorzaken. Deze fout lost zichzelf echter meestal snel op. Als de gebruiker bijvoorbeeld de pagina vernieuwt om uw site opnieuw te laden, worden de bestanden uiteindelijk gedownload en lokaal in de cache opgeslagen totdat een bijgewerkte versie wordt uitgebracht.
Oplossing 1a: Een bijgewerkte versie van de SDK downloaden
Om onregelmatige netwerkconnectiviteitsfouten te minimaliseren, hebben we headers geïmplementeerd Cache-Control
op alle CDN-bestanden. Nadat de browser van de gebruiker de huidige versie van de SDK heeft gedownload, hoeft deze niet meer te worden gedownload omdat deze de eerder verkregen kopie opnieuw gebruikt. (Zie hoe caching werkt.) Als de cachecontrole mislukt of er een nieuwe release beschikbaar is, moet de browser van de gebruiker de bijgewerkte versie downloaden. Daarom ziet u mogelijk een achtergrondniveau van 'ruis' in het scenario met controlefouten. Of u ziet mogelijk een tijdelijke piek wanneer er een nieuwe release plaatsvindt en algemeen beschikbaar wordt (geïmplementeerd op het CDN).
Oplossing 1b: NPM-pakketten gebruiken om de SDK samen met de toepassing in één bundel in te sluiten
Is de uitzondering voor het laden van de SDK permanent en vindt deze plaats voor veel gebruikers samen met een vermindering van de normale clienttelemetrie? In dit geval zijn onregelmatige netwerkverbindingsproblemen waarschijnlijk niet de werkelijke oorzaak van het probleem en moet u andere mogelijke oorzaken verkennen.
Notitie
Een veelvoorkomende indicatie dat deze fout voor meerdere gebruikers optreedt, is dat de uitzondering op een snel en duurzaam niveau wordt gerapporteerd.
In dit geval is het onwaarschijnlijk dat het hosten van de SDK op uw eigen CDN de exemplaren van deze uitzondering biedt of vermindert. Hetzelfde probleem is van invloed op uw eigen CDN en dit treedt ook op als u de SDK gebruikt via een npm-pakketoplossing. Het mislukken van het laatste scenario treedt vooral op als Application Insights is opgenomen in een andere bundel dan die van de toepassing die wordt bewaakt, omdat de fout gegarandeerd in ten minste één van deze bundels plaatsvindt. Wanneer deze uitzondering zich voordoet, kan de hele toepassing niet worden geladen of geïnitialiseerd, niet alleen de telemetrie-SDK (die gebruikers niet zien). Daarom blijven gebruikers uw site waarschijnlijk vernieuwen totdat deze volledig wordt geladen.
U kunt npm-pakketten gebruiken om de Application Insights SDK samen met de bewaakte toepassing in één bundel in te sluiten. Hoewel er in dit scenario nog steeds een onregelmatige fout kan optreden, biedt een gecombineerde bundel een echte kans om het probleem op te lossen.
Oorzaak 2: Application Insights CDN-storing
Als u wilt controleren of er een Application Insights CDN-storing is, probeert u het CDN-eindpunt rechtstreeks vanuit de browser te openen vanaf een andere locatie dan die van uw gebruikers. U kunt bijvoorbeeld proberen toegang te https://js.monitor.azure.com/scripts/b/ai.2.min.js krijgen vanaf uw eigen ontwikkelcomputer. (Hierbij wordt ervan uitgegaan dat uw organisatie dit domein niet heeft geblokkeerd.)
Oplossing 2: Een ondersteuningsticket maken
Als u controleert of er een storing bestaat, kunt u een nieuw ondersteuningsticket maken.
Oorzaak 3: SDK is niet geïnitialiseerd na het laden van het script
Als de SDK niet wordt geïnitialiseerd, wordt het <script/> nog steeds gedownload van het CDN, maar mislukt het tijdens de initialisatie. Deze fout treedt op vanwege ontbrekende of ongeldige afhankelijkheden, of vanwege een vorm van JavaScript-uitzondering.
Oplossing 3: Controleren op een geslaagde SDK-download of JavaScript-uitzonderingen, of foutopsporing in de browser inschakelen
Stap 1: Controleren op een geslaagde SDK-download
Controleer of de SDK is gedownload. Als er geen script is gedownload, is dit scenario niet de oorzaak van de uitzondering voor het laden van de SDK. Gebruik een browser die ondersteuning biedt voor ontwikkelhulpprogramma's. Selecteer F12 om de ontwikkelhulpprogramma's weer te geven en selecteer vervolgens het tabblad Netwerk. Controleer of het script dat is gedefinieerd in de configuratie van het src-fragment is gedownload. Hiervoor controleert u op antwoordcode 200
(geslaagd) of 304
(niet gewijzigd). Als u het netwerkverkeer wilt controleren, kunt u ook een hulpprogramma voor webfoutopsporing gebruiken, zoals Fiddler.
Als de SDK niet is gedownload, raadpleegt u de volgende tabel om inzicht te hebben in de verschillende rapportageopties.
Scenario | Oorzaak | Actie |
---|---|---|
Het probleem is van invloed op slechts een paar gebruikers en een specifieke browserversie of een subset van browserversies. (Controleer de details van de gerapporteerde uitzondering.) | Het probleem is waarschijnlijk alleen als specifieke gebruikers of omgevingen vereisen dat uw toepassing extra polyfill implementaties biedt. |
Dien een probleem in op GitHub. |
Het probleem is van invloed op uw hele toepassing en al uw gebruikers. | Het is een probleem met betrekking tot de release. | Maak een nieuw ondersteuningsticket. |
Als de SDK is gedownload, raadpleegt u de volgende secties om het probleem met de SDK-initialisatie op te lossen.
Stap 2: Controleren op JavaScript-uitzonderingen
Controleer op JavaScript-uitzonderingen. Gebruik een browser die ondersteuning biedt voor ontwikkelhulpprogramma's. Selecteer F12 om de ontwikkelhulpprogramma's weer te geven, de pagina te laden en vervolgens te controleren of er uitzonderingen zijn opgetreden. Veroorzaakt het SDK-script (bijvoorbeeld in ai.2.min.js) uitzonderingen? In dit geval is een van de volgende scenario's opgetreden:
De configuratie die wordt doorgegeven aan de SDK bevat een onverwachte configuratie.
Er ontbreekt een vereiste configuratie voor de configuratie die wordt doorgegeven aan de SDK.
Er is een foutieve release geïmplementeerd in het CDN.
Als u wilt controleren op een onjuiste configuratie, wijzigt u de configuratie die wordt doorgegeven aan het fragment (als u dit nog niet hebt gedaan), zodat deze alleen uw instrumentatiesleutel als tekenreekswaarde bevat. De volgende code toont een voorbeeld van een configuratiewijziging voor codefragmenten.
Notitie
De ondersteuning voor instrumentatiesleutelopname eindigt op 31 maart 2025. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Zie Overgang naar verbindingsreeks s om te profiteren van nieuwe mogelijkheden.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "<instrumentation-key-guid>"
}});
</script>
Wanneer u deze minimale configuratie gebruikt, maakt u een nieuw ondersteuningsticket als u nog steeds een JavaScript-uitzondering in het SDK-script ziet. U kunt het probleem oplossen door de foutieve build terug te draaien. Dit komt doordat een nieuw geïmplementeerde versie waarschijnlijk de oorzaak van het probleem is.
Als de uitzondering verdwijnt, veroorzaakt een type waarschijnlijk niet-overeenkomende of onverwachte waarde het probleem. Begin met het oplossen van problemen door uw configuratieopties één voor één te herstellen en test na elke wijziging totdat de uitzondering zich opnieuw voordoet. Controleer vervolgens de documentatie voor het item dat het probleem veroorzaakt. Als de documentatie onduidelijk is of als u hulp nodig hebt, kunt u een probleem indienen op GitHub.
Is uw configuratie eerder geïmplementeerd en werkend, maar wordt deze uitzondering nu gerapporteerd? In dit geval is er mogelijk een probleem dat van invloed is op een nieuw geïmplementeerde versie. Controleer of de uitzondering alleen van invloed is op een kleine set gebruikers of browsers. Dien een probleem in op GitHub of maak een nieuw ondersteuningsticket.
Stap 3: Foutopsporing in de browserconsole inschakelen
Als er geen gegenereerde uitzonderingen zijn opgetreden, moet u consolefoutopsporing inschakelen door de instelling loggingLevelConsole toe te voegen aan de configuratie, zoals wordt weergegeven in het volgende voorbeeld van de configuratie van het codefragment. Met deze wijziging worden alle initialisatiefouten en waarschuwingen naar de console van de browser verzonden. (Als u de browserconsole wilt weergeven, selecteert u F12 om de ontwikkelhulpprogramma's te openen en selecteert u vervolgens de Consoletabblad .) Gerapporteerde fouten moeten verklarend zijn. Als u meer hulp nodig hebt, kunt u een probleem indienen op 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>
Notitie
Tijdens de initialisatie voert de SDK enkele basiscontroles uit op bekende belangrijke afhankelijkheden. Als de huidige runtime deze controles niet levert, rapporteert de runtime de fouten als waarschuwingsberichten aan de console (maar alleen als de loggingLevelConsole
instellingswaarde groter is dan nul).
Als de SDK nog steeds niet wordt geïnitialiseerd, schakelt u de configuratie-instelling enableDebug in. Nadat u deze wijziging hebt aangebracht, worden alle interne fouten gegenereerd als uitzonderingen. Dit veroorzaakt verlies van telemetrie. Omdat deze instelling alleen voor ontwikkelaars geldt, worden er waarschijnlijk meer uitzonderingen gegenereerd vanwege interne controles. Bekijk elke uitzondering om te bepalen welk probleem ervoor zorgt dat de SDK mislukt. Gebruik de niet-gecontroleerde versie van het script (door de bestandsnaamextensie te wijzigen van .min.js in slechts .js). Anders zijn de uitzonderingen onleesbaar. De volgende code toont de configuratiewijzigingen van het voorbeeldfragment.
Waarschuwing
Deze instelling voor ontwikkelaars mag NOOIT worden ingeschakeld in een volledige productieomgeving, omdat u hierdoor telemetrie kwijtraakt.
<script type="text/javascript">
...
src: "https://js.monitor.azure.com/scripts/b/ai.2.js",
cfg:{
instrumentationKey: "<instrumentation-key-guid>",
enableDebug: true
}});
</script>
Als deze actie nog steeds geen inzichten biedt, moet u een probleem indienen op GitHub door de details en een voorbeeldsite op te geven, als u er een gebruikt. Neem de browserversie, het besturingssysteem en de details van het JavaScript-framework op om het probleem te identificeren.
Oorzaak 4: Blokkering van de JavaScript CDN van Application Insights
Een CDN-blokkering is mogelijk als een Application Insights JavaScript SDK CDN-eindpunt wordt gerapporteerd of geïdentificeerd als onveilig. In dit geval wordt het eindpunt openbaar geblokkeerd en beginnen consumenten van deze lijsten alle toegang te blokkeren.
Om dit probleem op te lossen, moet de eigenaar van het CDN-eindpunt werken met de entiteit blocklisting die het eindpunt als onveilig heeft gemarkeerd. Vervolgens kan de blokkeringsentiteit het eindpunt uit de relevante lijst verwijderen.
Controleer de volgende internetbeveiligingswebsites om te zien of ze het CDN-eindpunt als onveilig identificeren:
Het kan lang duren om dit probleem op te lossen. Gebruikers of zakelijke IT-afdelingen moeten mogelijk een update afdwingen of de CDN-eindpunten expliciet toestaan. De totale hoeveelheid tijd die nodig is om dit probleem op te lossen, is afhankelijk van de frequentie die is vereist voor de toepassing, firewall of omgeving om hun lokale kopieën van de lijsten bij te werken.
Als het CDN-eindpunt als onveilig wordt geïdentificeerd, maakt u een ondersteuningsticket om het probleem zo snel mogelijk op te lossen.
In de volgende secties wordt specifiek beschreven hoe een blokkering kan optreden en hoe u de blokkering kunt oplossen.
Oorzaak 4a: Gebruikersblokkering (browser, geïnstalleerde blokker of persoonlijke firewall)
Controleer of uw gebruikers een van de volgende configuratieacties hebben uitgevoerd:
Een browserinvoegtoepassing geïnstalleerd (meestal in de vorm van een advertentie, malware of pop-upblokkering)
De Application Insights CDN-eindpunten in hun browser of proxy geblokkeerd of niet toegestaan
Een firewallregel geconfigureerd die een blokkering van het CDN-domein voor de SDK veroorzaakt (of een fout bij het omzetten van de DNS-vermelding)
Oplossing 4a: uitzonderingen voor bloklijst toevoegen voor CDN-eindpunten
Als uw gebruikers een van de vermelde configuratieacties hebben uitgevoerd, kunt u met hen samenwerken (of documentatie opgeven) om de CDN-eindpunten toe te staan.
Gebruikers hebben mogelijk invoegtoepassingen geïnstalleerd die gebruikmaken van de openbare blokkeringslijst. Zo niet, dan gebruiken ze waarschijnlijk een andere handmatig geconfigureerde oplossing of maken de invoegtoepassingen gebruik van een bloklijst voor privédomeinen.
Laat uw gebruikers het downloaden van scripts van de Application Insights CDN-eindpunten toestaan door de eindpunten op te slaan in de invoegtoepassing of firewallregeluitzonderingslijst van hun browser. Deze lijsten variëren op basis van de gebruikersomgeving.
Hier volgt een voorbeeld van deze situatie waarin wordt getoond hoe u Google Chrome configureert om toegang tot websites toe te staan of te blokkeren.
Oorzaak 4b: Bedrijfsfirewallblokkering
Als uw gebruikers zich in een bedrijfsnetwerk bevinden, is de firewall van het bedrijf waarschijnlijk de bron van de CDN-blokkering. De IT-afdeling van het bedrijf heeft waarschijnlijk een vorm van internetfilteringssysteem geïmplementeerd.
Oplossing 4b1: Uitzonderingen toevoegen voor CDN-eindpunten voor bedrijven
Belangrijk
Gebruiken uw gebruikers een privécloud en hebben ze geen toegang tot het openbare internet? In dit geval moet u de Npm-pakketten van Application Insights gebruiken om de SDK in te sluiten of de Application Insights SDK hosten op uw eigen CDN.
Werk samen met de IT-afdeling van uw bedrijf om de benodigde regels voor uw gebruikers toe te staan. Deze oplossing is vergelijkbaar met het toevoegen van uitzonderingen voor gebruikers. Laat de IT-afdeling de Application Insights CDN-eindpunten configureren voor downloaden door ze op te slaan (of te verwijderen) in een domeinblokkerings- of acceptatielijstservices.
Oplossing 4b2: de SDK hosten op uw eigen CDN
In plaats van dat gebruikers de Application Insights SDK downloaden van het openbare CDN, kunt u de Application Insights SDK hosten op uw eigen CDN-eindpunt. U wordt aangeraden een specifieke versie (ai.2.#.#.min.js) van de SDK te gebruiken om gemakkelijker te bepalen welke versie u gebruikt. Werk de SDK ook regelmatig bij naar de huidige versie (ai.2.min.js), zodat u eventuele bugfixes en nieuwe functies kunt gebruiken die beschikbaar komen.
Oplossing 4b3: NPM-pakketten gebruiken om de Application Insights SDK in te sluiten
In plaats van het codefragment te gebruiken en openbare CDN-eindpunten toe te voegen, kunt u de NPM-pakketten gebruiken om de SDK op te nemen als onderdeel van uw eigen JavaScript-bestanden. De SDK wordt gewoon een ander pakket binnen uw eigen scripts. Zie de sectie npm-instellingen van de GitHub-pagina van de JavaScript SDK voor Application Insights voor meer informatie.
Notitie
We raden u aan om bij het gebruik van NPM-pakketten ook een vorm van JavaScript-bundeler te gebruiken om u te helpen bij het splitsen en minificeren van code.
Net als bij het codefragment kunnen dezelfde blokkeringsproblemen die hier worden weergegeven, van invloed zijn op uw eigen scripts (met of zonder gebruik van de SDK npm-pakketten). Afhankelijk van uw toepassing, uw gebruikers en uw framework, kunt u overwegen om iets te implementeren dat vergelijkbaar is met de logica in het fragment om deze problemen te detecteren en te rapporteren.
Problemen met ondersteuning voor brontoewijzingen voor JavaScript-toepassingen oplossen
In de volgende tabel worden bepaalde problemen uitgelegd die betrekking hebben op ondersteuning voor brontoewijzingen voor JavaScript-toepassingen en biedt strategieën om deze problemen op te lossen.
Probleem | Beschrijving |
---|---|
Vereiste op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) in uw blobcontainer | Elke gebruiker in de portal die deze functie gebruikt, moet ten minste een rol opslagblobgegevenslezer voor uw blobcontainer hebben. U moet deze rol toewijzen aan iedereen die de brontoewijzingen via deze functie wil gebruiken. Afhankelijk van hoe de container is gemaakt, is deze rol mogelijk niet automatisch aan u of uw team toegewezen. |
Bronoverzicht niet gevonden | Voer de volgende acties uit om dit probleem op te lossen:
|
De waarschuwing 'Klik op gebeurtenisrijen zonder parentId-waarde' herstellen
Wanneer u Application Insights en de invoegtoepassing Click Analytics Auto-Collection in de toepassing gebruikt, wordt mogelijk de volgende telemetriewaarschuwing weergegeven in de application insights-werkmap: 'Klik op Gebeurtenisrijen zonder parentId-waarde '.
Oorzaak
Dit probleem kan optreden als de bovenliggende id niet is opgegeven in het bovenliggende HTML-element. Deze voorwaarde zorgt ervoor dat de gebeurtenis wordt geactiveerd op alle bovenliggende elementen.
Oplossing
U kunt dit probleem oplossen door het data-parentid
of data-<customPrefix>-parentid
kenmerk toe te voegen aan het bovenliggende HTML-element. Hier volgt een voorbeeld van de HTML-code:
<div data-heart-id="demo Header" data-heart-parentid="demo.Header" data-heart-parent-group="demo.Header.Group">
Volgende stappen
Disclaimerinformatie van derden
De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.