Konfigurace sady JavaScript SDK služby Microsoft Azure Monitor Application Insights

JavaScript SDK pro Aplikace Azure Insights poskytuje konfiguraci pro sledování, monitorování a ladění webových aplikací.

Konfigurace sady SDK

Tato konfigurační pole jsou volitelná a výchozí hodnota false, pokud není uvedeno jinak. Následující oddíly seskupují pole podle účelu.

Pokyny k přidání konfigurace sady SDK najdete v tématu Přidání konfigurace sady SDK.

Soubory cookie a úložiště relací

disableCookiesUsage použijte k úplnému zakázání souborů cookie, cookieCfg k úplné konfiguraci souborů cookie podle instance, cookieDomain a cookiePath k omezení rozsahu souborů cookie napříč subdoménami nebo aplikačními branami a namePrefix, sessionCookiePostfix a userCookiePostfix k přizpůsobení názvů souborů cookie a localStorage.

Pole Konfigurace Typ hodnoty Výchozí hodnota
cookieCfg

Ve výchozím nastavení je povolené použití souborů cookie, viz nastavení ICookieCfgConfig pro úplné výchozí hodnoty.
ICookieCfgConfig
[Volitelné]
(Od 2.6.0)
nedefinovaný
doména cookie (cookieDomain)

Vlastní doména souborů cookie. Je užitečné, pokud chcete sdílet soubory cookie Application Insights napříč subdoménami.
(Od verze 2.6.0) Pokud cookieCfg.domain je definována, má přednost před touto hodnotou.
alias pro cookieCfg.domain
[Volitelné]
null
cookiePath

Vlastní cesta cookie. Je užitečné, pokud chcete sdílet soubory cookie Application Insights za aplikační bránou.
Pokud cookieCfg.path je definováno, má přednost.
alias pro cookieCfg.path
[Volitelné]
(Od 2.6.0)
null
zakázatPoužíváníCookies

Výchozí hodnota je false. Logická hodnota, která označuje, jestli se má zakázat používání souborů cookie sadou SDK. Pokud je pravda, sada SDK neukládá ani nečte žádná data ze souborů cookie.
(Od verze 2.6.0) Pokud cookieCfg.enabled je definována, má přednost. Po inicializaci prostřednictvím core.getCookieMgr().setEnabled(true) je možné znovu povolit použití souborů cookie.
alias pro cookieCfg.enabled
[Volitelné]
false (nepravda)
předpona jména

Volitelná hodnota, která se používá jako přípona názvu pro localStorage, a názvu relační cookie.
řetězec nedefinovaný
sessionCookiePostfix

Volitelná hodnota, která se používá jako přípona názvu pro název souboru cookie relace. Pokud není definováno, namePrefix se použije jako postfix pro název relace cookie.
řetězec nedefinovaný
userCookiePostfix

Volitelná hodnota, která se používá jako přípona názvu uživatelského souboru cookie. Pokud není definováno, není k uživatelskému názvu souboru cookie přidána žádná přípona.
řetězec nedefinovaný

Sledování Ajaxu a Fetche

Automatické shromažďování dat pro Ajax a Fetch je rozděleno do pěti oblastí funkcí: přepínače zapnuto/vypnuto (disableAjaxTracking, disableFetchTracking, disableXhr), zachytávání hlaviček požadavků a odpovědí (enableRequestHeaderTracking, enableResponseHeaderTracking, ignoreHeaders, customHeaders), filtrování na základě adresy URL (excludeRequestFromAutoTrackingPatterns), dodatečná vyhledávání window.performance (enableAjaxPerfTracking, ajaxPerfLookupDelay, maxAjaxPerfLookupAttempts, enableAjaxErrorStatusText) a řízení objemu na stránku a obohacení jednotlivých volání (maxAjaxCallsPerView, addRequestContext).

Přepínače automatického shromažďování

Pomocí těchto polí můžete povolit nebo zakázat automatickou kolekci požadavků Ajax a Fetch a zvolit přenos (XHR, Fetch nebo Beacon).

Pole Konfigurace Typ hodnoty Výchozí hodnota
zakázatSledováníAjaxu

Pokud je to pravda, Ajax volání nejsou automaticky shromažďována. Výchozí hodnota je False.
Boolean false (nepravda)
deaktivovatSledováníFetch

Výchozí nastavení disableFetchTracking je false, což znamená, že je povoleno. Ve verzích starších než 2.8.10 však byla ve výchozím nastavení zakázaná. Při nastavení na true se požadavky na načtení automaticky neshromažďují. Výchozí nastavení se změnilo na truefalse ve verzi 2.8.0.
Boolean false (nepravda)
disableXhr

Nepoužívejte XmlHttpRequest nebo XDomainRequest (pro Internet Explorer < verze 9) jako výchozí. Místo toho se pokuste použít fetch() nebo sendBeacon. Pokud není k dispozici žádný jiný přenos, použije XMLHttpRequest.
Boolean false (nepravda)
jeApiMajákuZakázané

Pokud je false, sada SDK odešle veškerou telemetrii pomocí rozhraní Beacon API .
Boolean pravda
onunloadDisableBeacon

Výchozí hodnota je false. Po zavření panelu odešle sada SDK veškerou zbývající telemetrii pomocí rozhraní Beacon API.
Boolean false (nepravda)
onunloadDisableFetch

Pokud je podpora pro fetch keepalive, nepoužívejte ji k odesílání událostí během procesu odhlašování, může se stále vrátit k fetch() bez keepalive.
Boolean false (nepravda)

Sledování záhlaví

Pomocí těchto polí můžete do telemetrie závislostí zahrnout hlavičky požadavků nebo odpovědí AJAX a Fetch, přidat další hlavičky pro vlastní koncové body nebo odfiltrovat citlivé hlavičky z protokolu.

Pole Konfigurace Typ hodnoty Výchozí hodnota
povolit sledování hlaviček požadavků

Pokud je hodnota true, hlavičky požadavku AJAX &Fetch jsou sledovány, výchozí hodnota je false. Pokud není nakonfigurovaná funkce ignoreHeaders, nejsou zaprotokolovány hlavičky autorizace a klíče X-API.
Boolean false (nepravda)
povolitSledováníHlavičekOdpovědi

Pokud je hodnota true, hlavičky odpovědi požadavku AJAX &Fetch se sledují, výchozí hodnota je false. Pokud funkce ignoreHeaders není nakonfigurovaná, hlavička WWW-Authenticate se nezaprotokoluje.
Boolean false (nepravda)
ignorovatZáhlaví

Záhlaví žádostí a odpovědí Ajax a Fetch budou ignorována v záznamech protokolu. Pokud chcete přepsat nebo zrušit výchozí nastavení, přidejte do konfigurace pole se všemi záhlavími, která se mají vyloučit, nebo prázdné pole.
řetězec[] ["Autorizace", "X-API-Key", "WWW-Authenticate"]
customHeaders

Možnost poskytovat uživateli dodatečné hlavičky při použití vlastního koncového bodu. Vlastní hlavičky se nepřidávají při vypnutí prohlížeče, pokud se používá odesílač beaconů. A přidávání vlastních hlaviček se nepodporuje v IE9 nebo starších verzích.
[{header: string, value: string}] nedefinovaný

Filtrování adres URL

Pomocí tohoto pole vyloučíte konkrétní adresy URL požadavků z automatického sledování požadavků AJAX a Fetch.

Pole Konfigurace Typ hodnoty Výchozí hodnota
vyloučitPožadavekZAutomatickýchSledovacíchVzorů

Zadejte způsob, jak vyloučit konkrétní trasu z automatického sledování pro požadavek XMLHttpRequest nebo Fetch. Je-li definován požadavek Ajax/fetch a adresa URL požadavku odpovídá vzorům regulárních výrazů, automatické sledování se vypne. Výchozí hodnota není definována.
string[] | RegExp[] nedefinovaný

Zjišťování výkonu

Pomocí těchto polí můžete zahrnout do telemetrie závislostí Ajaxu další časové údaje window.performance, upravit zpoždění vyhledávání a počet opakovaných pokusů a zahrnout text chyby v odpovědi u neúspěšných požadavků Ajax.

Pole Konfigurace Typ hodnoty Výchozí hodnota
enableAjaxPerfTracking (povolit sledování výkonu Ajaxu)

Výchozí hodnota je false. Příznak pro povolení vyhledávání a zahrnutí dodatečných časování z prohlížeče window.performance do hlášených metrik Ajax (XHR a fetch).
Boolean false (nepravda)
ajaxPerfLookupDelay

Výchozí hodnota je 25 ms. Doba čekání před opětovným pokusem o nalezení časování výkonu Windows.performance pro požadavek Ajax; doba je uvedena v milisekundách a předává se přímo do funkce setTimeout().
číselné 25
maximální počet pokusů maxAjaxPerfLookupAttempts

Výchozí hodnota je 3. Maximální počet, kolikrát se má hledat časování window.performance (pokud je k dispozici) je povinné. Ne všechny prohlížeče naplňují okno.performance před hlášením konce požadavku XHR. Pro požadavky na načtení se přidá po dokončení.
číselné 3
enableAjaxErrorStatusText

Výchozí hodnota je false. Pokud je hodnota true, zahrňte logickou hodnotu textu chybových dat odpovědi v události závislosti při neúspěšných požadavcích AJAX.
Boolean false (nepravda)

Ovládání hlasitosti a vylepšení

Pomocí maxAjaxCallsPerView omezíte shromažďování dat Ajax na jedno zobrazení stránky a pomocí addRequestContext obohatíte telemetrii závislostí o funkci zpětného volání na začátku každého volání API.

Pole Konfigurace Typ hodnoty Výchozí hodnota
maxAjaxCallsPerView

Výchozí hodnota 500 – určuje, kolik ajaxových volání se monitoruje na jedno zobrazení stránky. Pokud chcete monitorovat všechna (neomezená) volání Ajax na stránce, nastavte na hodnotu -1.
číselné 500
přidat KontextPožadavku

Poskytnout způsob, jak na začátku volání rozhraní API rozšířit záznamy závislostí kontextem. Výchozí hodnota není definována. Musíte zkontrolovat, zda xhr existuje, pokud konfigurujete související kontext xhr. Pokud konfigurujete kontext související s fetch request, musíte zkontrolovat, jestli fetch response a fetch existují. V opačném případě možná nebudete dostávat potřebná data.
(requestContext: IRequestionContext) => {[klíč: řetězec]: jakýkoli} nedefinovaný

Distribuované trasování a korelace

Slouží distributedTracingMode k výběru formátu záhlaví W3C, AI nebo AI_AND_W3C. Slouží disableCorrelationHeaders k úplné vypnutí korelace. Pomocí enableCorsCorrelation můžete do požadavků z jiného původu vkládat hlavičky korelace. Slouží appId k nastavení pevné identity korelace. Použijte correlationHeaderDomains, correlationHeaderExcludedDomainsa correlationHeaderExcludePatterns k povoleným nebo blokovým seznamům konkrétních cílových domén nebo vzorů adres URL.

Pole Konfigurace Typ hodnoty Výchozí hodnota
ID aplikace

AppId se používá pro korelaci mezi závislostmi AJAX, ke kterým dochází na straně klienta s požadavky na straně serveru. Když je rozhraní Beacon API povolené, nejde ho použít automaticky, ale můžete ho nastavit ručně v konfiguraci. Výchozí hodnota je null
řetězec null
korelaceHlavickaDomény

Povolení hlaviček korelace pro konkrétní domény
řetězec[] nedefinovaný
vyloučenéDoményKorelacíHlaviček

Zakázání hlaviček korelace pro konkrétní domény
řetězec[] nedefinovaný
correlationHeaderExcludePatterns

Zakázat hlavičky korelace pomocí regulárních výrazů
regex[] nedefinovaný
zakázat hlavičky korelace

Pokud je false, sada SDK přidá do všech požadavků závislostí dvě hlavičky (Request-Id a Request-Context), aby je korelovala s odpovídajícími požadavky na straně serveru. Výchozí hodnota je False.
Boolean false (nepravda)
režim distribuovaného sledování

Nastaví režim distribuovaného trasování. Pokud je nastavený režim AI_AND_W3C nebo režim W3C, vygenerují se hlavičky kontextu trasování W3C (traceparent/tracestate) a zahrnou se do všech odchozích požadavků. AI_AND_W3C je poskytována kvůli zajištění kompatibility se staršími instrumentovanými službami Application Insights.
číselná nebo DistributedTracingModes DistributedTracing Modes.AI_AND_W3C
enableCorsCorrelation

Pokud je pravda, sada SDK přidá do všech požadavků CORS dvě hlavičky (Request-Id a Request-Context), aby korelovala odchozí závislosti AJAX s odpovídajícími požadavky na straně serveru. Výchozí hodnota je false
Boolean false (nepravda)

Zobrazení stránek a sledování tras

Slouží enableAutoRouteTracking ke sledování změn tras SPA. Použijte autoTrackPageVisitTime k zaznamenání doby strávené na stránce pro předchozí zobrazení. Použijte isBrowserLinkTrackingEnabled ke sledování požadavků Browser Link. Pomocí overridePageViewDuration vypočítáte dobu trvání zobrazení stránky z volání trackPageView namísto rozhraní API Navigation Timing.

Pole Konfigurace Typ hodnoty Výchozí hodnota
automatickySledovatČasNávštěvyStránky

Pokud ano, v zobrazení stránky se čas zobrazení předchozí instrumentované stránky sleduje a odesílá jako telemetrie a pro aktuální zobrazení stránky se spustí nový časovač. Odešle se jako vlastní metrika pojmenovaná PageVisitTime v milliseconds a vypočítá se pomocí funkce Date now() (pokud je k dispozici), a pokud není k dispozici (v IE8 nebo méně), použije se (new Date()).getTime(). Výchozí hodnota je False.
Boolean false (nepravda)
povolitAutomatickéSledováníTrasy

Automaticky sledovat změny tras v jednostránkové aplikaci (SPA). Pokud je pravda, každá změna trasy odešle nové zobrazení Stránky do Application Insights. Změny trasování hash (example.com/foo#bar) se také zaznamenávají jako nové zobrazení stránky.
Poznámka: Pokud toto pole povolíte, nepovolujte history objekt pro konfiguraci směrovače React, protože získáte více událostí zobrazení stránky.
Boolean false (nepravda)
Following the assumption that it should remain in English due to its technical nature and usage in programming or software settings: cs-CZ: isBrowserLinkTrackingEnabled

Výchozí hodnota je False. Pokud je pravda, sada SDK sleduje všechny žádosti o propojení prohlížeče.
Boolean false (nepravda)
overridePageViewDuration

Pokud je pravda, výchozí chování trackPageView se změní na záznam konce intervalu doby trvání zobrazení stránky při volání trackPageView. Pokud pro trackPageView není k dispozici hodnota false a žádná vlastní doba trvání, vypočítá se výkon zobrazení stránky pomocí rozhraní API pro časování navigace. Výchozí hodnota je False.
Boolean false (nepravda)

Sledování výjimek

Umožňuje disableExceptionTracking vyjádřit výslovný nesouhlas s automatickým shromažďováním výjimek a enableUnhandledPromiseRejectionTracking zahrnout neošetřené odmítnutí slibů jako chyby JavaScriptu.

Pole Konfigurace Typ hodnoty Výchozí hodnota
vypnutíSledováníVýjimek

Je-li nastavena na hodnotu true, SDK automaticky neshromažďuje výjimky. Výchozí hodnota je False.
Boolean false (nepravda)
povolit sledování neošetřených zamítnutí příslibu

Je-li tato možnost povolena, sada SDK automaticky shromažďuje neošetřená odmítnutí promis jako chyby JavaScriptu. Pokud je disableExceptionTracking true (nesledovat výjimky), hodnota konfigurace se ignoruje a neošetřené odmítnutí slibů se neohlásí.
Boolean false (nepravda)

Vzorkování, dávkování a úložiště

Pomocí samplingPercentage nastavíte pevnou četnost vzorkování, pomocí maxBatchInterval a maxBatchSizeInBytes vyladíte chování dávkového odesílání, pomocí enableSessionStorageBuffer a isStorageUseDisabled určíte, zda SDK ukládá neodeslanou telemetrii do úložiště relace nebo místního úložiště, pomocí eventsLimitInMem omezíte velikost vyrovnávací paměti, pomocí isRetryDisabled zakážete opakování pokusů při přechodných selháních, pomocí disableFlushOnBeforeUnload přeskočíte vyprázdnění při opuštění stránky a disableTelemetry slouží jako globální vypínač.

Pole Konfigurace Typ hodnoty Výchozí hodnota
deaktivovatFlushPřiBeforeUnload

Výchozí hodnota je false. Pokud je tato hodnota nastavena na true, metoda flush se při vyvolání události onBeforeUnload nezavolá.
Boolean false (nepravda)
zakázat telemetrii

Pokud je pravda, sada SDK neshromažďuje ani neodesílá telemetrii. Výchozí hodnota je False.
Boolean false (nepravda)
enableSessionStorageBuffer

Výchozí hodnota true. Pokud je hodnota pravdivá, uloží se vyrovnávací paměť s veškerou neodeslanou telemetrií v úložišti relace. Buffer se obnoví při načtení stránky.
Boolean pravda
eventsLimitInMem

Počet událostí, které je možné uchovávat v paměti před tím, než sada SDK začne odstraňovat události, když nepoužíváte úložiště relací (výchozí nastavení).
Číslo 10 000
jeZakázánoOpětovnéPokoušení

Výchozí hodnota je false. Pokud je hodnota false, opakujte pokus při kódu 206 (částečný úspěch), 408 (časový limit vypršel), 429 (příliš mnoho požadavků), 500 (vnitřní chyba serveru), 503 (služba není k dispozici) a 0 (bez připojení, pouze pokud je to zjištěno).
Boolean false (nepravda)
jePoužitíÚložištěZakázáno

Pokud je pravda, sada SDK neukládá ani nečte žádná data z místního úložiště a úložiště relací. Výchozí hodnota je False.
Boolean false (nepravda)
maxBatchInterval

Jak dlouho shromažďovat telemetrická data před odesláním (v milisekundách).
číselné 15000
maximálníVelikostDávkyVBajtech

Maximální velikost dávky telemetrie Pokud dávka překročí tento limit, okamžitě se odešle a spustí se nová dávka.
číselné 10 000
procento vzorkování

Procento odeslaných událostí Výchozí hodnota je 100, což znamená, že se odesílají všechny události. Nastavte ho, pokud chcete zachovat datový limit pro rozsáhlé aplikace.
číselné 100

Protokolování a ladění

Pomocí loggingLevelConsole a loggingLevelTelemetry můžete směrovat interní chyby sady SDK do konzole nebo do telemetrie. Slouží enableDebug k vyvolání vnitřních chyb jako výjimek během vývoje. Pomocí diagnosticLogInterval vyladíte interní dotazovač logů. Slouží disableDataLossAnalysis k přeskočení kontrol vyrovnávací paměti při spuštění. Pomocí disableIkeyDeprecationMessage potlačíte upozornění na zastarání instrumentačního klíče.

Pole Konfigurace Typ hodnoty Výchozí hodnota
diagnosticLogInterval

(interní) Interval dotazování (v ms) pro interní frontu protokolování
číselné 10 000
zakázatAnalýzuZtrátyDat

Pokud má hodnotu false, kontrolují se při spuštění interní vyrovnávací paměti odesílatele telemetrických dat pro položky, které ještě nebyly odeslány.
Boolean pravda
disableIkeyDeprecationMessage

Zakažte chybovou zprávu o zastaralosti klíče instrumentace. Pokud je pravda, chybové zprávy se neodesílají.
Boolean pravda
enableDebug

Pokud je pravda, vyvolá se interní ladicí data jako výjimka místo protokolování, a to bez ohledu na nastavení protokolování sady SDK. Výchozí hodnota je False.
Poznámka: Povolením tohoto nastavení dojde při každém výskytu vnitřní chyby k vyřazení telemetrie. Může být užitečné při rychlé identifikaci problémů s konfigurací nebo používáním sady SDK. Pokud při ladění nechcete ztratit telemetrii, zvažte použití loggingLevelConsole nebo loggingLevelTelemetry místo enableDebug.
Boolean false (nepravda)
úroveň logování konzole

Zapisuje na konzoli interní chyby Application Insights.
0: vypnuto,
1: Pouze kritické chyby,
2: Vše (chyby a upozornění)
číselné 0
telemetrie úrovně protokolování

Odesílá interní chyby z Application Insights jako telemetrická data.
0: vypnuto,
1: Pouze kritické chyby,
2: Vše (chyby a upozornění)
číselné 1

Správce výkonu

Pomocí enablePerfMgr emitujte lokální perfEvents z instrumentovaných cest kódu. Pomocí createPerfMgr zadejte vlastní továrnu IPerfManager. Pomocí perfEvtsSendAll určíte, zda se spustí všechny události perfEvent, nebo pouze nadřazené události.

Pole Konfigurace Typ hodnoty Výchozí hodnota
createPerfMgr

Funkce zpětného volání, která je volána k vytvoření instance IPerfManager, když je to potřeba a enablePerfMgr je povolený, umožňuje přepsat výchozí vytvoření PerfManager() bez nutnosti setPerfMgr() po inicializaci.
(jádro: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager nedefinovaný
enablePerfMgr

Pokud je tato možnost povolená (true), vytvoří místní perfEvents pro kód, který byl instrumentován k generování perfEvents (prostřednictvím pomocné rutiny doPerf()). Dá se použít k identifikaci problémů s výkonem v sadě SDK na základě vašeho využití nebo volitelně v rámci vašeho vlastního instrumentovaného kódu.
Boolean false (nepravda)
perfEvtsSendAll

Pokud je enablePerfMgr povoleno a IPerfManager spustí funkci INotificationManager.perfEvent(), tento příznak určuje, zda je událost spuštěna (a odeslána všem posluchačům) pro všechny události (true) nebo pouze pro rodičovské události (false <výchozí>).
Nadřazený objekt IPerfEvent je událost, kdy v okamžiku vytvoření události stále neběží žádná jiná vlastnost IPerfEvent a její nadřazená vlastnost není null nebo není definována. Od verze 2.5.7
Boolean false (nepravda)

Identifikátory a životnost relace

Umožňuje accountId seskupit uživatele do účtů, idLength nastavit vygenerovanou délku sessionExpirationMs náhodného ID pro maximální dobu trvání relace a sessionRenewalMs časový limit nečinnosti, který ukončí relaci.

Pole Konfigurace Typ hodnoty Výchozí hodnota
ID účtu

Volitelné ID účtu, pokud vaše aplikace seskupí uživatele do účtů. Žádné mezery, čárky, středníky, rovná se nebo svislé čáry
řetězec null
idLength

Určuje výchozí délku použitou k vygenerování nové náhodné relace a ID uživatelů. Výchozí hodnota je 22, předchozí výchozí hodnota byla 5 (v2.5.8 nebo menší), pokud potřebujete zachovat předchozí maximální délku nastavenou na hodnotu 5.
číselné 22
vypršeníPlatnostiRelaceMs

Relace se zaprotokoluje, pokud po tuto dobu pokračuje v milisekundách. Výchozí hodnota je 24 hodin
číselné 86400000
obnovení relace v milisekundách

Relace se zaprotokoluje, pokud je uživatel po tuto dobu v milisekundách neaktivní. Výchozí hodnota je 30 minut.
číselné 1800000

Další nastavení

Používá featureOptIn se k vyjádření souhlasu s funkcemi preview, throttleMgrCfg ke konfiguraci omezování, disableInstrumentationKeyValidation k obejití kontrol klíčů příjmu dat, convertUndefined k nahrazení výchozí hodnoty nedefinovaných polí a sdkExtension k předponě ai.internal.sdkVersion značky pro rozšíření podřízené sady SDK.

Pole Konfigurace Typ hodnoty Výchozí hodnota
převéstNaNeurčeno

Zadejte uživateli možnost převést nedefinované pole na uživatelem definovanou hodnotu.
any nedefinovaný
zakázatOvěřováníInstrumentačníhoKlíče

Pokud je hodnota true, je kontrola ověření instrumentačního klíče vynechána. Výchozí hodnotou je false.
Boolean false (nepravda)
featureOptIn

Nastavení podrobností o přihlášení k funkcím.

Toto konfigurační pole je k dispozici pouze ve verzi 3.0.3 a novější.
IFeatureOptIn nedefinovaný
SdkExtension

Nastaví název rozšíření sady SDK. Jsou povoleny pouze abecední znaky. Název rozšíření se přidá jako předpona značky ai.internal.sdkVersion (například ext_javascript:2.0.0). Výchozí hodnota je null.
řetězec null
throttleMgrCfg

Nastavte konfiguraci škrcení Mgr podle klíče.

Toto konfigurační pole je k dispozici pouze ve verzi 3.0.3 a novější.
{[key: number]: IThrottleMgrConfig} nedefinovaný

Distribuované trasování

Moderní architektury cloudových a mikroslužeb umožňují jednoduché a nezávisle nasaditelné služby, které snižují náklady a zvyšují dostupnost a propustnost. Celkově to ale ztěžuje pochopení a ladění systémů. Distribuované trasování tento problém řeší tím, že poskytuje nástroj pro profilování výkonu, který funguje jako zásobníky volání v architekturách cloudu a mikroslužeb.

Azure Monitor poskytuje dvě prostředí pro využívání distribuovaných dat trasování: zobrazení diagnostiky transakcí pro jednu transakci nebo požadavek a zobrazení mapy aplikace , které ukazuje, jak systémy komunikují.

Application Insights může monitorovat jednotlivé komponenty samostatně a zjišťovat, která komponenta zodpovídá za selhání nebo snížení výkonu pomocí distribuované korelace telemetrie. Tento článek vysvětluje datový model, techniky šíření kontextu, protokoly a implementaci taktik korelace na různých jazycích a platformách používaných application Insights.

Povolte distribuované trasování pomocí Application Insights buď prostřednictvím automatické instrumentace, nebo pomocí SDK.

Podporované Azure Monitor instrumentace OpenTelemetry a sada JavaScript SDK generují distribuovaná data trasování pro běžné architektury a knihovny.

Při použití nakonfigurované podporované instrumentace se informace o trasování automaticky shromažďují pro běžné frameworky, knihovny a technologie.

Libovolnou technologii lze také sledovat ručně vytvořením vlastních rozsahů.

Datový model pro korelaci telemetrie

Application Insights definuje datový model pro distribuovanou korelaci telemetrie. Chcete-li přidružit telemetrii k logické operaci, má každá položka telemetrie kontextové pole s názvem operation_Id. Každý telemetrický údaj v distribuovaném trasování sdílí tento identifikátor. I když tedy ztratíte telemetrii z jedné vrstvy, můžete i nadále přidružit telemetrii hlášenou jinými komponentami.

Distribuovaná logická operace se obvykle skládá ze sady menších operací, které jsou požadavky zpracovávané jednou z komponent. Žádost o telemetrii definuje tyto operace. Každá položka telemetrie požadavku má vlastní id , která ji jednoznačně a globálně identifikuje. A všechny položky telemetrie (například trasování a výjimky), které jsou přidružené k požadavku, by měly nastavit operation_parentId na hodnotu požadavku id.

Telemetrie závislostí představuje každou odchozí operaci, například volání HTTP do jiné komponenty. Definuje také vlastní id, který je globálně jedinečný. Žádost o telemetrii, iniciovaná tímto voláním závislosti, používá id jako operation_parentId.

Můžete vytvořit zobrazení distribuované logické operace pomocí operation_Id, operation_parentId a request.id s dependency.id. Tato pole také definují kauzální pořadí volání telemetrie.

V prostředí mikroslužeb mohou stopy ze součástí směřovat do různých položek úložiště. Každá komponenta může mít v Application Insights vlastní připojovací řetězec. Pokud chcete získat telemetrii pro logickou operaci, Application Insights dotazuje data z každé položky úložiště.

Pokud je počet položek úložiště velký, potřebujete nápovědu, kam se podívat dál. Datový model Application Insights definuje dvě pole pro vyřešení tohoto problému: request.source a dependency.target. První pole identifikuje komponentu, která iniciovala požadavek na závislost. Druhé pole určuje, která komponenta vrátila odpověď volání závislosti.

Informace o dotazování z několika různorodých instancí najdete v tématu Dotazování dat v pracovních prostorech, aplikacích a prostředcích služby Log Analytics ve službě Azure Monitor.

Example

Podívejme se na příklad. Aplikace s názvem Stock Prices (Ceny akcií) zobrazuje aktuální tržní cenu akcií pomocí externího rozhraní API s názvem Akcie. Aplikace Stock Prices má stránku s názvem Stock page, kterou klient webový prohlížeč otevře pomocí GET /Home/Stock. Aplikace odesílá dotaz na rozhraní API akcií pomocí volání HTTP GET /api/stock/value.

Výslednou telemetrii můžete analyzovat spuštěním dotazu:

(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id

Ve výsledcích všechny položky telemetrie sdílejí kořen operation_Id. Při volání Ajax ze stránky se k telemetrii závislostí přiřadí nové jedinečné ID (qJSXU) a ID objektu pageView se použije jako operation_ParentId. Požadavek serveru pak použije ID Ajax jako operation_ParentId.

typ položky název ID operation_ParentId operation_Id
pageView Stránka s akciemi STYz STYz
závislost GET /Home/Stock qJSXU STYz STYz
žádost Dostaňte se do Domů/Zásoby KqKwlrSt9PA= qJSXU STYz
závislost GET /api/stock/value bBrf2L7mm2g= KqKwlrSt9PA= STYz

Při volání GET /api/stock/value do externí služby potřebujete znát identitu tohoto serveru, abyste mohli pole správně nastavit dependency.target . Pokud externí služba nepodporuje monitorování, target nastaví se na název hostitele služby. Příklad: stock-prices-api.com. Pokud se ale služba identifikuje vrácením předdefinované hlavičky HTTP, obsahuje identitu služby, target která službě Application Insights umožňuje sestavit distribuované trasování dotazováním telemetrie z této služby.

Hlavičky korelace pomocí W3C TraceContext

Application Insights přechází na W3C Trace-Context, který definuje:

  • traceparent: Nese globálně jedinečné ID operace a jedinečný identifikátor volání.
  • tracestate: Přenáší kontext trasování specifické pro systém.

Podporovaná instrumentace používá pro distribuované trasování protokol W3C Trace Context.

Protokol HTTP korelace, označovaný také jako ID požadavku, je zastaralý. Tento protokol definuje dvě hlavičky:

  • Request-Id: Přenáší globálně jedinečné ID volání.
  • Correlation-Context: Nese kolekci párů klíč-hodnota vlastností distribuovaného trasování.

Application Insights také používá kontext korelace k naplnění polí, jako jsou dependency.target a request.source, pokud je tento kontext k dispozici.

Datové modely W3C Trace-Context a Application Insights se mapují následujícím způsobem:

Application Insights W3C TraceContext
Id z Request a Dependency parent-id
Operation_Id trace-id
Operation_ParentId parent-id nadřazeného rozsahu tohoto rozsahu. Toto pole musí být prázdné, pokud se jedná o kořenové rozpětí.

Další informace najdete v datovém modelu telemetrie Application Insights.

Povolení podpory distribuovaného trasování W3C

Tato funkce je ve výchozím nastavení povolená pro JavaScript a hlavičky se automaticky zahrnou, když je doména hostitelské stránky stejná jako doména, do které se požadavky odesílají (například hostitelská stránka je example.com a požadavky Ajax se odesílají).example.com Pokud chcete změnit režim distribuovaného trasování, použijte distributedTracingMode konfigurační pole. Výchozí hodnota, AI_AND_W3C, zajišťuje zpětnou kompatibilitu se všemi staršími službami vybavenými instrumentací Application Insights.

Pokud požadavky XMLHttpRequest nebo Fetch Ajax přejdou na jiného hostitele domény, včetně subdomén, hlavičky korelace se ve výchozím nastavení nezahrnou. Chcete-li tuto funkci povolit, nastavte enableCorsCorrelation konfigurační pole na truehodnotu . Pokud nastavíte hodnotu enableCorsCorrelationtrue, všechny požadavky XMLHttpRequest a Fetch Ajax zahrnují hlavičky korelace. V důsledku toho platí, že pokud aplikace na serveru, na který požadavek cílí, nepodporuje hlavičku traceparent, požadavek může selhat. Toto selhání závisí na tom, jestli prohlížeč a verze můžou požadavek ověřit na základě toho, které hlavičky server přijímá. Konfigurační pole můžete použít correlationHeaderExcludedDomains k vyloučení domény serveru z injektáže hlaviček korelace mezi komponentou. Můžete například použít correlationHeaderExcludedDomains: ['*.auth0.com'] k vyloučení hlaviček korelace z požadavků odeslaných zprostředkovateli identity Auth0.

Důležité

Pokud chcete zobrazit všechny konfigurace potřebné k povolení korelace, prohlédněte si dokumentaci k korelaci JavaScriptu.

Filtrování a předběžné zpracování telemetrie

U webových aplikací JavaScriptu použijte inicializátory telemetrie k filtrování, úpravě nebo rozšiřování telemetrie před odesláním.

  • Vraťte se false z inicializátoru, aby před odesláním vyhodili položku telemetrie.
  • Přidání nebo úprava polí v položce telemetrie za účelem obohacení telemetrie o hodnoty, které jsou užitečné pro filtrování a analýzu.
  • Pokud potřebujete statistické vzorkování místo explicitního filtrování, použijte konfiguraci vzorkování sady SDK ke snížení objemu telemetrie.

Výstraha

Filtrování telemetrie může zkosit statistiky portálu a může znesnadnit sledování souvisejících položek. Upřednostněte vzorkování, pokud potřebujete snížit objem, aniž byste explicitně vyloučili konkrétní telemetrii.

Webové aplikace v JavaScriptu

Pokud chcete filtrovat telemetrii z webových aplikací JavaScriptu, použijte ITelemetryInitializer.

  1. Vytvořte funkci zpětného volání inicializátoru telemetrie. Funkce zpětného volání přebírá ITelemetryItem jako parametr, což je událost, která se zpracovává. Pokud zpětné volání vrátí false, položka telemetrie se vyfiltruje.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. Přidejte funkci zpětného volání svého inicializátoru telemetrie:

    appInsights.addTelemetryInitializer(filteringFunction);
    

Inicializátory telemetrie JavaScriptu

Inicializátory telemetrie se spouští před odesláním telemetrické položky v JavaScriptu. Použijte je k přidání, úpravě nebo vyřazení telemetrie prohlížeče. Vrácení false z inicializátoru vynechá položku.

K cílenému rozšiřování nebo filtrování použijte inicializátory telemetrie. Vzorkování použijte, pokud potřebujete snížit objem, aniž byste explicitně vyloučili konkrétní telemetrii.

Inicializátory telemetrie JavaScriptu

V případě potřeby vložte inicializátor telemetrie JavaScriptu. Další informace o inicializátorech telemetrie pro sadu Application Insights JavaScript SDK najdete v tématu Inicializátory telemetrie.

Vložte inicializátor telemetrie přidáním funkce zpětného onInit volání do konfigurace zavaděče sady JavaScript (Web) SDK:

<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>

Souhrn nestandardních vlastností dostupných u položky telemetrie najdete v tématu Application Insights Export Data Model.

Můžete přidat libovolný počet inicializátorů. Volají se v pořadí, ve kterém je přidáte.

Přidejte název cloudové role a instanci cloudové role.

K nastavení ai.cloud.role a ai.cloud.roleInstance značek použijte inicializátor telemetrie. Tyto značky definují, jak se vaše komponenta zobrazuje v mapě aplikace ve službě Azure Monitor.

appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
  envelope.tags["ai.cloud.role"] = "your role name";
  envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});

Počínaje verzí 2.6.0 poskytuje sada Aplikace Azure Insights JavaScript SDK správu souborů cookie založenou na instanci, kterou můžete po inicializaci zakázat a znovu povolit.

Pokud soubory cookie zakážete během inicializace pomocí disableCookiesUsage konfigurace nebo cookieCfg.enabled konfigurace, můžete je znovu povolit pomocí setEnabled funkce objektu ICookieMgr.

Správa souborů cookie založená na instanci nahrazuje předchozí globální funkce CoreUtils , disableCookies()setCookie(), getCookie()a deleteCookie().

Pokud chcete využít vylepšení stromového zatřesení zavedená ve verzi 2.6.0, přestaňte používat globální funkce.

ICookieMgrConfig je konfigurace souborů cookie pro správu souborů cookie na základě instancí přidaná ve verzi 2.6.0. Možnosti, které poskytuje, umožňují povolit nebo zakázat používání souborů cookie sadou SDK. Můžete také nastavit vlastní domény a cesty souborů cookie a přizpůsobit funkce pro načítání, nastavení a odstraňování souborů cookie.

Následující tabulka definuje ICookieMgrConfig možnosti.

Název Typ Výchozí Popis
povoleno Boolean pravda Aktuální instance sady SDK používá tuto logickou hodnotu k označení, jestli je povolené použití souborů cookie. Pokud je false, instance sady SDK inicializovaná touto konfigurací neukládá ani nečte žádná data ze souborů cookie.
doména řetězec null Vlastní doména souborů cookie. Je užitečné, pokud chcete sdílet soubory cookie Application Insights napříč subdoménami. Pokud není zadaný, použije hodnotu z kořenové cookieDomain hodnoty.
cesta řetězec / Určuje cestu, která se má použít pro soubor cookie. Pokud není zadána, použije se libovolná hodnota z kořenové hodnoty cookiePath.
ignorovat cookies řetězec[] nedefinovaný Zadejte názvy souborů cookie, které chcete ignorovat. Způsobí, že se žádný odpovídající název souboru cookie nikdy nečte ani nezapíše. Stále je možné je explicitně vyprázdnit nebo odstranit. Název blockedCookies nemusíte v konfiguraci opakovat. (od verze 2.8.8)
blokovanéSouboryCookies řetězec[] nedefinovaný Zadejte názvy souborů cookie, které se nikdy nezapisují. Brání vytváření nebo aktualizaci názvu souboru cookie, ale mohou být stále čtené, pokud nejsou zahrnuty také v ignoreCookiessouboru . Dají se přesto vymazat nebo odstranit explicitně. Pokud není zadaný, nastaví se ve výchozím nastavení na stejný seznam v ignoreCookiessouboru . (Od verze 2.8.8)
getCookie (name: string) => string null Funkce, která načte pojmenovanou hodnotu souboru cookie. Pokud není k dispozici, sada SDK používá interní analýzu a ukládání souborů cookie do mezipaměti.
setCookie (name: string, value: string) => void null Funkce pro nastavení pojmenovaného souboru cookie se zadanou hodnotou. Volá se pouze při přidávání nebo aktualizaci souboru cookie.
delCookie (name: string, value: string) => void null Funkce pro odstranění pojmenovaného souboru cookie se zadanou hodnotou Tato funkce je oddělena od setCookie, aby nebylo nutné analyzovat hodnotu při určování, zda se soubor cookie přidává, nebo odebírá. Pokud není k dispozici, sada SDK používá interní analýzu a ukládání souborů cookie do mezipaměti.

Zdrojová mapa

Podpora map zdrojů vám pomáhá ladit minifikovaný kód JavaScriptu tím, že deminifikuje minifikovaný zásobník volání v telemetrii výjimek.

  • Kompatibilní se všemi aktuálními integracemi na panelu Podrobnosti o výjimce
  • Podporuje všechny aktuální a budoucí sady JavaScript SDK, včetně Node.js, bez nutnosti upgradu sady SDK.

Application Insights podporuje nahrávání zdrojových map do kontejneru objektů blob účtu Azure Storage. Použijte zdrojové mapy k deminifikaci zásobníků volání nalezených na stránce Podrobnosti transakce end-to-end. Pomocí zdrojových map můžete také rozminifikovat každou výjimku odeslanou prostřednictvím JavaScript SDK nebo Node.js SDK.

Snímek obrazovky, který ukazuje výběr možnosti odemčení zásobníku volání propojením s účtem úložiště

Vytvoření nového účtu úložiště a blob kontejneru

Pokud už máte existující účet úložiště nebo kontejner objektů blob, můžete tento krok přeskočit.

  1. Vytvořte nový účet úložiště.

  2. V účtu úložiště vytvořte kontejner objektů BLOB Nastavte úroveň veřejného přístupu na Privátní , abyste měli jistotu, že vaše zdrojové mapy nejsou veřejně přístupné.

    Snímek obrazovky znázorňující nastavení úrovně přístupu kontejneru na privátní

Přesuňte své zdrojové mapy do blob kontejneru

Integrujte kanál průběžného nasazování s účtem úložiště tím, že ho nakonfigurujete tak, aby automaticky nahrál zdrojové mapy do nakonfigurovaného kontejneru objektů blob.

Zdrojové mapy můžete nahrát do kontejneru služby Azure Blob Storage se stejnou strukturou složek, se kterou byly zkompilovány a nasazeny. Běžným případem použití je předpona složky nasazení s její verzí, 1.2.3/static/js/main.jsnapříklad . Při rozbalování prostřednictvím Azure blob kontejneru nazvaného sourcemaps, se pipeline pokusí načíst zdrojovou mapu umístěnou na sourcemaps/1.2.3/static/js/main.js.map.

Pokud k průběžnému sestavování a nasazování aplikace používáte Azure Pipelines, přidejte do kanálu úlohu kopírování souborů Azure, která automaticky nahraje zdrojové mapy.

Snímek obrazovky znázorňující přidání úlohy pro Azure File Copy do vašeho kanálu za účelem nahrání vašich zdrojových map do Azure Blob Storage.

Nakonfigurujte prostředek Application Insights pomocí účtu úložiště pro zdrojové mapy

Máte dvě možnosti konfigurace prostředku Application Insights pomocí účtu úložiště zdrojové mapy.

Karta Podrobnosti o transakci od začátku do konce

Na kartě Podrobnosti o end-to-end transakci vyberte Unminify. Nakonfigurujte svůj prostředek, pokud není nastavený.

  1. Na webu Azure Portal zobrazte podrobnosti o výjimce, která je minifikovaná.
  2. Vyberte Unminify( Unminify).
  3. Pokud váš prostředek není nakonfigurovaný, nakonfigurujte ho.
Karta Vlastnosti

Chcete-li konfigurovat nebo změnit účet úložiště nebo kontejner blobů, který je propojený s prostředkem Application Insights:

  1. Přejděte na kartu Vlastnosti prostředku Application Insights.

  2. Vyberte Změnit kontejner objektů blob zdrojové mapy.

  3. Jako kontejner zdrojové mapy vyberte jiný kontejner objektů blob.

  4. Vyberte Použít.

    Snímek obrazovky znázorňující překonfigurování vybraného kontejneru objektů blob Azure v podokně Vlastnosti

Zobrazení neminifikovaného zásobníku volání

Pokud chcete zobrazit neminifikovaný zásobník volání, vyberte na portálu Azure položku Telemetrie výjimek, vyhledejte zdrojové mapy, které odpovídají zásobníku volání, a přetáhněte zdrojové mapy do zásobníku volání na portálu Azure Portal. Zdrojová mapa musí mít stejný název jako zdrojový soubor rámce zásobníku, ale s příponou map .

Pokud dojde k problémům, které zahrnují podporu mapování zdrojů pro aplikace JavaScriptu, přečtěte si téma Řešení potíží s podporou mapování zdrojů pro aplikace JavaScript.

Animace demonstrující funkci unminify

Strom se zatřese

Třepání stromu odebere nepoužívaný kód z konečné sady JavaScriptu.

Pokud chcete využít třepání stromu, naimportujte do kódu pouze nezbytné součásti sady SDK. Tím vyloučíte z konečné sady nepoužívaný kód, který zmenší jeho velikost a zlepší výkon.

Vylepšení a doporučení pro roztřesení stromu

Ve verzi 2.6.0 sada SDK označila interní používání těchto statických pomocných tříd jako zastaralé a odstranila je, aby zlepšila podporu algoritmů pro odstraňování nepoužívaného kódu. Tato změna umožňuje balíčkům npm bezpečně odstranit nepoužívaný kód.

  • CoreUtils
  • EventHelper
  • Util
  • UrlHelper
  • DateTimeUtils
  • ConnectionStringParser

Funkce se teď exportují z modulů na nejvyšší úrovni, což usnadňuje refaktoring kódu pro efektivnější tree shaking.

Statické třídy jsou nyní const objekty, které odkazují na nové exportované funkce.

Optimalizace odstraněním zastaralých funkcí a jejich nahrazení

Tato část platí jenom v případě, že používáte zastaralé funkce a chcete optimalizovat velikost balíčku. Pokud chcete zmenšit velikost a podporovat všechny verze Internet Explorer, použijte náhradní funkce.

Existující Náhrada
CoreUtils @microsoft/applicationinsights-core-js
CoreUtils._canUseCookies Žádný Tuto funkci nepoužívejte, protože způsobuje zahrnutí všech odkazů CoreUtils do konečného kódu.
Refaktorujte zpracování souborů cookie tak, aby se použila appInsights.getCookieMgr().setEnabled(true/false) k nastavení hodnoty a appInsights.getCookieMgr().isEnabled() ke kontrole hodnoty.
CoreUtils.isTypeof jeTypem
CoreUtils.isUndefined není definováno
CoreUtils.isNullOrUndefined - Tato funkce kontroluje, zda je hodnota 'null' nebo 'undefined'. jeNullNeboNedefinováno
CoreUtils.hasOwnProperty hasOwnProperty (kontroluje, zda objekt obsahuje konkrétní vlastnost)
CoreUtils.isFunction isFunction
CoreUtils.isObject isObject
CoreUtils.isDate isDate
CoreUtils.isArray isArray
CoreUtils.isError isError
CoreUtils.isString isString
CoreUtils.isNumber isNumber
CoreUtils.isBoolean isBoolean
CoreUtils.toISOString toISOString nebo getISOString
CoreUtils.arrForEach arrForEach
CoreUtils.arrIndexOf arrIndexOf
CoreUtils.arrMap arrMap
CoreUtils.arrReduce arrReduce
CoreUtils.strTrim strTrim
CoreUtils.objCreate objCreateFn (funkce pro vytvoření objektu)
CoreUtils.objKeys objKeys
CoreUtils.objDefineAccessors objDefineAccessors
CoreUtils.addEventHandler addEventHandler
CoreUtils.dateNow datumNyní
CoreUtils.isIE isIE (Internet Explorer)
CoreUtils.disableCookies disableCookies
Odkaz na kteroukoli z těchto funkcí způsobí, že bude kvůli zpětné kompatibilitě odkazováno také na CoreUtils.
Upravit zpracování souborů cookie, aby používalo appInsights.getCookieMgr().setEnabled(false).
CoreUtils.newGuid newGuid
CoreUtils.perfNow perfNow
CoreUtils.newId novéID
CoreUtils.randomValue randomValue
CoreUtils.random32 random32
CoreUtils.mwcRandomSeed mwcRandomSeed
CoreUtils.mwcRandom32 mwcRandom32
CoreUtils.generateW3CId vygenerovatW3CId
EventHelper @microsoft/applicationinsights-core-js
EventHelper.Attach připojit událost
EventHelper.AttachEvent připojit událost
EventHelper.Detach detachEvent
EventHelper.DetachEvent detachEvent
Pomocné @microsoft/applicationinsights-common-js
Util.Neurčeno StrNotSpecified
Util.createDomEvent createDomEvent
Util.zakázatÚložiště utlDisableStorage
Util.isInternalApplicationInsightsEndpoint isInternalApplicationInsightsEndpoint
Util.canUseLocalStorage utlCanUseLocalStorage
Util.getStorage utlGetLocalStorage
Util.setStorage utlSetLocalStorage
Util.removeStorage utlRemoveStorage
Util.canUseSessionStorage utlMůžePoužívatSessionStorage
Util.getSessionStorageKeys utlGetSessionStorageKeys
Util.getSessionStorage utlGetSessionStorage
Util.setSessionStorage utlSetSessionStorage
Util.removeSessionStorage utlRemoveSessionStorage
Util.disableCookies disableCookies
Odkazování buď způsobí, že CoreUtils budou použity k zajištění zpětné kompatibility.
Upravit zpracování souborů cookie, aby používalo appInsights.getCookieMgr().setEnabled(false).
Util.canUseCookies canUseCookies
Odkazování buď způsobí, že CoreUtils budou použity k zajištění zpětné kompatibility.
Upravit zpracování souborů cookie, aby používalo appInsights.getCookieMgr().isEnabled().
Util.disallowsSameSiteNone uaDisallowsSameSiteNone
Util.setCookie coreSetCookie
Odkazování způsobí, že nástroje CoreUtils budou použity pro zpětnou kompatibilitu.
Upravit zpracování souborů cookie, aby používalo appInsights.getCookieMgr().set(name: string, value: string).
Util.stringToBoolOrDefault stringToBoolOrDefault
Util.getCookie coreGetCookie
Odkazování způsobí, že nástroje CoreUtils budou použity pro zpětnou kompatibilitu.
Upravit zpracování souborů cookie, aby používalo appInsights.getCookieMgr().get(name: string).
Util.deleteCookie coreDeleteCookie
Odkazování způsobí, že nástroje CoreUtils budou použity pro zpětnou kompatibilitu.
Upravit zpracování souborů cookie, aby používalo appInsights.getCookieMgr().del(name: string, path?: string).
Util.trim strTrim
Util.newId novéID
Util.random32 ---
Nepoužívejte náhrady, refaktorujte svůj kód, aby používal základní funkci random32(true)
Util.generateW3CId vygenerovatW3CId
Util.isArray isArray
Util.isError isError
Util.isDate isDate
Util.toISOStringForIE8 toISOString
Util.getIEVersion getIEVersion
Util.msToTimeSpan msToTimeSpan
Util.isCrossOriginError isCrossOriginError
Util.dump dumpObj
Util.getExceptionName getExceptionName
Util.addEventHandler připojit událost
Util.IsBeaconApiSupported isBeaconApiSupported
Util.getExtension getExtensionByName
UrlHelper @microsoft/applicationinsights-common-js
UrlHelper.parseUrl urlParseUrl
UrlHelper.získatAbsolutníUrl urlGetAbsoluteUrl
UrlHelper.getPathName (získat název cesty) urlGetPathName
UrlHelper.getCompeteUrl urlGetCompleteUrl
UrlHelper.parseHost (metoda pro analýzu hostitele) urlParseHost
UrlHelper.parseFullHost urlParseFullHost
DateTimeUtils @microsoft/applicationinsights-common-js
DateTimeUtils.Now dateTimeUtilsNyní
DateTimeUtils.GetDuration dateTimeUtilsDuration
ConnectionStringParser @microsoft/applicationinsights-common-js
ConnectionStringParser.parse parseConnectionString

Oznámení služby

Sada SDK obsahuje oznámení služeb, která poskytují užitečná doporučení, která vám pomůžou zajistit nepřerušované toky telemetrie do Application Insights. Oznámení se zobrazí jako zpráva o výjimce v Application Insights. Sada SDK zajišťuje, že oznámení jsou pro vás relevantní na základě nastavení sady SDK a upraví úroveň podrobností na základě naléhavosti doporučení. Nechte oznámení o službách zapnutá, ale můžete se odhlásit prostřednictvím featureOptIn konfigurace.

V současné době nejsou odesílána žádná aktivní oznámení.

JavaScriptové SDK spravuje servisní oznámení a pravidelně kontroluje veřejný soubor JSON, aby tato oznámení řídilo a aktualizovalo. Pokud chcete zakázat dotazování prováděné pomocí JavaScript SDK, vypněte režim featureOptIn.

Řešení problému

Projděte si vyhrazený článek o řešení potíží.

Další kroky