Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Azure-toepassing Insights JavaScript SDK biedt configuratie voor het bijhouden, bewaken en opsporen van fouten in uw webtoepassingen.
SDK-configuratie
Deze configuratievelden zijn optioneel en zijn standaard ingesteld op onwaar, tenzij anders vermeld.
Zie SDK-configuratie toevoegen voor instructies over het toevoegen van SDK-configuratie.
| Naam | Typen | Standaard |
|---|---|---|
| accountId Een optionele account-id, als uw app gebruikers in accounts groepeer. Geen spaties, komma's, puntkomma's, gelijktekens of verticale balken |
tekenreeks | Nul |
| voegAanvraagcontextToe Een manier bieden om afhankelijkhedenlogboeken te verrijken met context aan het begin van een API-aanroep. De standaardwaarde is niet gedefinieerd. U moet controleren of xhr bestaat wanneer u xhr gerelateerde context configureert. U moet controleren of fetch request en fetch response bestaan wanneer u de gerelateerde context fetch configureert. Anders krijgt u mogelijk niet de gegevens die u nodig hebt. |
(requestContext: IRequestionContext) => {[key: string]: any} | Ongedefinieerde |
| ajaxPerfLookupDelay De standaardwaarde is 25 ms. De hoeveelheid tijd die moet worden gewacht voordat opnieuw wordt geprobeerd de window.performance-timings voor een Ajax-aanvraag te vinden, wordt in milliseconden opgegeven en direct doorgegeven aan setTimeout(). |
numeriek | vijfentwintig |
| app-id AppId wordt gebruikt voor de correlatie tussen AJAX-afhankelijkheden die plaatsvinden aan de clientzijde met de aanvragen aan de serverzijde. Wanneer Beacon-API is ingeschakeld, kan deze niet automatisch worden gebruikt, maar kan deze handmatig worden ingesteld in de configuratie. De standaardwaarde is null |
tekenreeks | Nul |
| autoTrackPaginaBezoekTijd Indien waar, wordt op een paginaweergave de weergavetijd van de vorige geïnstrueerde pagina bijgehouden en verzonden als telemetrie en wordt er een nieuwe timer gestart voor de huidige paginaweergave. Het wordt verzonden als een aangepaste metriek met de naam PageVisitTime in milliseconds en wordt berekend via de functie Date now() (indien beschikbaar) en valt terug op (nieuwe Datum()).getTime() if now() is niet beschikbaar (IE8 of minder). Standaard ingesteld op onwaar. |
booleaan | onwaar |
| onbepaald omzetten Geef de gebruiker een optie op om een niet-gedefinieerd veld te converteren naar een door de gebruiker gedefinieerde waarde. |
any |
Ongedefinieerde |
| cookieCfg Standaardinstellingen voor cookiegebruik ingeschakeld, zie ICookieCfgConfig-instellingen voor volledige standaardinstellingen. |
ICookieCfgConfig [Optioneel] (Sinds 2.6.0) |
Ongedefinieerde |
| cookie-domein Aangepast cookiedomein. Het is handig als u Application Insights-cookies wilt delen tussen subdomeinen. (Sinds v2.6.0) Als cookieCfg.domain is gedefinieerd, heeft het voorrang boven deze waarde. |
alias voor cookieCfg.domain[Optioneel] |
Nul |
| cookiePath Aangepast cookiepad. Het is handig als u Application Insights-cookies wilt delen achter een toepassingsgateway. Als cookieCfg.path is gedefinieerd, heeft het voorrang. |
alias voor cookieCfg.path[Optioneel] (Sinds 2.6.0) |
Nul |
| correlatieHeaderDomeinen Correlatieheaders inschakelen voor specifieke domeinen |
tekenreeks[] | Ongedefinieerde |
| correlatieHeaderUitgeslotenDomeinen Correlatieheaders uitschakelen voor specifieke domeinen |
tekenreeks[] | Ongedefinieerde |
| correlatieHeaderUitsluitPatronen Correlatieheaders uitschakelen met behulp van reguliere expressies |
regex[] | Ongedefinieerde |
| createPerfMgr Met de callback-functie die wordt aangeroepen om een IPerfManager-exemplaar te maken wanneer dat nodig is en enablePerfMgr is ingeschakeld, kunt u het standaard maken van een PerfManager() overschrijven zonder dat u dat na de initialisatie hoeft te setPerfMgr() doen. |
(kern: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager | Ongedefinieerde |
| customHeaders De mogelijkheid voor de gebruiker om extra headers toe te voegen bij het gebruik van een aangepast eindpunt. customHeaders worden niet toegevoegd tijdens het afsluiten van de browser wanneer de afzender van het beacon wordt gebruikt. En het toevoegen van aangepaste headers wordt niet ondersteund op IE9 of eerder. |
[{header: string, value: string}] |
Ongedefinieerde |
| diagnosticLogInterval (intern) Pollinterval (in ms) voor interne logwachtrij |
numeriek | 10.000 |
| uitschakelenAjaxVolgen Indien waar, worden Ajax-aanroepen niet automatisch opgehaald. Standaard ingesteld op onwaar. |
booleaan | onwaar |
| cookiesgebruikUitschakelen Standaard onwaar. Een Booleaanse waarde die aangeeft of het gebruik van cookies door de SDK moet worden uitgeschakeld. Indien waar, slaat de SDK geen gegevens van cookies op of leest deze niet. (Sinds v2.6.0) Als cookieCfg.enabled is gedefinieerd, krijgt het voorrang. Cookiegebruik kan na initialisatie opnieuw worden ingeschakeld via core.getCookieMgr().setEnabled(true). |
alias voor cookieCfg.enabled[Optioneel] |
onwaar |
| uitschakelcorrelatieheaders Als dit onwaar is, voegt de SDK twee headers ('Request-Id' en 'Request-Context') toe aan alle afhankelijkheidsaanvragen om deze te correleren met overeenkomende aanvragen aan de serverzijde. Standaard ingesteld op onwaar. |
booleaan | onwaar |
| analyseDataverliesUitschakelen Als dit onwaar is, worden interne buffers voor telemetriezenders gecontroleerd bij het opstarten van items die nog niet zijn verzonden. |
booleaan | waar |
| uitschakelen van uitzonderingstracering Indien waar, worden uitzonderingen niet automatisch opgehaald. Standaard ingesteld op onwaar. |
booleaan | onwaar |
| uitschakelenFetchTracking De standaardinstelling disableFetchTracking is false, wat betekent dat deze is ingeschakeld. In versies vóór 2.8.10 was het echter standaard uitgeschakeld. Wanneer dit is ingesteld true, worden ophalen van aanvragen niet automatisch verzameld. De standaardinstelling is gewijzigd van true in false versie 2.8.0. |
booleaan | onwaar |
| disableFlushOnBeforeUnload (uitschakelen flush bij vóór het sluiten laden) Standaard onwaar. Indien waar, wordt de flush-methode niet aangeroepen wanneer het onBeforeUnload-evenement wordt geactiveerd. |
booleaan | onwaar |
| disableIkeyDeprecationMessage De foutmelding over de veroudering van de instrumentatiesleutel uitschakelen. Indien waar, worden er geen foutberichten verzonden. |
booleaan | waar |
| InstrumentatiesleutelvalidatieUitschakelen Indien waar, wordt de validatiecontrole voor instrumentatiesleutels overgeslagen. De standaardwaarde is onwaar. |
booleaan | onwaar |
| uitschakelenTelemetry Indien waar, wordt telemetrie niet verzameld of verzonden. Standaard ingesteld op onwaar. |
booleaan | onwaar |
| xhrUitschakelen Gebruik standaard niet XMLHttpRequest of XDomainRequest (voor Internet Explorer < versie 9), maar probeer fetch() of sendBeacon te gebruiken. Als er geen ander transport beschikbaar is, wordt XMLHttpRequest gebruikt |
booleaan | onwaar |
| gedistribueerdeTracingMode Hiermee stelt u de gedistribueerde traceringsmodus in. Als AI_AND_W3C- of W3C-modus is ingesteld, worden W3C-contextheaders (traceparent/tracestate) gegenereerd en opgenomen in alle uitgaande aanvragen. AI_AND_W3C wordt geleverd voor achterwaartse compatibiliteit met oude Application Insights-services. |
numeriek of DistributedTracingModes |
DistributedTracing Modes.AI_AND_W3C |
| enableAjaxErrorStatusText (inschakelen Ajax-foutstatus tekst) Standaard onwaar. Indien waar, neemt u de booleaanse waarde van de tekst van antwoordfouten op in de afhankelijkheidsgebeurtenis voor mislukte AJAX-aanvragen. |
booleaan | onwaar |
| enableAjaxPerfTracking Standaard onwaar. Vlag om extra prestaties van browservensters op te zoeken en op te nemen in de gerapporteerde Ajax-metrieken (XHR en fetch). |
booleaan | onwaar |
| inschakelAutomatischeRoutevolging Routewijzigingen automatisch bijhouden in Single Page Applicaties (SPA). Indien waar, stuurt elke routewijziging een nieuwe Pageview naar Application Insights. Wijzigingen in hashroute ( example.com/foo#bar) worden ook vastgelegd als nieuwe paginaweergaven.Opmerking: Als u dit veld inschakelt, schakelt u het history object niet in voor react-routerconfiguratie omdat u meerdere paginaweergave-gebeurtenissen krijgt. |
booleaan | onwaar |
| Cors-correlatie inschakelen Indien waar, voegt de SDK twee headers ('Request-Id' en 'Request-Context') toe aan alle CORS-aanvragen om uitgaande AJAX-afhankelijkheden te correleren met bijbehorende aanvragen aan de serverzijde. De standaardwaarde is onwaar |
booleaan | onwaar |
| foutopsporing inschakelen Indien waar, worden interne foutopsporingsgegevens gegenereerd als een uitzondering in plaats van te worden vastgelegd, ongeacht de instellingen voor SDK-logboekregistratie. Standaard ingesteld op onwaar. Opmerking: Als u deze instelling inschakelt, wordt telemetrie genegeerd wanneer er een interne fout optreedt. Dit kan handig zijn voor het snel identificeren van problemen met uw configuratie of het gebruik van de SDK. Als u geen telemetrie wilt verliezen tijdens foutopsporing, kunt u overwegen loggingLevelConsole of loggingLevelTelemetry in plaats van enableDebug. |
booleaan | onwaar |
| enablePerfMgr Als deze optie is ingeschakeld (waar), worden er lokale perfEvents gemaakt voor code die is geïnstrumenteerd om perfEvents uit te zenden (via de doPerf()-helper). Het kan worden gebruikt om prestatieproblemen in de SDK te identificeren op basis van uw gebruik of optioneel in uw eigen geïnstrueerde code. |
booleaan | onwaar |
| inschakelenVerzoekHeaderVolgen Als dit waar is, worden AJAX- & Fetch-aanvraagheaders bijgehouden. De standaardwaarde is onwaar. Als ignoreHeaders niet is geconfigureerd, worden autorisatie- en X-API-sleutelheaders niet geregistreerd. |
booleaan | onwaar |
| tracking van responsheaders inschakelen Indien waar worden de antwoordheaders van AJAX- en Fetch-aanvragen bijgehouden; standaard is onwaar. Als ignoreHeaders niet is geconfigureerd, wordt de header WWW-Authenticate niet geregistreerd. |
booleaan | onwaar |
| SessiebufferOpslagInschakelen Standaard waar. Indien waar, wordt de buffer met alle niet-verzonden telemetrie opgeslagen in sessieopslag. De buffer wordt hersteld bij het laden van pagina's |
booleaan | waar |
| inschakelenOngehanteerdeBelofteVerwerpingVolgen Indien waar, worden onverwerkte belofte-afwijzingen automatisch verzameld als een JavaScript-fout. Wanneer disableExceptionTracking true is (uitzonderingen worden niet gevolgd), wordt de configuratiewaarde genegeerd en worden niet-verwerkte belofte-afwijzingen niet gerapporteerd. |
booleaan | onwaar |
| eventsLimitInMem Het aantal gebeurtenissen dat in het geheugen kan worden bewaard voordat de SDK begint met het verwijderen van gebeurtenissen wanneer sessieopslag niet wordt gebruikt (de standaardinstelling). |
Nummer | 10.000 |
| Verzoek uitsluiten van automatische volgpatronen Een manier bieden om specifieke route uit te sluiten van automatische tracering voor XMLHttpRequest of Fetch-aanvraag. Indien gedefinieerd, wordt automatisch bijhouden uitgeschakeld voor een Ajax/fetch-aanvraag die de aanvraag-URL overeenkomt met de regex-patronen. De standaardwaarde is niet gedefinieerd. |
tekenreeks[] | RegExp[] | Ongedefinieerde |
| functieAanmelden Stel in-details voor functie-opt-in in. Dit configuratieveld is alleen beschikbaar in versie 3.0.3 en hoger. |
IFeatureOptIn | Ongedefinieerde |
| idLengte Identificeert de standaardlengte die wordt gebruikt voor het genereren van nieuwe willekeurige sessie- en gebruikers-id's. De standaardwaarde is standaard ingesteld op 22, de vorige standaardwaarde was 5 (v2.5.8 of minder), als u de vorige maximumlengte wilt behouden, moet u de waarde instellen op 5. |
numeriek | 22 |
| ignoreHeaders AJAX- en Fetch-verzoek- en antwoordheaders die genegeerd moeten worden in logboekgegevens. Als u de standaardwaarde wilt overschrijven of negeren, voegt u een matrix toe met alle koppen die moeten worden uitgesloten of een lege matrix aan de configuratie. |
tekenreeks[] | ["Authorization", "X-API-Key", "WWW-Authenticate"] |
| isBeaconApiUitgeschakeld Als dit onwaar is, verzendt de SDK alle telemetrie met behulp van de Beacon-API |
booleaan | waar |
| IsBrowserLinkTrackingIngeschakeld Standaard ingesteld op onwaar. Indien waar, houdt de SDK alle browserkoppelingsaanvragen bij. |
booleaan | onwaar |
| isOpnieuwProberenUitgeschakeld Standaard onwaar. Indien onwaar, herlaadt bij 206 (gedeeltelijk geslaagd), 408 (time-out), 429 (te veel aanvragen), 500 (interne serverfout), 503 (service niet beschikbaar) en 0 (offline, alleen indien gedetecteerd) |
booleaan | onwaar |
| isOpslaggebruikUitgeschakeld Indien waar, slaat de SDK geen gegevens op uit lokale en sessieopslag of leest deze. Standaard ingesteld op onwaar. |
booleaan | onwaar |
| logniveauConsole Registreert interne Application Insights-fouten in de console. 0: uit, 1: Alleen kritieke fouten, 2: Alles (fouten en waarschuwingen) |
numeriek | 0 |
| logniveau-telemetrie Hiermee worden interne Application Insights-fouten als telemetrie verzonden. 0: uit, 1: Alleen kritieke fouten, 2: Alles (fouten en waarschuwingen) |
numeriek | 1 |
| maximaal aantal Ajax-oproepen per weergave Standaard 500 : bepaalt hoeveel Ajax-aanroepen per paginaweergave worden bewaakt. Ingesteld op -1 om alle (onbeperkte) Ajax-aanroepen op de pagina te bewaken. |
numeriek | 500 |
| maxAjaxPerfLookupAttempts Standaardwaarde is 3. Het maximum aantal keren dat moet worden gezocht naar de tijdsinstellingen van window.performance (indien beschikbaar) is vereist. Niet alle browsers vullen window.performance in voordat ze het einde van de XHR-aanvraag rapporteren. Voor het ophalen van aanvragen wordt deze toegevoegd nadat deze is voltooid. |
numeriek | 3 |
| maximale batchinterval Hoe lang moet ik telemetrie batchgewijs uitvoeren voordat ze worden verzonden (milliseconden) |
numeriek | 15000 |
| Maximale batchgrootte in bytes Maximale grootte van de telemetriebatch. Als een batch deze limiet overschrijdt, wordt deze onmiddellijk verzonden en wordt er een nieuwe batch gestart |
numeriek | 10.000 |
| naamvoorvoegsel Een optionele waarde die wordt gebruikt als achtervoegsel voor de naam van localStorage en de sessiecookie. |
tekenreeks | Ongedefinieerde |
| onunloadDisableBeacon Standaard onwaar. wanneer het tabblad is gesloten, verzendt de SDK alle resterende telemetrie met behulp van de Beacon-API |
booleaan | onwaar |
| onunloadUitschakelenOphalen Als fetch keepalive wordt ondersteund, gebruik het dan niet voor het verzenden van gebeurtenissen tijdens het uitladen; het kan nog steeds terugvallen naar fetch() zonder keepalive. |
booleaan | onwaar |
| PaginaweergaveduurOverschrijven Indien waar, wordt het standaardgedrag van trackPageView gewijzigd om de duur van de paginaweergave te registreren wanneer deze eindigt, wanneer trackPageView wordt aangeroepen. Als er onwaar is en er geen aangepaste duur wordt opgegeven omPageView bij te houden, worden de prestaties van de paginaweergave berekend met behulp van de API voor navigatietijdsinstellingen. Standaard ingesteld op onwaar. |
booleaan | onwaar |
| perfEvtsSendAll Wanneer enablePerfMgr is ingeschakeld en de IPerfManager een INotificationManager.perfEvent() activeert, bepaalt deze vlag of een gebeurtenis wordt geactiveerd (en naar alle listeners wordt verzonden) voor alle gebeurtenissen (waar) of alleen voor 'bovenliggende' gebeurtenissen (standaard onwaar<>). Een bovenliggende IPerfEvent is een gebeurtenis waarbij geen andere IPerfEvent nog steeds wordt uitgevoerd op het moment dat de gebeurtenis wordt gemaakt en de bovenliggende eigenschap niet null of niet gedefinieerd is. Sinds v2.5.7 |
booleaan | onwaar |
| steekproefpercentage Percentage gebeurtenissen dat wordt verzonden. De standaardwaarde is 100, wat betekent dat alle gebeurtenissen worden verzonden. Stel deze in als u uw gegevenslimiet wilt behouden voor grootschalige toepassingen. |
numeriek | 100 |
| sdkExtension Hiermee stelt u de naam van de SDK-extensie in. Alleen alfabetische tekens zijn toegestaan. De extensienaam wordt toegevoegd als voorvoegsel aan de tag ai.internal.sdkVersion (bijvoorbeeld 'ext_javascript:2.0.0'). De standaardwaarde is null. |
tekenreeks | Nul |
| sessionCookiePostfix Een optionele waarde die wordt gebruikt als achtervoegsel voor de naam van de sessiecookie. Als dit niet is gedefinieerd, wordt namePrefix gebruikt als achtervoegsel van de naam voor de sessie-cookie naam. |
tekenreeks | Ongedefinieerde |
| sessieVerloopMs Een sessie wordt geregistreerd als deze gedurende deze tijd in milliseconden is voortgezet. De standaardwaarde is 24 uur |
numeriek | 86400000 |
| sessievernieuwingMs Een sessie wordt geregistreerd als de gebruiker gedurende deze tijd in milliseconden inactief is. De standaardwaarde is 30 minuten |
numeriek | 1800000 |
| throttleMgrCfg Stel de configuratie van de vertragingsbeheerset in op sleutel. Dit configuratieveld is alleen beschikbaar in versie 3.0.3 en hoger. |
{[key: number]: IThrottleMgrConfig} |
Ongedefinieerde |
| userCookiePostfix Een optionele waarde die wordt gebruikt als naamachtervoegsel voor de gebruikerscookie-naam. Als dit niet is gedefinieerd, wordt er geen postfix toegevoegd aan de cookienaam van de gebruiker. |
tekenreeks | Ongedefinieerde |
Gedistribueerde tracering
Moderne architecturen voor cloud- en microservices hebben eenvoudige, onafhankelijk implementeerbare services ingeschakeld die de kosten verlagen en tegelijkertijd de beschikbaarheid en doorvoer verhogen. Het heeft echter al het hele systeem moeilijker gemaakt om te redeneren over en fouten op te sporen. Gedistribueerde tracering lost dit probleem op door een prestatieprofiel te bieden dat werkt als aanroepstacks voor cloud- en microservicesarchitecturen.
Azure Monitor biedt twee ervaringen voor het gebruik van gedistribueerde traceringsgegevens: de weergave voor transactiediagnose voor één transactie/aanvraag en de toepassingsoverzichtsweergave om te laten zien hoe systemen communiceren.
Application Insights kan elk onderdeel afzonderlijk bewaken en detecteren welk onderdeel verantwoordelijk is voor fouten of prestatievermindering met behulp van gedistribueerde telemetriecorrelatie. In dit artikel wordt het gegevensmodel, technieken voor contextdoorgifte, protocollen en implementatie van correlatietactieken uitgelegd op verschillende talen en platforms die worden gebruikt door Application Insights.
Gedistribueerde tracering inschakelen met Application Insights door middel van autoinstrumentatie of SDKs
De Application Insights-agents en SDK's voor .NET, .NET Core, Java, Node.jsen JavaScript ondersteunen allemaal systeemeigen gedistribueerde tracering.
Wanneer de juiste Application Insights SDK is geïnstalleerd en geconfigureerd, worden traceringsgegevens automatisch verzameld voor populaire frameworks, bibliotheken en technologieën door autocollectors voor SDK-afhankelijkheden. De volledige lijst met ondersteunde technologieën is beschikbaar in de documentatie voor automatisch verzamelen van afhankelijkheden.
Elke technologie kan ook handmatig worden bijgehouden met een aanroep naar TrackDependency op de TelemetryClient.
Gegevensmodel voor telemetriecorrelatie
Application Insights definieert een gegevensmodel voor gedistribueerde telemetriecorrelatie. Als u telemetrie wilt koppelen aan een logische bewerking, heeft elk telemetrie-item een contextveld met de naam operation_Id. Elk telemetrie-item in de gedistribueerde tracering deelt deze id. Zelfs als u telemetrie van één laag kwijtraakt, kunt u nog steeds telemetrie koppelen die door andere onderdelen is gerapporteerd.
Een gedistribueerde logische bewerking bestaat doorgaans uit een set kleinere bewerkingen die worden verwerkt door een van de onderdelen.
Telemetrie van aanvragen definieert deze bewerkingen. Elk telemetrie-aanvraagitem heeft een eigen id dat het uniek en wereldwijd identificeert. En alle telemetrie-items (zoals traceringen en uitzonderingen) die aan de aanvraag zijn gekoppeld, moeten de operation_parentId instellen op de waarde van de aanvraag id.
Afhankelijkheidstelemetrie vertegenwoordigt elke uitgaande bewerking, zoals een HTTP-aanroep naar een ander onderdeel. Het definieert ook een eigen id dat wereldwijd uniek is. Het telemetrieverzoek, dat door deze afhankelijkheidsaanroep is geïnitieerd, gebruikt dit id als operation_parentId.
U kunt een weergave van de gedistribueerde logische bewerking maken met behulp operation_Idvan , operation_parentIden request.id met dependency.id. Deze velden definiëren ook de causaliteitsvolgorde van telemetriegesprekken.
In een microservicesomgeving kunnen traceringen van onderdelen naar verschillende opslagitems gaan. Elk onderdeel kan een eigen verbindingsreeks hebben in Application Insights. Application Insights vraagt gegevens op uit elk opslagitem om telemetrie voor de logische bewerking op te halen.
Wanneer het aantal opslagitems groot is, hebt u een hint nodig over waar u hierna moet zoeken. Het Application Insights-gegevensmodel definieert twee velden om dit probleem op te lossen: request.source en dependency.target. Het eerste veld identificeert het onderdeel dat de afhankelijkheidsaanvraag heeft gestart. Het tweede veld identificeert welk onderdeel het antwoord van de afhankelijkheidsaanroep heeft geretourneerd.
Zie Querygegevens in Log Analytics-werkruimten, toepassingen en resources in Azure Monitor voor meer informatie over het uitvoeren van query's vanuit meerdere verschillende exemplaren.
Example
Laten we eens kijken naar een voorbeeld. In een toepassing met de naam Aandelenprijzen wordt de huidige marktkoers van een aandelen weergegeven met behulp van een externe API met de naam Aandelen. De toepassing Aandelenprijzen heeft een pagina met de naam Stock-pagina die de webbrowser van de client opent met behulp van GET /Home/Stock. De toepassing voert een query uit op de Stock-API met behulp van de HTTP-aanroep GET /api/stock/value.
U kunt de resulterende telemetrie analyseren door een query uit te voeren:
(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id
In de resultaten delen alle telemetrie-items de root operation_Id. Wanneer een Ajax-aanroep vanaf de pagina wordt gedaan, wordt er een nieuwe unieke id (qJSXU) toegewezen aan de telemetrie van de afhankelijkheid en wordt de id van de pageView gebruikt als operation_ParentId. De serveraanvraag gebruikt vervolgens de Ajax-id als operation_ParentId.
| itemType | naam | ID-kaart | operation_ParentId | operation_Id |
|---|---|---|---|---|
| pageView | Voorraadpagina | STYz |
STYz |
|
| afhankelijkheid | GET /Home/Stock | qJSXU |
STYz |
STYz |
| request | GET Home/Stock | KqKwlrSt9PA= |
qJSXU |
STYz |
| afhankelijkheid | GET /api/stock/value | bBrf2L7mm2g= |
KqKwlrSt9PA= |
STYz |
Wanneer de aanroep GET /api/stock/value naar een externe service wordt uitgevoerd, moet u de identiteit van die server weten, zodat u het veld op de dependency.target juiste manier kunt instellen. Wanneer de externe service geen ondersteuning biedt voor bewaking, target wordt deze ingesteld op de hostnaam van de service. Een voorbeeld is stock-prices-api.com. Maar als de service zichzelf identificeert door een vooraf gedefinieerde HTTP-header te retourneren, target bevat deze de service-identiteit waarmee Application Insights een gedistribueerde tracering kan maken door een query uit te voeren op telemetrie van die service.
Correlatieheaders met W3C TraceContext
Application Insights gaat over naar W3C Trace-Context, waarmee het volgende wordt gedefinieerd:
-
traceparent: draagt de globaal unieke bewerkings-id en unieke id van de aanroep. -
tracestate: Draagt systeemspecifieke traceringscontext.
De nieuwste versie van de Application Insights SDK ondersteunt het Trace-Context-protocol, maar mogelijk moet u zich hiervoor aanmelden. (Achterwaartse compatibiliteit met het vorige correlatieprotocol van de Application Insights SDK wordt gehandhaafd.)
Het HTTP-correlatieprotocol, ook wel Request-Id genoemd, wordt afgeschaft. Dit protocol definieert twee headers:
-
Request-Id: Draagt de Wereldwijd Unieke ID van de oproep. -
Correlation-Context: bevat de verzameling naam-waardeparen van de gedistribueerde traceringseigenschappen.
Application Insights definieert ook de extensie voor het HTTP-correlatieprotocol. Het maakt gebruik Request-Context van naam-waardeparen om de verzameling eigenschappen door te geven die door de directe beller of aanroeper worden gebruikt. De Application Insights SDK gebruikt deze header om de dependency.target velden en request.source velden in te stellen.
De W3C Trace-Context en Application Insights-gegevensmodellen worden op de volgende manier gemapt:
| Analyses van toepassingen | W3C TraceContext |
|---|---|
Id van Request en Dependency |
parent-id |
Operation_Id |
trace-id |
Operation_ParentId |
ouder-id van de parent span van deze span. Dit veld moet leeg zijn als het een hoofdspanne is. |
Zie het Application Insights-telemetriegegevensmodel voor meer informatie.
Ondersteuning voor gedistribueerde W3C-tracering inschakelen
Deze functie is standaard ingeschakeld voor JavaScript en de headers worden automatisch opgenomen wanneer het domein van de hostingpagina hetzelfde is als het domein waar de aanvragen naar worden verzonden (bijvoorbeeld de hostingpagina is example.com en de Ajax-aanvragen worden verzonden naar example.com). Als u de modus gedistribueerde tracering wilt wijzigen, gebruikt u het distributedTracingMode configuratieveld. AI_AND_W3C wordt standaard geleverd voor achterwaartse compatibiliteit met oudere services die door Application Insights zijn geïnstrueerd.
-
Voeg de volgende configuratie toe:
distributedTracingMode: DistributedTracingModes.W3C JavaScript (Web) SDK Loader script-gebaseerde installatie
Voeg de volgende configuratie toe:
distributedTracingMode: 2 // DistributedTracingModes.W3C
Als de XMLHttpRequest- of Fetch Ajax-aanvragen worden verzonden naar een andere domeinhost, inclusief subdomeinen, worden de correlatieheaders niet standaard opgenomen. Als u deze functie wilt inschakelen, stelt u het enableCorsCorrelation configuratieveld in op true. Als u deze optie instelt enableCorsCorrelationtrue, bevatten alle XMLHttpRequest- en Fetch Ajax-aanvragen de correlatieheaders. Als de toepassing op de server die wordt aangeroepen de header niet ondersteunt traceparent , kan de aanvraag mislukken, afhankelijk van of de browser/versie de aanvraag kan valideren op basis van welke headers de server accepteert. U kunt het correlationHeaderExcludedDomains configuratieveld gebruiken om het domein van de server uit te sluiten van correlatieheaderinjectie tussen onderdelen. U kunt correlationHeaderExcludedDomains: ['*.auth0.com'] bijvoorbeeld correlatieheaders uitsluiten van aanvragen die naar de Auth0-id-provider worden verzonden.
Belangrijk
Als u alle configuraties wilt zien die nodig zijn om correlatie in te schakelen, raadpleegt u de JavaScript-correlatiedocumentatie.
Telemetrie filteren en vooraf verwerken
U kunt code schrijven om uw telemetrie te filteren, te wijzigen of te verrijken voordat deze wordt verzonden vanuit de SDK. De verwerking omvat gegevens die worden verzonden vanuit de standaardtelemetriemodules, zoals het verzamelen van HTTP-aanvragen en het verzamelen van afhankelijkheden.
Filteren kan telemetrie wijzigen of verwijderen voordat deze wordt verzonden vanuit de SDK door deze te implementeren
ITelemetryProcessor. U kunt bijvoorbeeld het volume van telemetrie verminderen door aanvragen van robots uit te sluiten. In tegenstelling tot steekproeven hebt u volledige controle over wat er wordt verzonden of verwijderd, maar dit is van invloed op metrische gegevens op basis van geaggregeerde logboeken. Afhankelijk van hoe u items negeert, verliest u mogelijk ook de mogelijkheid om tussen gerelateerde items te navigeren.Voeg eigenschappen toe aan of wijzig deze voor alle telemetrie die vanuit uw app wordt verzonden door een
ITelemetryInitializer. U kunt bijvoorbeeld berekende waarden of versienummers toevoegen waarmee de gegevens in de portal moeten worden gefilterd.Steekproeven verminderen het volume van telemetrie zonder dat dit van invloed is op uw statistieken. Hiermee worden gerelateerde gegevenspunten bijeengehouden, zodat u ertussen kunt navigeren wanneer u een probleem diagnosticeren. In de portal worden de totale aantallen vermenigvuldigd om de steekproef te compenseren.
Opmerking
De SDK-API wordt gebruikt om aangepaste gebeurtenissen en metrische gegevens te verzenden.
Filtering
Deze techniek geeft u directe controle over wat er is opgenomen of uitgesloten van de telemetriestroom. Filteren kan worden gebruikt om te voorkomen dat telemetrie-items naar Application Insights verzonden worden. U kunt filteren met steekproeven of afzonderlijk gebruiken.
Als u telemetrie wilt filteren, schrijft u een telemetrieprocessor en registreert u deze bij TelemetryConfiguration. Alle telemetrie gaat via uw processor. U kunt ervoor kiezen om deze uit de stream te verwijderen of deze aan de volgende processor in de keten te geven. Telemetrie van de standaardmodules, zoals de HTTP-aanvraagverzamelaar en de afhankelijkheidsverzamelaar, en telemetrie die u zelf hebt bijgehouden, wordt opgenomen. U kunt bijvoorbeeld telemetrie filteren over aanvragen van robots of geslaagde afhankelijkheidsaanroepen.
Waarschuwing
Het filteren van de telemetrie die vanuit de SDK wordt verzonden met behulp van processors, kan de statistieken die u in de portal ziet, scheeftrekken en het lastig maken om gerelateerde items te volgen.
Overweeg in plaats daarvan steekproeven te gebruiken.
JavaScript-webtoepassingen
U kunt telemetrie filteren vanuit JavaScript-webtoepassingen met behulp van ITelemetryInitializer.
Maak een callbackfunctie voor een telemetrie-initialisator. De callback-functie neemt
ITelemetryItemals parameter, wat de gebeurtenis is die wordt verwerkt. Het retourneren vanfalsevanuit deze callback resulteert erin dat het telemetrie-item wordt uitgefilterd.var filteringFunction = (envelope) => { if (envelope.data.someField === 'tobefilteredout') { return false; } return true; };Voeg de callback van uw telemetrie-initialisatiefunctie toe:
appInsights.addTelemetryInitializer(filteringFunction);
ITelemetryProcessor en ITelemetryInitializer
Wat is het verschil tussen telemetrieprocessors en initialisatiefuncties voor telemetrie?
- Er zijn enkele overlappingen in wat u ermee kunt doen. Beide kunnen worden gebruikt om eigenschappen van telemetrie toe te voegen of te wijzigen, hoewel we u aanraden initialisatiefuncties voor dat doel te gebruiken.
- Telemetrie-initialisatiefuncties worden altijd uitgevoerd vóór telemetrieprocessors.
- Telemetrie-initialisatiefuncties kunnen meerdere keren worden aangeroepen. Standaard stellen ze geen eigenschap in die al is ingesteld.
- Met telemetrieprocessors kunt u een telemetrie-item volledig vervangen of verwijderen.
- Alle geregistreerde telemetrie-initialisatiefuncties worden aangeroepen voor elk telemetrie-item. Voor telemetrieprocessors garandeert SDK dat de eerste telemetrieprocessor wordt aangeroepen. Of de rest van de processors worden aangeroepen of niet, wordt beslist door de voorgaande telemetrieprocessors.
- Gebruik telemetrie-initialisatiefuncties om telemetrie te verrijken met meer eigenschappen of om een bestaande te overschrijven. Gebruik een telemetrieprocessor om telemetrie uit te filteren.
Eigenschappen toevoegen/wijzigen
Gebruik telemetrie-initialisatiefuncties om telemetrie te verrijken met aanvullende informatie of om telemetrie-eigenschappen te overschrijven die zijn ingesteld door de standaardtelemetriemodules.
Application Insights voor een webpakket verzamelt bijvoorbeeld telemetrie over HTTP-aanvragen. Standaard wordt elke aanvraag met een antwoordcode >=400 als mislukt gevlagd. Als u in plaats daarvan 400 als een succes wilt behandelen, kunt u een initialisatiefunctie voor telemetrie opgeven waarmee de eigenschap succes wordt ingesteld.
Als u een initialisatiefunctie voor telemetrie opgeeft, wordt deze aangeroepen wanneer een van de methoden Track*() wordt aangeroepen. Deze initialisatiefunctie bevat Track() methoden die worden aangeroepen door de standaardtelemetriemodules. Deze modules stellen standaard geen eigenschappen in die al door een initialisatiefunctie zijn ingesteld. Initialisatiefuncties voor telemetrie worden aangeroepen voordat telemetrieprocessors worden aangeroepen, dus alle verrijkingen die door initialisatiefuncties worden uitgevoerd, zijn zichtbaar voor processors.
Initialisatiefuncties voor JavaScript-telemetrie
Voeg indien nodig een Initialisatiefunctie voor JavaScript-telemetrie in. Zie Initializers voor telemetrie voor de JavaScript SDK voor Application Insights voor meer informatie over de initialisatiefuncties voor telemetrie.
Voeg een telemetrie-initialisatiefunctie in door de callback-functie onInit toe te voegen in de JavaScript-SDK-configuratie (Web) SDK Loader Script:
<script type="text/javascript">
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
onInit: function (sdk) {
sdk.addTelemetryInitializer(function (envelope) {
envelope.data = envelope.data || {};
envelope.data.someField = 'This item passed through my telemetry initializer';
});
}, // Once the application insights instance has loaded and initialized this method will be called
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
cfg: { // Application Insights Configuration
connectionString: "YOUR_CONNECTION_STRING"
}});
</script>
Zie Application Insights Export Data Model voor een samenvatting van de niet-aangepaste eigenschappen die beschikbaar zijn voor het telemetrie-item.
U kunt zoveel initialisaties toevoegen als u wilt. Ze worden aangeroepen in de volgorde waarin ze worden toegevoegd.
Een cloudrolnaam en cloudrolinstantie toevoegen
Gebruik een initialisatiefunctie voor telemetrie om de ai.cloud.role en ai.cloud.roleInstance tags in te stellen. Deze tags definiëren hoe uw onderdeel wordt weergegeven in het toepassingsoverzicht in Azure Monitor.
appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
envelope.tags["ai.cloud.role"] = "your role name";
envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});
Cookiebeheer
Vanaf versie 2.6.0 biedt de Azure Application Insights JavaScript SDK instance-gebaseerd cookiebeheer dat na de initialisatie kan worden uitgeschakeld en opnieuw kan worden ingeschakeld.
Als u cookies tijdens de initialisatie hebt uitgeschakeld met behulp van de disableCookiesUsage of cookieCfg.enabled configuraties, kunt u ze opnieuw inschakelen met behulp van de setEnabled functie van het ICookieMgr-object.
Het instantie-gebaseerde cookiebeheer vervangt de eerdere globale functies uit CoreUtils van disableCookies(), setCookie(), getCookie() en deleteCookie().
Als u wilt profiteren van de verbeteringen die zijn geïntroduceerd in versie 2.6.0, is het raadzaam om de globale functies niet meer te gebruiken.
Cookieconfiguratie
ICookieMgrConfig is een cookieconfiguratie voor op exemplaren gebaseerd cookiebeheer dat is toegevoegd in 2.6.0. Met de beschikbare opties kunt u het gebruik van cookies door de SDK in- of uitschakelen. U kunt ook aangepaste cookiedomeinen en paden instellen en de functies aanpassen voor het ophalen, instellen en verwijderen van cookies.
De ICookieMgrConfig-opties worden gedefinieerd in de volgende tabel.
| Naam | Typen | Standaard | Beschrijving |
|---|---|---|---|
| ingeschakeld | booleaan | waar | Het huidige exemplaar van de SDK gebruikt deze Booleaanse waarde om aan te geven of het gebruik van cookies is ingeschakeld. Als dit onwaar is, slaat het exemplaar van de SDK die door deze configuratie is geïnitialiseerd, geen gegevens van cookies op of leest deze niet. |
| domein | tekenreeks | Nul | Aangepast cookiedomein. Het is handig als u Application Insights-cookies wilt delen tussen subdomeinen. Als dit niet wordt opgegeven, wordt de waarde uit de hoofdwaarde cookieDomain gebruikt. |
| pad | tekenreeks | / | Hiermee geeft u het pad op dat voor de cookie moet worden gebruikt; als deze niet is opgegeven, wordt de waarde uit de root cookiePath gebruikt. |
| Cookies negeren | tekenreeks[] | Ongedefinieerde | Geef de cookienaam(en) op die moeten worden genegeerd, waardoor een overeenkomende cookienaam nooit wordt gelezen of geschreven. Ze kunnen nog steeds expliciet worden gereinigd of verwijderd. U hoeft de naam in de blockedCookies configuratie niet te herhalen. (sinds v2.8.8) |
| geblokkeerdeCookies | tekenreeks[] | Ongedefinieerde | Geef de cookienaam(en) op die nooit moeten worden geschreven. Het voorkomt dat er cookienaam wordt gemaakt of bijgewerkt, maar ze kunnen nog steeds worden gelezen, tenzij ze ook in de ignoreCookies zijn opgenomen. Ze kunnen nog steeds worden verwijderd of expliciet worden verwijderd. Indien niet opgegeven, wordt standaard dezelfde lijst in ignoreCookies gebruikt. (Sinds v2.8.8) |
| getCookie | (name: string) => string |
Nul | Functie om de benoemde cookiewaarde op te halen, indien niet opgegeven, wordt de interne cookieparsering/caching gebruikt. |
| cookie instellen | (name: string, value: string) => void |
Nul | Functie voor het instellen van de benoemde cookie met de opgegeven waarde, alleen aangeroepen bij het toevoegen of bijwerken van een cookie. |
| delCookie | (name: string, value: string) => void |
Nul | Functie voor het verwijderen van de benoemde cookie met de opgegeven waarde, gescheiden van setCookie om te voorkomen dat de waarde moet worden geparseerd om te bepalen of de cookie wordt toegevoegd of verwijderd. Als dit niet is opgegeven, wordt gebruikgemaakt van het interne parseren/opslaan van cookies. |
Bronkaart
Ondersteuning voor sourcemaps helpt u bij het debuggen van minified JavaScript-code met de mogelijkheid om de verkleinde stack in uw exceptie-telemetrie terug te zetten naar leesbare vorm.
- Compatibel met alle huidige integraties in het deelvenster Uitzonderingsdetails
- Ondersteunt alle huidige en toekomstige JavaScript SDK's, inclusief Node.JS, zonder dat er een SDK-upgrade nodig is
Koppeling naar Blob Storage-account
Application Insights ondersteunt het uploaden van brontoewijzingen naar de blobcontainer van uw Azure Storage-account. U kunt sourcemaps gebruiken om de aanroepstack op de pagina met end-to-end transactiegegevens te de-minificeren. U kunt ook sourcemaps gebruiken om elke uitzondering die is verzonden door de JavaScript SDK of de Node.js SDK te de-minificeren.
Een nieuw opslagaccount en blobcontainer maken
Als u al een bestaand opslagaccount of blobcontainer hebt, kunt u deze stap overslaan.
Maak een blobcontainer in uw opslagaccount. Stel openbaar toegangsniveau in op Privé om ervoor te zorgen dat uw bronkaarten niet openbaar toegankelijk zijn.
Stuur uw bronkaarten naar uw blobcontainer
Integreer uw pijplijn voor continue implementatie met uw opslagaccount door deze te configureren om uw brontoewijzingen automatisch te uploaden naar de geconfigureerde blobcontainer.
U kunt brontoewijzingen uploaden naar uw Azure Blob Storage-container met dezelfde mapstructuur waarmee ze zijn gecompileerd en geïmplementeerd. Een veelvoorkomend gebruiksvoorbeeld is om een map voor de implementatie te prefixen met de bijbehorende versie, bijvoorbeeld 1.2.3/static/js/main.js. Wanneer u deminifieert via een Azure-blobcontainer genaamd sourcemaps, probeert de pijplijn een bronkaart op te halen die zich bevindt in sourcemaps/1.2.3/static/js/main.js.map.
Bronkaarten uploaden via Azure Pipelines (aanbevolen)
Als u Azure Pipelines gebruikt om uw toepassing continu te bouwen en te implementeren, voegt u een Azure-bestandskopietaak toe aan uw pijplijn om uw brontoewijzingen automatisch te uploaden.
Configureer uw Application Insights-resource met een opslagaccount voor source maps
U hebt twee opties om uw Application Insights-resource te configureren met een opslagaccount voor source maps.
Tabblad Details van end-to-end transactie
Selecteer Op het tabblad Details van end-to-end transactie de optie Unminify. Stel uw resource in als deze niet is ingesteld.
- Bekijk in Azure Portal de details van een uitzondering die wordt geminimificeerd.
- Selecteer Deminificeren.
- Als uw resource niet is geconfigureerd, configureert u deze.
Tabblad Eigenschappen
Ga als volgt te werk om het opslagaccount of de blobcontainer te configureren of te wijzigen die is gekoppeld aan uw Application Insights-resource:
Ga naar het tabblad Eigenschappen van uw Application Insights-resource.
Selecteer Bronkaart-Blobcontainer wijzigen.
Selecteer een andere blobcontainer als de brontoewijzingscontainer.
Kies Toepassen.
De niet-gemininifieerde callstack weergeven
Als u de niet-geverifieerde aanroepstack wilt weergeven, selecteert u een uitzonderingstelemetrie-item in Azure Portal, zoekt u de brontoewijzingen die overeenkomen met de aanroepstack en sleept u de brontoewijzingen naar de aanroepstack in Azure Portal. De bronkaart moet dezelfde naam hebben als het bronbestand van een stackframe, maar met een map extensie.
Als u problemen ondervindt met ondersteuning voor brontoewijzingen voor JavaScript-toepassingen, raadpleegt u Ondersteuning voor brontoewijzingen oplossen voor JavaScript-toepassingen.
Boom schudden
Tree shaking verwijdert ongebruikte code uit de uiteindelijke JavaScript-bundel.
Als u wilt profiteren van boomschudden, importeert u alleen de benodigde onderdelen van de SDK in uw code. Door dit te doen, wordt ongebruikte code niet opgenomen in de uiteindelijke bundel, waardoor de grootte wordt verkleind en de prestaties worden verbeterd.
Verbeteringen en aanbevelingen voor boomschudden
In versie 2.6.0 hebben we het interne gebruik van deze statische helperklassen afgeschaft en verwijderd om de ondersteuning voor algoritmen voor het schudden van bomen te verbeteren. Hiermee kunnen npm-pakketten ongebruikte code veilig verwijderen.
CoreUtilsEventHelperUtilUrlHelperDateTimeUtilsConnectionStringParser
De functies worden nu geëxporteerd als top-level entiteiten van de modules, waardoor u uw code gemakkelijker kunt herstructureren voor betere tree-shaking.
De statische klassen zijn gewijzigd in const-objecten die verwijzen naar de nieuwe geëxporteerde functies en toekomstige wijzigingen worden gepland om de verwijzingen verder te herstructureren.
Boomschudende afgeschafte functies en vervangingen
Deze sectie is alleen van toepassing op u als u de afgeschafte functies gebruikt en u de pakketgrootte wilt optimaliseren. U wordt aangeraden de vervangende functies te gebruiken om de grootte te verkleinen en alle versies van Internet Explorer te ondersteunen.
| Bestaand | Vervanging |
|---|---|
| CoreUtils | @microsoft/applicationinsights-core-js |
| CoreUtils._canUseCookies | Geen. Gebruik niet omdat dit ervoor zorgt dat alle CoreUtils-verwijzingen worden opgenomen in uw uiteindelijke code. Pas uw cookiebeheer aan om de appInsights.getCookieMgr().setEnabled(true/false)-waarde in te stellen en appInsights.getCookieMgr().isEnabled() om de waarde te controleren. |
| CoreUtils.isTypeof | isTypeof |
| CoreUtils.isUndefined | isOngedefinieerd |
| CoreUtils.isNullOrUndefined (controleert of een waarde nul of niet gedefinieerd is) | isNulOfOngedefinieerd |
| CoreUtils.hasOwnProperty | hasOwnProperty (een methode die controleert of een object een specifieke eigenschap heeft) |
| CoreUtils.isFunction | isFunction |
| CoreUtils.isObject | isObject |
| CoreUtils.isDate | isDatum |
| CoreUtils.isArray | isArray |
| CoreUtils.isError | isError |
| CoreUtils.isString | isString |
| CoreUtils.isNumber | isNumber |
| CoreUtils.isBoolean (controleert of een waarde een boolean is) | is Booleaanse waarde |
| CoreUtils.toISOString | toISOString of getISOString |
| CoreUtils.arrForEach | arrForEach |
| CoreUtils.arrIndexOf | arrIndexOf |
| CoreUtils.arrMap | arrMap |
| CoreUtils.arrReduce | arrReduce |
| CoreUtils.strTrim | strTrim |
| CoreUtils.objCreate | objCreateFn |
| CoreUtils.objKeys | objKeys |
| CoreUtils.objDefineAccessors | objDefineAccessors |
| CoreUtils.addEventHandler | addEventHandler |
| CoreUtils.dateNow | datumNu |
| CoreUtils.isIE | isIE |
| CoreUtils.cookiesUitschakelen | disableCookies Het verwijzen naar een van beide zorgt ervoor dat CoreUtils wordt gebruikt voor compatibiliteit met eerdere versies. Uw cookieafhandeling herstructureren om de appInsights.getCookieMgr().setEnabled(false) |
| CoreUtils.newGuid | newGuid |
| CoreUtils.perfNow | perfNow |
| CoreUtils.newId | nieuweId |
| CoreUtils.randomValue | willekeurigeWaarde |
| CoreUtils.random32 | random32 |
| CoreUtils.mwcRandomSeed | mwcRandomSeed |
| CoreUtils.mwcRandom32 | mwcRandom32 |
| CoreUtils.generateW3CId | generateW3CId |
| EventHelper | @microsoft/applicationinsights-core-js |
| EventHelper.Attach | attachEvent |
| EventHelper.AttachEvent | attachEvent |
| EventHelper.Loskoppelen | ontkoppel evenement |
| EventHelper.DetachEvent | ontkoppel evenement |
| Util | @microsoft/applicationinsights-common-js |
| Util.NietGespecificeerd | strNietGespecificeerd |
| Util.createDomEvent | createDomEvent |
| Util.uitschakelenOpslag | utlDisableStorage |
| Util.isInternalApplicationInsightsEndpoint | isInterneApplicatieInzichtenEndpoint |
| Util.canUseLocalStorage | utlCanUseLocalStorage |
| Util.getStorage | utlGetLocalStorage |
| Util.setStorage | utlSetLocalStorage |
| Util.removeStorage | utlVerwijderOpslag |
| Util.canUseSessionStorage | UtilKanSessieOpslagGebruiken |
| Util.getSessionStorageKeys | utlGetSessionStorageKeys |
| Util.getSessionStorage (sessieopslag verkrijgen) | utlGetSessionStorage (voor toegang tot sessieopslag) |
| Util.setSessionStorage | utlSetSessionStorage |
| Util.removeSessionStorage | utlVerwijderSessieOpslag |
| Util.disableCookies | disableCookies Het verwijzen naar een van beide zorgt ervoor dat CoreUtils wordt gebruikt voor compatibiliteit met eerdere versies. Uw cookieafhandeling herstructureren om de appInsights.getCookieMgr().setEnabled(false) |
| Util.kanCookiesGebruiken | kanCookiesGebruiken Het verwijzen naar een van beide zorgt ervoor dat CoreUtils wordt gebruikt voor compatibiliteit met eerdere versies. Uw cookieafhandeling herstructureren om de appInsights.getCookieMgr().isEnabled() |
| Util.disallowsSameSiteNone | uaDisallowsSameSiteNone |
| Util.setCookie | coreSetCookie Verwijzing zorgt ervoor dat Naar CoreUtils wordt verwezen voor compatibiliteit met eerdere versies. Uw cookieafhandeling herstructureren om de appInsights.getCookieMgr().set(name: string, value: string) |
| Util.stringToBoolOrDefault | stringToBoolOrDefault |
| Util.getCookie | coreGetCookie Verwijzing zorgt ervoor dat Naar CoreUtils wordt verwezen voor compatibiliteit met eerdere versies. Uw cookieafhandeling herstructureren om de appInsights.getCookieMgr().get(name: string) |
| Util.deleteCookie (VerwijderCookie) | coreVerwijderCookie Verwijzing zorgt ervoor dat Naar CoreUtils wordt verwezen voor compatibiliteit met eerdere versies. Uw cookieafhandeling herstructureren om de appInsights.getCookieMgr().del(name: string, path?: string) |
| Util.trim | strTrim |
| Util.nieuwId | nieuweId |
| Util.random32 | --- Geen vervanging, herstructureer uw code om de kern random32(true) te gebruiken |
| Util.generateW3CId | generateW3CId |
| Util.isArray | isArray |
| Util.isError | isError |
| Util.isDate | isDatum |
| Util.toISOStringForIE8 | toISOString |
| Util.getIEVersion | getIEVersion |
| Util.msToTimeSpan | msToTimeSpan |
| Util.isCrossOriginError | isCrossOriginFout |
| Util.dump | dumpObj |
| Util.getExceptionName | getExceptionName |
| Util.addEventHandler | attachEvent |
| Util.IsBeaconApiSupported | isBeaconApiOndersteund |
| Util.getExtension | getExtensionByName |
| UrlHelper | @microsoft/applicationinsights-common-js |
| UrlHelper.parseUrl | urlParseUrl |
| UrlHelper.getAbsoluteUrl | urlGetAbsoluteUrl |
| UrlHelper.getPathName (padnaam ophalen) | urlGetPathName |
| UrlHelper.getCompeteUrl | urlKrijgVolledigeUrl |
| UrlHelper.parseHost | urlParseHost |
| UrlHelper.parseFullHost | urlParseFullHost |
| DateTimeUtils | @microsoft/applicationinsights-common-js |
| DateTimeUtils.Now | dateTimeUtilsNu |
| DateTimeUtils.GetDuration | datumTijdUtilsDuur |
| ConnectionStringParser | @microsoft/applicationinsights-common-js |
| ConnectionStringParser.parse | verbindingsreeks parseren |
Servicemeldingen
Servicemeldingen zijn een functie die is ingebouwd in de SDK om bruikbare aanbevelingen te bieden om ervoor te zorgen dat uw telemetriestromen ononderbroken naar Application Insights stromen. U kunt de meldingen zien als een uitzonderingsbericht in Application Insights. We zorgen ervoor dat meldingen relevant zijn voor u op basis van uw SDK-instellingen en we passen de uitgebreidheid aan op basis van de urgentie van de aanbeveling. We raden u aan servicemeldingen aan te laten staan, maar u kunt zich afmelden via de featureOptIn configuratie.
Momenteel worden er geen actieve meldingen verzonden.
Servicemeldingen worden beheerd door de JavaScript SDK, die regelmatig een openbaar JSON-bestand peilt om deze meldingen te beheren en bij te werken. Als u de polling van de JavaScript SDK wilt uitschakelen, schakelt u de featureOptIn-modus uit.
Probleemoplossing
Zie het speciale artikel over probleemoplossing.
Volgende stappen
- Zie veelgestelde vragen over javaScript SDK-configuratie voor meer informatie over veelgestelde vragen.
- Gebruik bijhouden
- Azure-bestandskopietaak
- Naslaginformatie over Azure Monitor-gegevenstypen en SDK-code voor JavaScript SDK.