Application Insights pro webové stránky

Zjistěte informace o výkonu a využití webové stránky nebo aplikace. Pokud přidáte Application Insights skriptu stránky, získáte časování načtení stránky a volání AJAX, počty a podrobnosti výjimek prohlížeče a selhání AJAX, stejně jako počet uživatelů a relací. Všechny tyto hodnoty mohou být segmentovány podle stránky, klientského operačního systému a verze prohlížeče, zeměpisné polohy a ostatních dimenzí. Můžete nastavit výstrahy na počet selhání nebo pomalé načítání stránky. A vložíte-li do kódu JavaScript trasování volání, můžete sledovat využití různých funkcí aplikace webové stránky.

Application Insights můžete použít s jakýmikoli webovými stránkami – stačí přidat krátký kód jazyka JavaScript. Pokud je vaše webová služba v Javě nebo ASP.NET, můžete pomocí sad SDK na straně serveru ve spojení se sadou JavaScript SDK na straně klienta získat úplný přehled o výkonu vaší aplikace.

Přidání sady JavaScript SDK

Důležité

Připojovací řetězce se doporučují před instrumentačními klíči. Nové oblasti Azure vyžadují použití připojovacích řetězců místo instrumentačních klíčů. Připojovací řetězec identifikuje prostředek, ke který chcete přidružit telemetrická data. Umožňuje také upravit koncové body, které bude prostředek používat jako cíl pro vaši telemetrii. Připojovací řetězec budete muset zkopírovat a přidat ho do kódu vaší aplikace nebo do proměnné prostředí.

  1. Nejprve potřebujete Application Insights prostředek. Pokud ještě nemáte prostředek a instrumentační klíč, postupujte podle pokynů k vytvoření nového prostředku.
  2. Zkopírujte instrumentační klíč (označované také jako "iKey") nebo připojovací řetězec pro prostředek, do kterého chcete odeslat telemetrii JavaScriptu (z kroku 1). Přidáte ho do nastavení nebo sady instrumentationKey connectionString JavaScript SDK Application Insights nebo .
  3. Přidejte Application Insights JavaScript SDK na webovou stránku nebo aplikaci prostřednictvím jedné z následujících dvou možností:

Důležité

K přidání sady JavaScript SDK do aplikace použijte pouze jednu metodu. Pokud používáte nastavení NPM, nepoužívejte fragment kódu a naopak.

Poznámka

Instalace NPM nainstaluje sadu JavaScript SDK jako závislost do projektu a povolí technologii IntelliSense, zatímco fragment kódu načte sadu SDK za běhu. Obě podporují stejné funkce. Vývojáři, kteří chtějí více vlastních událostí a konfigurace, ale obecně volí nastavení NPM, zatímco uživatelé, kteří hledají rychlé povolení výchozí webové analýzy, volí fragment kódu.

Nastavení na základě npm

Nainstalujte prostřednictvím NPM.

npm i --save @microsoft/applicationinsights-web

Poznámka

Tento balíček obsahuje psaní, takže není nutné instalovat samostatný balíček pro psaní.

import { ApplicationInsights } from '@microsoft/applicationinsights-web'

const appInsights = new ApplicationInsights({ config: {
  instrumentationKey: 'YOUR_INSTRUMENTATION_KEY_GOES_HERE'
  /* ...Other Configuration Options... */
} });
appInsights.loadAppInsights();
appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview

Nastavení založené na fragmentech kódu

Pokud vaše aplikace npm nepodporuje, můžete přímo instrumentovat webové stránky pomocí Application Insights vložením tohoto fragmentu kódu do horní části každé stránky. Pokud možno by to měl být první skript ve vaší části, aby mohl monitorovat případné problémy se všemi vašimi závislostmi a volitelně chybami <head> JavaScriptu. Pokud používáte aplikaci Blazor Server, přidejte fragment kódu do horní části souboru _Host.cshtml v <head> části .

Aby bylo možné sledovat, kterou verzi fragmentu kódu vaše aplikace používá, od verze 2.5.5 bude událost zobrazení stránky obsahovat novou značku "ai.internal.snippet", která bude obsahovat identifikovanou verzi fragmentu kódu.

Aktuální fragment kódu (uvedený níže) je verze 5, verze je kódovaná ve fragmentu kódu jako sv:"#" a aktuální verze je také dostupná na GitHubu.

<script type="text/javascript">
!function(T,l,y){var S=T.location,k="script",D="instrumentationKey",C="ingestionendpoint",I="disableExceptionTracking",E="ai.device.",b="toLowerCase",w="crossOrigin",N="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"5",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[b](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.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}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,u,p,l;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][b]()]=i[1])}if(!e[C]){var r=e.endpointsuffix,o=r?e.location:null;e[C]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[D]||d[D]||"",u=s[C],p=u?u+"/v2/track":d.endpointUrl,(l=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=p,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),l.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,p)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:N,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(N,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(l,p))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(k);n.src=h;var e=y[w];return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(k)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[I]&&!0!==s[I]){var c="onerror";t(["_"+c]);var u=T[c];T[c]=function(e,t,n,a,i){var r=u&&u(e,t,n,a,i);return!0!==r&&m["_"+c]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);function a(){y.onInit&&y.onInit(n)}(T[t]=n).queue&&0===n.queue.length?(n.queue.push(a),n.trackPageView({})):a()}(window,document,{
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source
// name: "appInsights", // Global SDK Instance name defaults to "appInsights" when not supplied
// ld: 0, // Defines the load delay (in ms) before attempting to load the sdk. -1 = block page load and add to head. (default) = 0ms load after timeout,
// useXhr: 1, // Use XHR instead of fetch to report failures (if available),
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
// onInit: null, // Once the application insights instance has loaded and initialized this callback function will be called with 1 argument -- the sdk instance (DO NOT ADD anything to the sdk.queue -- As they won't get called)
cfg: { // Application Insights Configuration
    instrumentationKey: "YOUR_INSTRUMENTATION_KEY_GOES_HERE"
    /* ...Other Configuration Options... */
}});
</script>

Poznámka

Kvůli čitelnosti a omezení možných chyb JavaScriptu jsou všechny možné možnosti konfigurace uvedené na novém řádku ve výše uvedeném kódu fragmentu kódu. Pokud nechcete změnit hodnotu řádku s komentářem, můžete ho odebrat.

Selhání načítání skriptu generování sestav

Tato verze fragmentu kódu detekuje a ohlašuje selhání při načítání sady SDK z CDN jako výjimku z portálu Azure Monitor (v prohlížeči výjimek selhání) poskytuje tato výjimka přehled o selháních tohoto typu, takže víte, že vaše aplikace nehlašuje telemetrii (nebo jiné výjimky) podle > > očekávání. Tento signál je důležitým měřením, protože víte, že jste ztratili telemetrii, protože sada SDK se nenačte nebo neinicializovala, což může vést k:

  • Podceňování toho, jak uživatelé používají váš web (nebo se ho snaží použít)
  • Chybějící telemetrie o tom, jak koncoví uživatelé používají váš web.
  • Chybějící chyby JavaScriptu, které by mohly potenciálně blokovat vašim koncovým uživatelům v úspěšném používání vašeho webu

Podrobnosti o této výjimce najdete na stránce pro řešení potíží se selháním načtení sady SDK.

Nahlašování této chyby jako výjimka z portálu nevyustává možnost konfigurace z konfigurace Application Insights, a proto pokud k tomuto selhání dojde, bude fragment kódu vždy hlášen, i když je podpora disableExceptionTracking window.onerror zakázaná.

Generování sestav selhání zatížení sady SDK není v IE 8 (nebo méně) výslovně podporováno. To pomáhá se zmenšením minimální velikosti fragmentu kódu za předpokladu, že většina prostředí není výhradně IE 8 nebo menší. Pokud máte tento požadavek a chcete dostávat tyto výjimky, budete muset buď zahrnout výplň fetch poly, nebo vytvořit vlastní verzi fragmentu, která používá místo , doporučujeme jako výchozí bod použít poskytnutý zdrojový kód XDomainRequest XMLHttpRequest fragmentu kódu.

Poznámka

Pokud používáte předchozí verzi fragmentu kódu, důrazně doporučujeme provést aktualizaci na nejnovější verzi, abyste tyto dříve neohlášené problémy obdrželi.

Možnosti konfigurace fragmentů kódu

Všechny možnosti konfigurace se teď přesouvají na konec skriptu, aby se zabránilo nechtěnému zavedení chyb JavaScriptu, které by nejen způsobily selhání načtení sady SDK, ale také by se tím zakažilo hlášení selhání.

Každá možnost konfigurace se na novém řádku zobrazí výše. Pokud nechcete přepsat výchozí hodnotu položky uvedené jako [nepovinné], můžete tento řádek odebrat, abyste minimalizovali výslednou velikost vrácené stránky.

Dostupné možnosti konfigurace:

Název Typ Description
src string [povinné] Úplná adresa URL, ze které se má sada SDK načíst. Tato hodnota se používá pro atribut src dynamicky přidaného < skriptu nebo > značky. Můžete použít veřejné umístění CDN nebo vlastní soukromě hostované umístění.
name string [volitelné] Globální název inicializované sady SDK, výchozí hodnota je appInsights . Proto window.appInsights bude odkazem na inicializované instance. Poznámka: Pokud zadáte hodnotu name nebo se zdá, že se přiřadí předchozí instance (prostřednictvím globálního názvu appInsightsSDK), bude tato hodnota názvu také definována v globálním oboru názvů jako , což vyžaduje inicializační kód sady SDK, aby se zajistilo, že se inicializace a aktualizace správné kostry fragmentu kódu a window.appInsightsSDK=<name value> metod proxy serveru vyžaduje.
Ld number in ms [optional] Definuje zpoždění načítání, které se má čekat před pokusem o načtení sady SDK. Výchozí hodnota je 0ms a jakákoli záporná hodnota okamžitě přidá značku skriptu do hlavní oblasti stránky, která pak zablokuje událost načtení stránky, dokud se nenačte skript (nebo se < > nezdaří).
useXhr boolean [volitelné] Toto nastavení se používá pouze pro hlášení chyb při načítání sady SDK. Vytváření sestav se nejprve pokusí použít fetch(), pokud je k dispozici, a potom se vrátí k XHR. Když tuto hodnotu nastavíte na true, přeskočí se kontrola načtení. Použití této hodnoty se vyžaduje jenom v případě, že se vaše aplikace používá v prostředí, kde by se při načtení nepovede odeslat události selhání.
crossOrigin string [volitelné] Zahrnutím tohoto nastavení bude značka skriptu přidaná ke stažení sady SDK obsahovat atribut crossOrigin s touto řetězcovou hodnotou. Pokud není definovaný (výchozí), nepřidá se žádný atribut crossOrigin. Doporučené hodnoty nejsou definované (výchozí). ""; nebo "anonymní" (všechny platné hodnoty najdete v části Atribut HTML: crossorigin dokumentace)
Cfg object [povinné] Konfigurace předaná sadě SDK Application Insights během inicializace.

Nastavení připojovacího řetězce

Pro nastavení NPM nebo fragmentu kódu můžete také nakonfigurovat instanci služby Application Insights pomocí připojovacího řetězce. Jednoduše instrumentationKey nahraďte pole connectionString polem .

import { ApplicationInsights } from '@microsoft/applicationinsights-web'

const appInsights = new ApplicationInsights({ config: {
  connectionString: 'YOUR_CONNECTION_STRING_GOES_HERE'
  /* ...Other Configuration Options... */
} });
appInsights.loadAppInsights();
appInsights.trackPageView();

Odesílání telemetrie do Azure Portal

Ve výchozím nastavení Application Insights JavaScript SDK automaticky schytá několik položek telemetrie, které jsou užitečné při určování stavu aplikace a základního uživatelského prostředí. Tady jsou některé z nich:

  • Nezachycené výjimky v aplikaci, včetně informací o
    • Trasování zásobníku
    • Podrobnosti o výjimce a zpráva související s chybou
    • Počet & řádku řádku
    • Adresa URL, kde došlo k chybě
  • Požadavky na závislosti na síti provedené XHR vaší aplikace a požadavky fetch (načítání kolekce je ve výchozím nastavení zakázané) obsahují informace o
    • Adresa URL zdroje závislostí
    • Metoda & použitá k vyžádání závislosti
    • Doba trvání žádosti
    • Kód výsledku a stav úspěchu požadavku
    • ID (pokud existuje) uživatele, který vytváří požadavek
    • Kontext korelace (pokud existuje), kde je učiněn požadavek
  • Informace o uživateli (například umístění, síť, IP adresa)
  • Informace o zařízení (například prohlížeč, operační systém, verze, jazyk, model)
  • informace o relaci,

Inicializátory telemetrie

Inicializátory telemetrie slouží k úpravě obsahu shromážděné telemetrie před jejich odesláním z prohlížeče uživatele. Můžete je také použít k zabránění odeslání určité telemetrie, a to vrácením false . do instance Application Insights lze přidat více inicializátorů telemetrie a jsou spouštěny v pořadí jejich přidávání.

Vstupní argument pro addTelemetryInitializer je zpětné volání, které přijímá ITelemetryItem jako argument a vrací boolean nebo void . Při vrácení se false položka telemetrie nepošle, jinak pokračuje k dalšímu inicializátoru telemetrie, pokud existuje, nebo se pošle do koncového bodu kolekce telemetrie.

Příklad použití inicializátorů telemetrie:

var telemetryInitializer = (envelope) => {
  envelope.data.someField = 'This item passed through my telemetry initializer';
};
appInsights.addTelemetryInitializer(telemetryInitializer);
appInsights.trackTrace({message: 'This message will use a telemetry initializer'});

appInsights.addTelemetryInitializer(() => false); // Nothing is sent after this is executed
appInsights.trackTrace({message: 'this message will not be sent'}); // Not sent

Konfigurace

Většina polí konfigurace je pojmenována tak, aby mohla být nastavená na hodnotu false. Všechna pole jsou volitelná s výjimkou instrumentationKey .

Název Description Výchozí
instrumentationKey Povinné
Klíč instrumentace, který jste získali z Azure Portal.
řetězec
null
accountId Volitelné ID účtu, pokud vaše aplikace seskupí uživatele na účty. Žádné mezery, čárky, středníky, rovny nebo svislé čáry řetězec
null
sessionRenewalMs Pokud je uživatel neaktivní po dobu v milisekundách, dojde k zaznamenání relace. numerické
1800000
(30 minut)
sessionExpirationMs Relace je zaznamenána v případě, že v milisekundách pokračuje po dobu. numerické
86400000
(24 hodin)
maxBatchSizeInBytes Maximální velikost dávky telemetrie Pokud dávka tento limit překročí, pošle se hned a spustí se nová dávka. numerické
10000
maxBatchInterval Doba, po kterou se má telemetrie v dávce před odesláním (milisekundy) numerické
15 000
zakázat​ExceptionTracking Je-li nastavena hodnota true, výjimky se nebudou shromažďovat. boolean
false (nepravda)
disableTelemetry Pokud je nastaveno na true, telemetrie se neshromažďuje ani neposílá. boolean
false (nepravda)
enableDebug Při hodnotě true se interní data ladění vydávají jako výjimka namísto zaznamenávání bez ohledu na nastavení protokolování SDK. Výchozí hodnota je false.
Poznámka: Povolení tohoto nastavení způsobí, že dojde k zahození telemetrie při každém výskytu vnitřní chyby. To může být užitečné, pokud chcete rychle identifikovat problémy s konfigurací nebo využitím sady SDK. Pokud nechcete při ladění přijít o telemetrii, zvažte použití consoleLoggingLevel nebo telemetryLoggingLevel místo enableDebug .
boolean
false (nepravda)
loggingLevelConsole zaznamená vnitřní chyby Application Insights do konzoly.
0: vypnuto,
1: jenom kritické chyby,
2: vše (chyby & upozornění)
numerické
0
loggingLevelTelemetry odesílá interní chyby Application Insights jako telemetrii.
0: vypnuto,
1: jenom kritické chyby,
2: vše (chyby & upozornění)
numerické
1
diagnosticLogInterval vnitřních Interval dotazování (v MS) pro interní frontu protokolování numerické
10000
samplingPercentage Procento událostí, které budou odeslány. Výchozí hodnota je 100, což znamená, že jsou odesílány všechny události. Tuto hodnotu nastavte, pokud chcete zachovat svůj limit dat pro aplikace ve velkém měřítku. numerické
100
autoTrackPageVisitTime Pokud je hodnota true, v PageView je čas zobrazení Předchozí instrumentované stránky sledován a odeslán jako telemetrie a pro aktuální PageView se spustí nový časovač. Odesílá se jako vlastní metrika s názvem PageVisitTime v milliseconds a je počítána prostřednictvím funkce data Now () (je-li k dispozici) a vrátí se zpět k (nové datum ()). GetTime () , pokud Now () není k dispozici (IE8 nebo míň). Výchozí hodnota je false. boolean
false (nepravda)
disableAjaxTracking V případě hodnoty true nejsou volání AJAX shromažďována znovu. boolean
false (nepravda)
disableFetchTracking Je-li nastavena hodnota true, žádosti o načtení nejsou shromažďovány. boolean
true
overridePageViewDuration Pokud je true, výchozí chování trackPageView se změní tak, aby při volání trackPageView zaznamenával konec intervalu doby trvání zobrazení stránky. Pokud je hodnota false a pro trackPageView není k dispozici žádná vlastní doba trvání, vypočítá se výkon zobrazení stránky pomocí rozhraní API pro časování navigace. boolean
maxOviaxCallsPerView Výchozí hodnota 500 – určuje, kolik volání Ajax se bude monitorovat na zobrazení stránky. Pokud chcete monitorovat všechna (neomezená) volání Ajax na stránce, nastavte na hodnotu -1. numerické
500
disableDataLossAnalysis Pokud je false, budou se při spuštění kontrolovat interní vyrovnávací paměti odesílatele telemetrie pro položky, které ještě nebyly odeslány. boolean
true
disable​CorrelationHeaders Pokud má hodnotu false, sada SDK přidá ke všem žádostem o závislost dvě hlavičky (Request-Id a Request-Context), aby je korelovat s odpovídajícími požadavky na straně serveru. boolean
false (nepravda)
correlationHeader –​ExcludedDomains Zákaz hlaviček korelace pro konkrétní domény string[]
Nedefinované
correlationHeader –​ExcludePatterns Zákaz korelačních hlaviček pomocí regulárních výrazů regex[]
Nedefinované
correlationHeader –​domény Povolení korelačních hlaviček pro konkrétní domény string[]
Nedefinované
disableFlush​OnBeforeUnload Pokud je true, nebude při triggerech událostí onBeforeUnload volána metoda flush. boolean
false (nepravda)
enableSessionStorageBuffer Pokud je true, uloží se vyrovnávací paměť se všemi neodepisované telemetrie v úložišti relací. Vyrovnávací paměť se obnoví při načtení stránky. boolean
true
soubor cookieCfg Výchozí nastavení použití souborů cookie je povolené, viz nastavení ICookieCfgConfig pro úplné výchozí hodnoty. ICookieCfgConfig
(Od 2.6.0)
Nedefinované
isCookieUseDisabled
disableCookiesUsage
Pokud je true, sada SDK nebude ukládat ani číst žádná data ze souborů cookie. Mějte na paměti, že tím zakážete soubory cookie uživatele a relace a vykreslí se okna použití a prostředí nepoužitelná. funkce isCookieUseDisable je zastaralá a používá se ve prospěch disableCookiesUsage, pokud mají obě tyto vlastnosti přednost disableCookiesUsage.
(Od v2.6.0) A pokud je definovaná také, bude mít přednost před těmito hodnotami, může se použití souborů cookie po inicializaci znovu povolit prostřednictvím cookieCfg.enabled core.getCookieMgr().setEnabled(true).
alias pro cookieCfg.enabled
false (nepravda)
cookieDomain Vlastní doména souborů cookie. To je užitečné, pokud chcete sdílet Application Insights soubory cookie mezi subdoménami.
(Od v2.6.0) Pokud cookieCfg.domain je definovaná, bude mít přednost před touto hodnotou.
alias pro cookieCfg.domain
null
Cookiepath Cesta k vlastním souborům cookie. To je užitečné, pokud chcete sdílet Application Insights soubory cookie za aplikační bránou.
Pokud cookieCfg.path je definovaná, bude mít přednost před touto hodnotou.
alias pro cookieCfg.path
(Od 2.6.0)
null
isRetryDisabled Pokud je false, zkuste to znovu u 206 (částečný úspěch), 408 (časový limit), 429 (příliš mnoho požadavků), 500 (vnitřní chyba serveru), 503 (služba není dostupná) a 0 (offline, pouze pokud byla zjištěna). boolean
false (nepravda)
isStorageUseDisabled Pokud je true, sada SDK nebude ukládat ani číst žádná data z místního úložiště a úložiště relací. boolean
false (nepravda)
isBeaconApiDisabled Pokud má hodnotu false, SDK odešle veškerá telemetrická data pomocí rozhraní API pro signály. boolean
true
onunloadDisableBeacon Když se karta zavře, SDK odešle veškerá zbývající telemetrická data pomocí rozhraní API Pro signály. boolean
false (nepravda)
sdkExtension Nastaví název rozšíření sady SDK. Povolené jsou pouze abecední znaky. Název rozšíření se přidá jako předpona ke značce ai.internal.sdkVersion (například "ext_javascript:2.0.0"). řetězec
null
isBrowserLink –​TrackingEnabled Pokud je true, sdk bude sledovat všechny požadavky browser linku. boolean
false (nepravda)
appId AppId slouží ke korelaci mezi závislostmi AJAX, ke kterým dochází na straně klienta, s požadavky na straně serveru. Pokud je rozhraní Api pro rozpoznávání signálů povolené, není možné ho použít automaticky, ale v konfiguraci je možné ho nastavit ručně. řetězec
null
povolení​CorsCorrelation Pokud je hodnota true, sada SDK přidá ke všem požadavkům CORS dvě hlavičky (Request-Id a Request-Context), aby korelovat odchozí závislosti AJAX s odpovídajícími požadavky na straně serveru. boolean
false (nepravda)
názevPrefix Volitelná hodnota, která se použije jako přípona názvu pro localStorage a název souboru cookie. řetězec
Nedefinované
povolení​AutoRoute​Tracking Automatické sledování změn tras v jedno stránkových aplikacích (SPA) Pokud je true, každá změna trasy odešle nové zobrazení stránky do seznamu Přehledy. Změny tras hash ( example.com/foo#bar ) se také zaznamenávají jako nová zobrazení stránek. boolean
false (nepravda)
enableRequest –​HeaderTracking Pokud je true, ajax & načte hlavičky požadavku. boolean
false (nepravda)
enableResponse –​HeaderTracking Pokud je true, ajax & hlavičky odpovědi požadavku Fetch. boolean
false (nepravda)
distributedTracingMode Nastaví režim distribuovaného trasování. Pokud AI_AND_W3C režim 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 k dispozici pro zajištění zpětné kompatibility se staršími službami Přehledy aplikace. Příklad najdete tady. DistributedTracingModesnebo
numerické
(Od v2.6.0) DistributedTracingModes.AI_AND_W3C
(verze 2.5.11 nebo starší) DistributedTracingModes.AI
enable​AjaxErrorStatusText Pokud je true, zahrnte text dat chyby odpovědi do události závislosti na neúspěšných požadavcích AJAX. boolean
false (nepravda)
povolení​AjaxPerfTracking Příznak pro povolení hledání a zahrnutí dalších metrik window.performance timings prohlížeče do hlášených ajax metrik (XHR a fetch). boolean
false (nepravda)
maxOviaxPerf –​LookupAttempts Maximální počet, kolikrát se má hledat časování window.performance timings (pokud je k dispozici), je to nutné, protože ne všechny prohlížeče naplní soubor window.performance před nahlášením konce žádosti XHR a pro žádosti o načtení, které se přidávají po dokončení. numerické
3
ajaxPerfLookupDelay Doba, po kterou se má čekat, než se znovu pokusíte najít časování window.performance pro požadavek, čas je v milisekundách a předá se přímo do ajax setTimeout(). numerické
25 ms
enableUnhandled​Promise Nescházení​sledování Pokud je true, neošetřená odmítnutí příslibu se automaticky schytá a nahlásila se jako chyba JavaScriptu. Pokud má disableExceptionTracking hodnotu true (nesledovat výjimky), konfigurační hodnota se bude ignorovat a neošetřená zamítnutí příslibu nebudou hlášena. boolean
false (nepravda)
zakázání​InstrumentationKey​ověřování Pokud je hodnota true, je kontrola ověření instrumentačního klíče vynechána. boolean
false (nepravda)
enablePerfMgr Pokud je tato možnost povolená (true), vytvoří se místní události perfEvent pro kód, který byl instrumentován k vysílání událostí perfEvents (prostřednictvím pomocníka doPerf(). Můžete ho použít k identifikaci problémů s výkonem v sadě SDK na základě vašeho využití nebo volitelně ve vašem instrumentovaném kódu. Další podrobnosti najdete v základní dokumentaci. Od v2.5.7 boolean
false (nepravda)
perfEvtsSendAll Když je povolená funkce enablePerfMgr a IPerfManager aktivuje INotificationManager.perfEvent(), tento příznak určuje, jestli se událost aktivuje (a odesílá se všem naslouchacím událostem) pro všechny události (true), nebo jenom pro nadřazené události (výchozí hodnota < > false).
Nadřazená událost IPerfEvent je událost, kdy v okamžiku vytvoření této události stále nese spouštěním žádné jiné události IPerfEvent a jeho nadřazená vlastnost nemá hodnotu null ani není definována. Od v2.5.7
boolean
false (nepravda)
idLength Určuje výchozí délku použitou k vygenerování nových náhodných hodnot relace a ID uživatele. Výchozí hodnota je 22, předchozí výchozí hodnota byla 5 (verze 2.5.8 nebo menší). Pokud potřebujete zachovat předchozí maximální délku, měli byste tuto hodnotu nastavit na 5. numerické
22

Od verze 2.6.0 je teď správa souborů cookie dostupná přímo z instance a po inicializaci ji můžete zakázat a znovu povolit.

Pokud je tato možnost během inicializace zakázána prostřednictvím konfigurace nebo , můžete ji znovu povolit prostřednictvím funkce disableCookiesUsage cookieCfg.enabled ICookieMgr. setEnabled

Správa souborů cookie založená na instancích také nahrazuje předchozí globální funkce CoreUtils disableCookies() systémů setCookie(...) , a getCookie(...) deleteCookie(...) . A abyste mohli využívat vylepšení stromového třásání, která byla zavedena také jako součást verze 2.6.0, neměli byste už používat globální funkce.

ICookieMgrConfig

Konfigurace souborů cookie pro správu souborů cookie na základě instance přidaná ve verzi 2.6.0.

Název Description Typ a Výchozí
enabled Logická hodnota, která určuje, jestli aktuální instance povolí používání souborů cookie sadou SDK. Pokud je false, instance sady SDK inicializované touto konfigurací nebude ukládat ani číst žádná data ze souborů cookie. boolean
true
doména Vlastní doména souborů cookie. To je užitečné v případě, že chcete sdílet soubory Přehledy soubory cookie mezi subdoménami. Pokud není zadaná, použije hodnotu z kořenové cookieDomain hodnoty. řetězec
null
program Určuje cestu, která se má použít pro soubor cookie, pokud není zadaná, použije libovolnou hodnotu z kořenové cookiePath hodnoty. řetězec
/
getCookie Funkce pro načtení pojmenované hodnoty cookie, pokud není zadaná, použije interní parsování souborů cookie / ukládání do mezipaměti. (name: string) => string
null
setCookie Funkce pro nastavení pojmenovaného souboru cookie se zadanou hodnotou, která se volá pouze při přidávání nebo aktualizaci souboru cookie. (name: string, value: string) => void
null
delCookie Funkce pro odstranění pojmenovaného souboru cookie se zadanou hodnotou, která je oddělená od setCookie, aby se předešlo nutnosti analyzovat hodnotu, abyste zjistili, jestli je soubor cookie přidaný nebo odebraný. Pokud není k dispozici, bude použita interní analýza nebo ukládání souborů cookie. (name: string, value: string) => void
null

Povolit sledování času na stránce

Nastavením se autoTrackPageVisitTime: true sleduje čas strávený uživateli na každé stránce. V každém novém PageView je doba, kterou uživatel strávil na Předchozí stránce, odeslána jako vlastní metrika s názvem PageVisitTime . Tato vlastní metrika je zobrazitelná v Průzkumník metrik jako metrika založená na protokolu.

Povolit korelaci

Korelace generuje a odesílá data, která umožňují distribuované trasování a nanáší mapu aplikace, zobrazení na konci transakcea další diagnostické nástroje.

Následující příklad zobrazuje všechny možné konfigurace potřebné k povolení korelace s poznámkami pro konkrétní scénář níže:

// excerpt of the config section of the JavaScript SDK snippet with correlation
// between client-side AJAX and server requests enabled.
cfg: { // Application Insights Configuration
    instrumentationKey: "YOUR_INSTRUMENTATION_KEY_GOES_HERE"
    disableFetchTracking: false,
    enableCorsCorrelation: true,
    enableRequestHeaderTracking: true,
    enableResponseHeaderTracking: true,
    correlationHeaderExcludedDomains: ['myapp.azurewebsites.net', '*.queue.core.windows.net']
    /* ...Other Configuration Options... */
}});
</script>

Pokud některý ze serverů jiných výrobců, které klient komunikuje, nemůže přijmout Request-Id hlavičky a a Request-Context nemůžete aktualizovat jejich konfiguraci, pak je budete muset vložit do seznamu vyloučení prostřednictvím correlationHeaderExcludedDomains Vlastnosti konfigurace. Tato vlastnost podporuje zástupné znaky.

Na straně serveru musí být možné přijmout připojení k těmto hlavičkám. V závislosti na Access-Control-Allow-Headers konfiguraci na straně serveru je často potřeba rozšíření seznamu na straně serveru tím, že ručně přidáte Request-Id a Request-Context .

Access-Control-Allow-Headers: Request-Id , Request-Context , <your header>

Poznámka

pokud používáte OpenTelemtry nebo Application Insights sady sdk vydané v 2020 nebo novějších verzích, doporučujeme použít WC3 TraceContext. Tadynajdete pokyny k konfiguraci.

Jednostránkové aplikace

Ve výchozím nastavení tato sada SDK nezpracovává změny směrování na základě stavu, ke kterým dochází v aplikacích s jednou stránkou. Pokud chcete povolit automatické sledování změn směrování pro jednu stránkovou aplikaci, můžete přidat enableAutoRouteTracking: true do konfigurace instalace.

v současné době nabízíme samostatný React modul plug-in, který můžete inicializovat pomocí této sady SDK. bude také provádět sledování změn směrování pro vás a také shromažďovat další React specifickou telemetrii.

Poznámka

použijte enableAutoRouteTracking: true pouze v případě, že nepoužíváte modul plug-in React. Obě jsou schopné posílat nové PageViews při změně trasy. Pokud jsou obě povolené, může se odeslat duplicitní PageViews.

Rozšíření

Rozšíření
React
React Native
Angular
Klikněte na analýza Automatická kolekce.

Prozkoumat data v prohlížeči nebo na straně klienta

Data v prohlížeči nebo na straně klienta si můžete prohlédnout na základě metrik a přidat jednotlivé metriky, které vás zajímají:

snímek obrazovky se stránkou metrik v Application Insights znázorňující grafická zobrazení dat metrik pro webovou aplikaci.

Data můžete také zobrazit ze sady JavaScript SDK prostřednictvím prostředí prohlížeče na portálu.

Vyberte prohlížeč a pak zvolte selhání nebo výkon.

snímek obrazovky stránky prohlížeče v Application Insights ukazuje, jak přidat selhání prohlížeče nebo výkon prohlížeče k metrikám, které můžete zobrazit pro vaši webovou aplikaci.

Výkon

snímek obrazovky se stránkou performance (výkon) v Application Insights znázorňující grafické zobrazení metrik operací pro webovou aplikaci.

Závislosti

snímek obrazovky se stránkou performance (výkon) v Application Insights znázorňující grafické zobrazení metrik závislostí pro webovou aplikaci.

Analýzy

Chcete-li zadat dotaz na telemetrii shromážděnou sadou JavaScript SDK, vyberte tlačítko Zobrazit v protokolech (Analytics) . Přidáním where příkazu client_Type == "Browser" se zobrazí pouze data z sady JavaScript SDK a všechny telemetrie na straně serveru shromážděné jinými sadami SDK budou vyloučeny.

// average pageView duration by name
let timeGrain=5m;
let dataset=pageViews
// additional filters can be applied here
| where timestamp > ago(1d)
| where client_Type == "Browser" ;
// calculate average pageView duration for all pageViews
dataset
| summarize avg(duration) by bin(timestamp, timeGrain)
| extend pageView='Overall'
// render result in a chart
| render timechart

Podpora zdrojového mapování

Minifikovaného zásobník volání telemetrie výjimek může být unminified v Azure Portal. Všechna existující integrace na panelu podrobností výjimky budou fungovat s nově unminified zásobník volání.

prostředek Application Insights můžete propojit s vlastním kontejnerem Azure Blob Storage a automaticky zrušení minifikace zásobníky volání. Informace o tom, jak začít, najdete v článku podpora automatického mapování zdrojů.

Přetažení

  1. Vyberte položku telemetrie výjimek v Azure Portal, abyste zobrazili její "Podrobnosti o koncových transakcích".
  2. Určete, která zdrojová mapování odpovídají tomuto zásobníku volání. Zdrojová mapa musí odpovídat zdrojovému souboru rámce zásobníku, ale má příponu. .map
  3. Přetáhněte zdrojové mapy do zásobníku volání v Azure Portal  animovaný obrázek ukazující, jak přetahovat zdrojové soubory mapování ze složky sestavení do okna zásobník volání v Azure Portal.

Application Insights Web Basic

pro zjednodušené prostředí můžete místo toho nainstalovat základní verzi Application Insights

npm i --save @microsoft/applicationinsights-web-basic

Tato verze je dodávána s minimálním počtem funkcí a funkcemi, které vám závisí na jejich sestavování podle potřeby. Například neprovede žádnou Autocollection (nezachycené výjimky, AJAX atd.). Tato verze neobsahuje rozhraní API pro odesílání určitých typů telemetrie, například, trackTrace trackException atd., takže budete muset zadat vlastní obálku. K dispozici je jediné rozhraní API track . Tady se nachází Ukázka .

Příklady

příklady spustitelný naleznete v tématu Application Insights JavaScript SDK samples.

upgrade ze starší verze Application Insights

Přerušující se změny v verzi sady SDK v2:

  • Pro lepší signatury rozhraní API se některá volání rozhraní API, například trackPageView a trackException, aktualizovala. Spuštění v aplikaci Internet Explorer 8 a starších verzích prohlížeče se nepodporuje.
  • Obálka telemetrie má název pole a strukturu, které se mění kvůli aktualizacím schématu dat.
  • Přesunuto context.operation do context.telemetryTrace . Některá pole se také změnila ( operation.id --> telemetryTrace.traceID ).
    • Chcete-li ručně aktualizovat aktuální ID PageView (například v aplikacích SPA), použijte appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId() .

      Poznámka

      Aby ID trasování bylo jedinečné, kde jste předtím používali Util.newId() , teď použijte Util.generateW3CId() . Oba nakonec mají ID operace.

Pokud používáte aktuální sadu SDK 1.0.20 (Application Insights produkční SDK) a chcete zjistit, jestli nová sada SDK funguje v modulu runtime, aktualizujte adresu URL v závislosti na vašem aktuálním scénáři načítání sady SDK.

  • stáhnout prostřednictvím CDN scénář: aktualizujte fragment kódu, který aktuálně používáte k odkazování na následující adresu URL:

    "https://js.monitor.azure.com/scripts/b/ai.2.min.js"
    
  • scénář npm: volejte downloadAndSetup ke stažení úplného skriptu ApplicationInsights z CDN a inicializujte ho pomocí klíče instrumentace:

    appInsights.downloadAndSetup({
       instrumentationKey: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
       url: "https://js.monitor.azure.com/scripts/b/ai.2.min.jss"
       });
    

Test v interním prostředí, aby se ověřilo, že telemetrie monitorování funguje podle očekávání. Pokud vše funguje, aktualizujte signatury rozhraní API odpovídajícím způsobem verze sady SDK v2 a nasaďte je v produkčním prostředí.

Výkon nebo režie sady SDK

na pouhých 36 KB komprimovaný jako gzip a při inicializaci jenom ~ 15 ms, Application Insights na web přidá zanedbatelné množství loadtime. Pomocí fragmentu kódu se rychle načtou minimální součásti knihovny. Do té doby se celý skript stáhne na pozadí.

při stahování skriptu z CDN je veškeré sledování stránky zařazeno do fronty. Po dokončení asynchronní inicializace staženého skriptu budou sledovány všechny události, které byly zařazeny do fronty. V důsledku toho nedojde ke ztrátě žádné telemetrie během celého životního cyklu stránky. Tento proces instalace poskytuje stránku se systémovou analýzou, která je pro vaše uživatele neviditelná.

Souhrn:

  • verze npm
  • komprimovaná velikost gzip
  • Celkový čas inicializace na 15 MS
  • V průběhu životního cyklu stránky nebylo vynecháno žádné sledování.

Podpora prohlížečů

Chrome Firefox IE Opera Safari
Nejnovější ✔ Chrome Nejnovější ✔ Firefoxu IE 9 nebo & Edge ✔
IE 8 – kompatibilní
Opera Latest ✔ Nejnovější ✔ Safari

Kompatibilita ES3/IE8

Jako sada SDK existuje mnoho uživatelů, kteří nemohou řídit prohlížeče, které používají jejich zákazníci. Proto musíme zajistit, aby tato sada SDK "fungovala" a nepřerušil provádění JS při načtení starším prohlížečem. I když by ideální nebylo podporovat prohlížeče IE8 a starší generace (ES3), existuje mnoho velkých zákazníků a uživatelů, kteří i nadále vyžadují, aby stránky "fungovaly", a jak jsme uvedli, mohou nebo nemohou řídit, který prohlížeč si jejich koncoví uživatelé zvolí.

Neznamená to, že budeme podporovat pouze nejnižší společnou sadu funkcí, pouze potřebujeme zachovat kompatibilitu kódu ES3 a při přidávání nových funkcí je potřeba je přidat způsobem, který nenaruší parsování JAVAScriptu ES3 a přidá se jako volitelná funkce.

Úplné GitHub podpoře IE8 najdete v tématu .

Open source sada SDK

Sada Application Přehledy JavaScript SDK je open source, která umožňuje zobrazit zdrojový kód nebo přispívat do projektu, a proto navštivte oficiální GitHub úložiště.

Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi.

Další kroky