Application Insights für Webseiten

Hinweis

Wir prüfen weiterhin die Tauglichkeit von OpenTelemetry für Browser-Szenarien. In absehbarer Zukunft empfehlen wir das Application Insights JavaScript SDK. Es ist vollständig kompatibel mit der verteilten OpenTelemetry-Ablaufverfolgung.

Informieren Sie sich über die Leistung und Nutzung Ihrer Webseite oder App. Wenn Sie Application Insights Ihrem Seitenskript hinzufügen, erhalten Sie Zeitangaben zu Seitenladevorgängen und AJAX-Aufrufen, Informationen zur Anzahl sowie Details zu Browserausnahmen und AJAX-Fehlern. Sie erhalten auch Benutzer- und Sitzungsanzahlen. All diese Telemetriedaten können nach Seite, Clientbetriebssystem und Browserversion, geografischem Standort und anderen Aspekten segmentiert werden. Sie können Warnungen für die Fehleranzahl oder das langsame Laden von Seiten festlegen. Indem Sie Ablaufverfolgungsaufrufe in JavaScript-Code einfügen, können Sie nachverfolgen, wie die verschiedenen Funktionen Ihrer Webseitenanwendung genutzt werden.

Application Insights kann mit allen Webseiten verwendet werden, indem Sie einen kurzen JavaScript-Codeabschnitt hinzufügen. Node.js verfügt über ein eigenständiges SDK. Wenn Ihr Webdienst Java oder ASP.NET ist, können Sie die serverseitigen SDKs mit dem clientseitigen JavaScript SDK verwenden, um die Leistung Ihrer App vollständig zu verstehen.

Hinzufügen des JavaScript SDK

  1. Zuerst benötigen Sie eine Application Insights-Ressource. Wenn Sie noch keine Ressource und keine Zeichenfolge haben, befolgen Sie die Anweisungen zum Erstellen einer neuen Ressource.
  2. Kopieren Sie die Verbindungszeichenfolge für die Ressource, an die Ihre JavaScript-Telemetriedaten (aus Schritt 1) gesendet werden sollen. Sie fügen sie der Einstellung connectionString des Application Insights JavaScript SDK hinzu.
  3. Fügen Sie das Application Insights JavaScript SDK Ihrer Webseite oder App über eine der beiden folgenden Optionen hinzu:

Warnung

@microsoft/applicationinsights-web-basic - AISKULight unterstützt keine Verwendung von Verbindungszeichenfolgen.

Verwenden Sie nur eine Methode, um Ihrer Anwendung das JavaScript SDK hinzuzufügen. Wenn Sie das npm-Setup verwenden, verwenden Sie nicht den Codeausschnitt und umgekehrt.

Hinweis

Beim NPM-Setup wird das JavaScript SDK als eine Abhängigkeit in Ihrem Projekt installiert und IntelliSense aktiviert. Der Codeausschnitt ruft das SDK zur Laufzeit ab. Beide unterstützen die gleichen Funktionen. Entwickler, die mehr benutzerdefinierte Ereignisse und Konfiguration wünschen, entscheiden sich im Allgemeinen für das npm-Setup. Benutzer, die nach einer schnellen Aktivierung von vorgefertigten Webanalysen suchen, entscheiden sich für den Codeausschnitt.

npm-basiertes Setup

Führen Sie die Installation über npm aus.

npm i --save @microsoft/applicationinsights-web

Hinweis

Dieses Paket enthält Typisierungen. Sie müssen daher kein separates Typisierungspaket installieren.

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

const appInsights = new ApplicationInsights({ config: {
  connectionString: 'Copy connection string from Application Insights Resource Overview'
  /* ...Other Configuration Options... */
} });
appInsights.loadAppInsights();
appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview

Codeausschnittbasiertes Setup

Wenn Ihre App npm nicht verwendet, können Sie Ihre Webseiten mit Application Insights direkt instrumentieren, indem Sie diesen Codeausschnitt am Anfang jeder Ihrer Seiten einfügen. Vorzugsweise sollte er das erste Skript in Ihrem <head>-Abschnitt sein. Auf diese Weise können potenzielle Probleme mit allen Ihren Abhängigkeiten und optional auch alle JavaScript-Fehler überwacht werden. Wenn Sie die Blazor Server-App verwenden, fügen Sie den Codeausschnitt am Anfang der Datei _Host.cshtml im Abschnitt <head> ein.

Ab Version 2.5.5 enthält das Ereignis „Seitenansicht“ einen neuen Tag „ai.internal.snippet“, der die identifizierte Snippet-Version enthält. Mit dieser Funktion können Sie verfolgen, welche Version des Snippets Ihre Anwendung verwendet.

Der aktuelle Codeausschnitt, der folgt, ist Version „5“. Die Version ist im Codeausschnitt als sv:"#" codiert. Die aktuelle Version ist auch auf GitHub verfügbar.

<script type="text/javascript">
!function(T,l,y){var S=T.location,k="script",D="connectionString",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"}(),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
    connectionString: "Copy connection string from Application Insights Resource Overview"
    /* ...Other Configuration Options... */
}});
</script>

Hinweis

Für eine bessere Lesbarkeit und zur Reduzierung möglicher JavaScript-Fehler werden alle möglichen Konfigurationsoptionen im voranstehenden Codeausschnitt in einer eigenen Zeile aufgeführt. Wenn Sie den Wert einer kommentierten Zeile nicht ändern möchten, kann sie entfernt werden.

Melden von Skriptladefehlern

Diese Version des Codeausschnitts erkennt und meldet Fehler beim Laden des SDK aus dem CDN als Ausnahme im Azure Monitor-Portal (unter den > Ausnahmen von Fehlern im > Browser). Die Ausnahme bietet Einblick in Fehler dieser Art, so dass Sie wissen, dass Ihre Anwendung nicht wie erwartet Telemetriedaten (oder andere Ausnahmen) meldet. Dieses Signal ist wichtig, denn es informiert Sie darüber, dass Sie aufgrund eines Fehlers beim Laden oder Initialisieren des SDK Telemetriedaten verlieren. Dies kann zu folgenden Problemen führen:

  • Unzureichende Berichterstattung darüber, wie Benutzer Ihre Website verwenden (oder versuchen, dies zu tun).
  • Fehlende Telemetriedaten dazu, wie Ihre Benutzer Ihre Website verwenden.
  • Fehlende JavaScript-Fehler, die unter Umständen verhindern, dass Ihre Benutzer Ihre Website erfolgreich nutzen können.

Weitere Informationen zu dieser Ausnahme finden Sie unter Behandlung von SDK-Ladefehlern für JavaScript-Web-Apps.

Für die Meldung dieses Fehlers als Ausnahme an das Portal wird nicht die Konfigurationsoption disableExceptionTracking aus der Application Insights-Konfiguration verwendet. Wenn dieser Fehler auftritt, wird es aus diesem Grund immer vom Codeausschnitt gemeldet, auch wenn die window.onerror-Unterstützung deaktiviert ist.

Das Melden von SDK-Ladefehlern wird in Internet Explorer 8 oder niedriger nicht unterstützt. Dieses Verhalten reduziert die heruntergesetzte Größe des Snippets, indem davon ausgegangen wird, dass in den meisten Umgebungen nicht ausschließlich Internet Explorer 8 oder niedriger eingesetzt wird. Wenn diese Anforderung für Sie gilt und Sie diese Ausnahmen erhalten möchten, müssen Sie entweder einen fetch-Polyfill in den Code schreiben oder eine Version des Codeausschnitts erstellen, in der XDomainRequest anstelle von XMLHttpRequest eingesetzt wird. Verwenden Sie Codeausschnitt-Quellcode bereitstellen als Ausgangspunkt.

Hinweis

Wenn Sie eine vorherige Version des Ausschnitts nutzen, führen Sei ein Update auf die neueste Version durch, damit Sie über diese bisher nicht gemeldeten Probleme informiert werden.

Option für die Konfiguration des Ausschnitts

Alle Konfigurationsoptionen wurden an das Ende des Skripts verschoben. Diese Platzierung verhindert, dass versehentlich JavaScript-Fehler eingefügt werden, die nicht nur dazu führen würden, dass das SDK nicht geladen werden kann, sondern auch, dass die Meldung des Fehlers deaktiviert wird.

Jede Konfigurationsoption wird oben auf einer neuen Zeile angezeigt. Wenn Sie den Standardwert einer als „[optional]“ aufgelisteten Konfigurationsoption nicht überschreiben möchten, können Sie die Zeile entfernen, um die Größe der zurückgegebenen Zeile zu verringern.

Die verfügbaren Konfigurationsoptionen sind in dieser Tabelle aufgeführt.

Name type BESCHREIBUNG
src Zeichenfolge [erforderlich] Die vollständige URL, von der das SDK geladen werden soll. Dieser Wert wird für das Attribut „src“ eines dynamisch hinzugefügten <script />-Tags verwendet. Sie können die öffentliche CDN-Adresse oder eine privat gehostete nehmen.
name Zeichenfolge [optional] Der globale Name des initialisierten SDK. Der Standardwert ist appInsights. window.appInsights ist daher ein Verweis auf die initialisierte Instanz. Wenn Sie einen Namenswert angeben oder eine frühere Instanz zugewiesen zu sein scheint (über den globalen Namen „appInsightsSDK“), wird dieser Namenswert auch im globalen Namespace als window.appInsightsSDK=<name value> definiert. Der Initialisierungscode des SDKs verwendet diesen Verweis, um sicherzustellen, dass die richtigen Methoden für das Codeausschnittgerüst und den Proxy initialisiert und aktualisiert werden.
ld Nummer in ms [optional] Gibt die Lastverzögerungsdauer an, die gewartet werden muss, bevor versucht werden kann, dass SDK zu laden. Der Standardwert beträgt 0 ms. Jeder negative Wert fügt sofort dem <head>-Bereich (Kopf) der Seite ein Skripttag hinzu. Das Seitenladeereignis wird dann blockiert, bis das Skript geladen wurde oder fehlschlägt.
useXhr boolesch [optional] Diese Einstellung wird nur für die Berichterstattung über SDK-Ladefehler verwendet. Bei der Berichterstattung wird zunächst auf die fetch()-Methode zurückgegriffen, falls diese verfügbar ist. Anschließend wird ein Fallback auf XHR ausgeführt. Wenn Sie diesen Wert auf „true“ festlegen, wird schlicht die fetch-Überprüfung umgangen. Dieser Wert muss nur verwendet werden, wenn Ihre Anwendung in einer Umgebung ausgeführt wird, in der die fetch-Methode keine Fehlerereignisse senden kann.
crossOrigin Zeichenfolge [optional] Wenn Sie diese Einstellung aufnehmen, enthält das Skripttag, das für den SDK-Download hinzugefügt wurde, das Attribut „crossOrigin“ mit diesem Zeichenfolgenwert. Ist diese Einstellung nicht konfiguriert (Standardeinstellung), wird kein crossOrigin-Attribut hinzugefügt. Es wird empfohlen, keinen Wert zu definieren (Standardeinstellung) oder die Werte „“ oder „anonymous“ (anonym) zu verwenden. Eine vollständige Liste der zulässigen Werte finden Sie in der Dokumentation zum HTML-Attribut crossorigin.
cfg Objekt [erforderlich] Die bei der Initialisierung an das Application Insights SDK übergebene Konfiguration.

Verbindungszeichenfolgen-Setup

Hinweis

Am 31. März 2025 wird der Support für die auf Instrumentierungsschlüsseln basierende Erfassung eingestellt. Die Erfassung von Instrumentierungsschlüsseln funktioniert zwar weiterhin, wir stellen jedoch keine Updates und keinen Support mehr für das Feature bereit. Wechseln Sie zu Verbindungszeichenfolgen, damit Sie neue Funktionen nutzen können.

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

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

Senden von Telemetriedaten an das Azure-Portal

Standardmäßig sammelt das Application Insights JavaScript SDK automatisch viele Telemetrieelemente, die bei der Ermittlung der Integrität Ihrer Anwendung und der zugrunde liegenden Benutzeroberfläche hilfreich sind.

Diese Telemetriedaten beinhalten:

  • Nicht abgefangene Ausnahmen in Ihrer App, einschließlich Informationen zu:
    • Stapelüberwachung.
    • Ausnahmedetails und Meldung, die den Fehler begleitet.
    • Zeilen- und Spaltennummer des Fehlers.
    • URL, bei der der Fehler ausgelöst wurde.
  • Anforderungen an die Netzwerkabhängigkeit, die von den XHR und Fetch-Anforderungen Ihrer App gestellt werden (die Abrufsammlung (fetch) ist standardmäßig deaktiviert), enthalten Informationen zu:
    • URL der Abhängigkeitsquelle.
    • Zum Anfordern der Abhängigkeit verwendete/r Befehl und Methode.
    • Dauer der Anforderung.
    • Ergebniscode und Erfolgsstatus der Anforderung.
    • ID (sofern vorhanden) des Benutzers, der die Anforderung sendet.
    • Korrelationskontext (falls vorhanden), in dem die Anforderung gesendet wird.
  • Benutzerinformationen (z. B. Standort, Netzwerk, IP)
  • Geräteinformationen (z. B. Browser, Betriebssystem, Version, Sprache, Modell)
  • Sitzungsinformationen

Telemetrieinitialisierer

Telemetrieinitialisierer werden verwendet, um den Inhalt der gesammelten Telemetriedaten zu ändern, bevor sie vom Browser des Benutzers gesendet werden. Sie können auch verwendet werden, um zu verhindern, dass bestimmte Telemetriedaten gesendet werden, indem sie false zurückgeben. Ihrer Application Insights-Instanz können mehrere Telemetrieinitialisierer hinzugefügt werden. Sie werden in der Reihenfolge des Hinzufügens ausgeführt.

Das Eingabeargument für addTelemetryInitializer ist ein Rückruf, der ein ITelemetryItem als Argument verwendet und boolean oder void zurückgibt. Bei Rückgabe von false wird das Telemetrieelement nicht gesendet. Andernfalls fährt es mit dem nächsten Telemetrieinitialisierer (falls vorhanden) fort, oder es wird an den Endpunkt der Telemetriedatensammlung gesendet.

Ein Beispiel für die Verwendung von Telemetrieinitialisierern:

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

Konfiguration

Die meisten Konfigurationsfelder werden so benannt, dass sie standardmäßig auf „false“ festgelegt werden können. Alle Felder mit Ausnahme von connectionString sind optional.

Name BESCHREIBUNG Standard
connectionString Erforderlich
Verbindungszeichenfolge, die Sie aus dem Azure-Portal abgerufen haben
Zeichenfolge
NULL
accountId Eine optionale Konto-ID, wenn Ihre App Benutzer in Konten gruppiert. Keine Leerzeichen, Kommas, Semikolons, Gleichheitszeichen oder senkrechten Striche. Zeichenfolge
NULL
sessionRenewalMs Eine Sitzung wird protokolliert, wenn der Benutzer während dieser Zeitspanne (in Millisekunden) inaktiv ist. NUMERIC
1800000
(30 Minuten)
sessionExpirationMs Eine Sitzung wird protokolliert, wenn sie während dieser Zeitspanne (in Millisekunden) fortgesetzt wurde. NUMERIC
86400000
(24-Stunden)
maxBatchSizeInBytes Maximale Größe des Telemetriedatenbatches. Wenn ein Batch diesen Grenzwert überschreitet, wird er sofort gesendet, und ein neuer Batch wird gestartet. NUMERIC
10000
maxBatchInterval Dauer der Batchverarbeitung von Telemetriedaten vor dem Senden (Millisekunden). NUMERIC
15000
disable​ExceptionTracking Bei „true“ werden Ausnahmen nicht automatisch gesammelt. boolean
false
disableTelemetry Bei „true“ werden Telemetriedaten nicht gesammelt oder gesendet. boolean
false
enableDebug Bei „true“ werden interne Debugdaten als eine Ausnahme ausgelöst statt protokolliert zu werden. Dies geschieht unabhängig von den SDK-Protokollierungseinstellungen. Der Standardwert ist "false".
Hinweis: Wenn Sie diese Einstellung aktivieren, werden die Telemetriedaten beim Auftreten eines internen Fehlers verworfen. Diese Einstellung kann hilfreich sein, um Probleme mit Ihrer Konfiguration oder der Nutzung des SDK schnell zu identifizieren. Wenn beim Debuggen keine Telemetriedaten verloren gehen sollen, empfiehlt es sich, loggingLevelConsole oder loggingLevelTelemetry statt enableDebug zu verwenden.
boolean
false
loggingLevelConsole Protokolliert interne Application Insights-Fehler in der Konsole.
0: aus,
1: Nur schwerwiegende Fehler,
2: Alles (Fehler und Warnungen)
NUMERIC
0
loggingLevelTelemetry Sendet interne Application Insights-Fehler als Telemetriedaten.
0: aus,
1: Nur schwerwiegende Fehler,
2: Alles (Fehler und Warnungen)
NUMERIC
1
diagnosticLogInterval (intern) Abrufintervall (in ms) für interne Protokollierungswarteschlange. NUMERIC
10000
samplingPercentage Prozentsatz der Ereignisse, die gesendet werden. Die Standardeinstellung ist „100“. Dies bedeutet, dass alle Ereignisse gesendet werden. Legen Sie diese Option fest, wenn Sie Ihre Datenobergrenze für umfangreiche Anwendungen beibehalten möchten. NUMERIC
100
autoTrackPageVisitTime Bei „true“ wird in einem Seitenaufruf die Ansichtszeit der vorherigen instrumentierten Seite nachverfolgt und in Form von Telemetriedaten gesendet. Außerdem wird ein neuer Zeitgeber für den aktuellen Seitenaufruf gestartet. Diese Daten werden als benutzerdefinierte Metrik mit dem Namen PageVisitTime in milliseconds gesendet, und für die Berechnung wird die Funktion Date().now() verwendet (falls verfügbar). Falls „now()“ nicht verfügbar ist (Internet Explorer 8 oder früher), erfolgt ein Fallback auf new Date().getTime() verwendet. Der Standardwert ist "false". boolean
false
disableAjaxTracking Bei „true“ werden AJAX-Aufrufe nicht automatisch gesammelt. boolean
false
disableFetchTracking Bei „true“ werden Anforderungen zum Abrufen nicht automatisch gesammelt. boolean
false
overridePageViewDuration Bei „true“ wird das Standardverhalten von „trackPageView“ geändert, um bei dessen Aufruf das Ende des Intervalls für die Seitenaufrufdauer aufzuzeichnen. Bei „false“ ohne Angabe eines benutzerdefinierten Zeitraums für „trackPageView“ wird die Seitenaufrufleistung mithilfe der Navigationszeit-API berechnet. boolean
maxAjaxCallsPerView Mit der Standardeinstellung „500“ wird gesteuert, wie viele Ajax-Aufrufe pro Seitenaufruf überwacht werden. Legen Sie „–1“ fest, wenn alle (unbegrenzt) Ajax-Aufrufe auf der Seite überwacht werden sollen. NUMERIC
500
disableDataLossAnalysis Bei „false“ werden interne Absenderpuffer für Telemetriedaten beim Start auf noch nicht gesendete Elemente überprüft. boolean
true
disable​CorrelationHeaders Bei „false“ fügt das SDK allen Abhängigkeitsanforderungen zwei Header (Request-Id und Request-Context) hinzu, um sie mit entsprechenden serverseitigen Anforderungen zu korrelieren. boolean
false
correlationHeader​ExcludedDomains Korrelations-Header für bestimmte Domänen deaktivieren. string[]
nicht definiert
correlationHeader​ExcludePatterns Korrelationskopfzeilen mit regulären Ausdrücken deaktivieren. regex[]
nicht definiert
correlationHeader​Domains Korrelations-Header für bestimmte Domänen aktivieren. string[]
nicht definiert
disableFlush​OnBeforeUnload Bei „true“ wird die Methode „Flush“ (Leeren) beim Auslösen eines onBeforeUnload-Ereignisses nicht aufgerufen. boolean
false
enableSessionStorageBuffer Bei „true“ wird der Puffer mit allen nicht gesendeten Telemetriedaten im Sitzungsspeicher gespeichert. Der Puffer wird beim Laden der Seite wiederhergestellt. boolean
true
cookieCfg Standardwert ist die aktivierte Cookienutzung. Vollständige Standardeinstellungen finden Sie unter ICookieCfgConfig-Einstellungen. ICookieCfgConfig
(Seit 2.6.0)
nicht definiert
isCookieUseDisabled
disableCookiesUsage
Bei „true“ speichert oder liest das SDK keine Daten aus Cookies. Dadurch werden die Benutzer- und Sitzungscookies deaktiviert, und die Nutzungsbereiche und Benutzeroberflächen werden unbrauchbar. isCookieUseDisable wird zugunsten von disableCookiesUsage eingestellt. Wenn beide bereitgestellt werden, hat disableCookiesUsage Vorrang.
(Seit v2.6.0) Und wenn cookieCfg.enabled ebenfalls definiert ist, hat es Vorrang vor diesem Wert. Die Cookienutzung kann nach der Initialisierung über core.getCookieMgr().setEnabled(true) erneut aktiviert werden.
Alias für cookieCfg.enabled.
false
cookieDomain Benutzerdefinierte Cookiedomäne. Diese Option ist hilfreich, wenn Sie Application Insights-Cookies über untergeordnete Domains hinweg freigeben möchten.
(Seit v2.6.0) Wenn cookieCfg.domain definiert ist, hat es Vorrang vor diesem Wert.
Alias für cookieCfg.domain.
NULL
cookiePath Benutzerdefinierter Cookie-Pfad. Dies Option ist hilfreich, wenn Sie Application Insights-Cookies hinter einem Anwendungs-Gateway freigeben möchten.
Wenn cookieCfg.path definiert ist, hat es Vorrang vor diesem Wert.
Alias für cookieCfg.path.
(Seit 2.6.0)
NULL
isRetryDisabled Bei „false“ wiederholen Sie den Vorgang für 206 (teilweise erfolgreich), 408 (Timeout), 429 (zu viele Anforderungen), 500 (interner Serverfehler), 503 (Dienst nicht verfügbar) und 0 (offline, nur wenn erkannt). boolean
false
isStorageUseDisabled Bei „true“ speichert und liest das SDK keine Daten aus dem lokalen Speicher und dem Sitzungsspeicher. boolean
false
isBeaconApiDisabled Bei „false“ sendet das SDK alle Telemetriedaten mithilfe der Beacon-API. boolean
true
onunloadDisableBeacon Wenn die Registerkarte geschlossen wird, sendet das SDK alle verbleibenden Telemetriedaten mit der Beacon API. boolean
false
sdkExtension Legt den SDK-Erweiterungsnamen fest. Hierbei sind nur alphabetische Zeichen zulässig. Der Erweiterungsname wird dem Tag ai.internal.sdkVersion als Präfix hinzugefügt (z. B. ext_javascript:2.0.0). Zeichenfolge
NULL
isBrowserLink​TrackingEnabled Bei „true“ nachverfolgt das SDK alle Browserlinkanforderungen. boolean
false
appId „AppId“ wird für die Korrelation zwischen AJAX-Abhängigkeiten verwendet, die clientseitig mit den serverseitigen Anforderungen erfolgt. Wenn die Beacon-API aktiviert ist, kann sie nicht automatisch verwendet werden. Sie kann aber in der Konfiguration manuell festgelegt werden. Zeichenfolge
NULL
enable​CorsCorrelation Bei „true“ fügt das SDK allen CORS-Anforderungen zwei Header (Request-Id und Request-Context) hinzu, um ausgehende AJAX-Abhängigkeiten mit entsprechenden serverseitigen Anforderungen zu korrelieren. boolean
false
namePrefix Ein optionaler Wert, der als „name“-Postfix für „localStorage“ und den Cookienamen verwendet wird. Zeichenfolge
nicht definiert
enable​AutoRoute​Tracking Routenänderungen in Single-Page-Webanwendungen automatisch nachverfolgen. Bei „true“ sendet jede Routenänderung einen neuen Seitenaufruf an Application Insights. Hashroutenänderungen (example.com/foo#bar) werden ebenfalls als neue Seitenaufrufe aufgezeichnet. boolean
false
enableRequest​HeaderTracking Falls „true“ werden AJAX- und Fetch-Anforderungsheader nachverfolgt. boolean
false
enableResponse​HeaderTracking Falls „true“ werden AJAX- und Fetch-Anforderungsantwortheader nachverfolgt. boolean
false
distributedTracingMode Legt den Modus für verteilte Ablaufverfolgung fest. Wenn der AI_AND_W3C-Modus oder der W3C-Modus festgelegt ist, werden Kontextheader für die W3C-Ablaufverfolgung (traceparent/tracestate) generiert und in alle ausgehenden Anforderungen eingeschlossen. AI_AND_W3C wird für Abwärtskompatibilität mit beliebigen mit älteren Application Insights-Versionen instrumentierten Diensten bereitgestellt. Beispiele finden Sie auf dieser Website. DistributedTracingModesoder
NUMERIC
(Seit v2.6.0) DistributedTracingModes.AI_AND_W3C
(v 2.5.11 oder früher) DistributedTracingModes.AI
enable​AjaxErrorStatusText Bei TRUE wird der Text zu Antwortfehlerdaten im Abhängigkeitsereignis für fehlerhafte AJAX-Anforderungen aufgeführt. boolean
false
enable​AjaxPerfTracking Flag, das die Suche nach und das Aufnehmen von zusätzlichen „window.performance“-Timings von Browsern in gemeldeten ajax-Metriken (XHR und fetch) ermöglicht. boolean
false
maxAjaxPerf​LookupAttempts Die maximale Anzahl von Wiederholungen für die Suche nach „window.performance“-Timings (falls verfügbar). Diese Option ist manchmal erforderlich, da nicht alle Browser die window.performance ausfüllen, bevor sie das Ende der XHR-Anfrage melden. Bei Fetch-Anforderungen wird dies nach Abschluss der Anforderung hinzugefügt. NUMERIC
3
ajaxPerfLookupDelay Die Zeitdauer, die gewartet werden muss, bevor noch einmal versucht werden kann, die „window.performance“-Timings für eine ajax-Anforderung zu suchen. Die Zeit wird in Millisekunden angegeben und direkt an setTimeout() übergeben. NUMERIC
25 ms
enableUnhandled​PromiseRejection​Tracking Bei TRUE werden unverarbeitete Ablehnungen von Zusagen automatisch erfasst und als JavaScript-Fehler gemeldet. Wenn disableExceptionTracking „true“ ist (Ausnahmen nicht nachverfolgen), wird der Konfigurationswert ignoriert, und unverarbeitete Ablehnungen von Zusagen werden nicht gemeldet. boolean
false
enablePerfMgr Wenn dies aktiviert ist (true), werden lokale PerfEvents für Code erzeugt, der so instrumentiert wurde, dass er PerfEvents ausgibt (über den doPerf()-Helper). Diese Option kann verwendet werden, um Probleme der Performance innerhalb des SDKs basierend auf der Nutzung oder optional innerhalb des eigenen instrumentierten Codes zu identifizieren. Weitere Informationen finden Sie in der Baisdokumentation. Seit v2.5.7 boolean
false
perfEvtsSendAll Wenn enablePerfMgr aktiviert ist und IPerfManager ein INotificationManager.perfevent() auslöst, bestimmt dieses Flag, ob ein Ereignis ausgelöst (und an alle Listener gesendet) wird für alle Ereignisse (true) oder nur für übergeordnete Ereignisse (false <Standard>).
Bei einem übergeordneten IPerfEvent-Element handelt es sich um ein Ereignis, bei dem noch kein anderes IPerfEvent zum Zeitpunkt der Erstellung dieses Ereignisses ausgeführt wird, und seine übergeordnete Eigenschaft ist nicht Null oder nicht definiert. Seit v2.5.7
boolean
false
idLength Die Standardlänge, die zum Erzeugen neuer zufälliger Sitzungs- und Benutzer-ID-Werte verwendet wird. Der Standardwert ist 22. Der vorherige Standardwert war 5 (v2.5.8 oder niedriger). Wenn Sie die vorherige maximale Länge beibehalten müssen, sollten Sie diesen Wert auf 5 festlegen. NUMERIC
22

Ab Version 2.6.0 ist die Cookie-Verwaltung nun direkt in der Instanz verfügbar und kann nach der Initialisierung deaktiviert und wieder aktiviert werden.

Wenn Sie die Cookieverwaltung während der Initialisierung über die Konfiguration disableCookiesUsage oder cookieCfg.enabled deaktiviert haben, können Sie sie nun über die disableCookiesUsage-Funktion setEnabled wieder aktivieren.

Die instanzbasierte Cookieverwaltung ersetzt auch die vorherigen globalen CcoreUtils-Funktionen von disableCookies(), setCookie(...), getCookie(...) und deleteCookie(...). Um von den ebenfalls mit der Version 2.6.0 eingeführten Tree-Shaking-Verbesserungen zu profitieren, sollten Sie die globalen Funktionen nicht mehr verwenden.

ICookieMgrConfig

Cookiekonfiguration für instanzbasierte Cookieverwaltung, in Version 2.6.0 hinzugefügt.

Name BESCHREIBUNG Typ und Voreinstellung
enabled Dies ist ein boolescher Wert, der angibt, ob die Verwendung von Cookies durch das SDK von der aktuellen Instanz aktiviert ist. „False“ gibt an, dass die von dieser Konfiguration initialisierte SDK-Instanz keine Daten aus Cookies speichert oder liest. boolean
true
Domäne Benutzerdefinierte Cookie-Domain, die hilfreich ist, wenn Sie Application Insights-Cookies über Subdomains hinweg freigeben möchten. Wenn nicht angegeben, wird der Wert aus dem cookieDomain-Stammwert verwendet. Zeichenfolge
NULL
path Gibt den Pfad an, der für das Cookie verwendet werden soll. Wenn er nicht angegeben wird, wird ein beliebiger Wert aus dem cookiePath-Stammwert verwendet. Zeichenfolge
/
getCookie Funktion zum Abrufen des angegebenen Cookiewerts. Wenn nicht angegeben, wird das interne Cookieparsing/-caching verwendet. (name: string) => string
NULL
setCookie Funktion zum Festlegen des benannten Cookies mit dem angegebenen Wert. Wird nur beim Hinzufügen oder Aktualisieren eines Cookies aufgerufen. (name: string, value: string) => void
NULL
delCookie Funktion zum Löschen des benannten Cookies mit dem angegebenen Wert, getrennt von setCookie, um zu vermeiden, dass der Wert geparst werden muss, um festzustellen, ob das Cookie hinzugefügt oder entfernt wird. Wenn nicht angegeben, wird das interne Cookieparsing/-caching verwendet. (name: string, value: string) => void
NULL

Aktivieren der Nachverfolgung der Verweildauer auf der Seite

Wenn Sie autoTrackPageVisitTime: true festlegen, wird die Zeit in Millisekunden nachverfolgt, die ein Benutzer auf jeder Seite verbringt. Bei jedem neuen Seitenaufruf wird die Zeitdauer, die der Benutzer auf der vorherigen Seite verbracht hat, als benutzerdefinierte Metrik mit dem Namen PageVisitTime gesendet. Diese benutzerdefinierte Metrik kann im Metrik-Explorer als eine „protokollbasierte Metrik“ angezeigt werden.

Aktivieren der verteilten Ablaufverfolgung

Die Korrelation generiert und sendet Daten, die die verteilte Ablaufverfolgung, die Anwendungsübersicht, die Ansicht der End-to-End-Transaktion und andere Diagnosetools unterstützen.

In JavaScript ist die Korrelation standardmäßig deaktiviert, um die von uns standardmäßig gesendeten Telemetriedaten zu minimieren. Die folgenden Beispiele zeigen Standardkonfigurationsoptionen für die Aktivierung der Korrelation.

Der folgende Beispielcode zeigt die Konfigurationen, die zum Aktivieren der Korrelation erforderlich sind.

// 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"
    connectionString: "Copy connection string from Application Insights Resource Overview"
    enableCorsCorrelation: true,
    enableRequestHeaderTracking: true,
    enableResponseHeaderTracking: true,
    correlationHeaderExcludedDomains: ['*.queue.core.windows.net']
    /* ...Other Configuration Options... */
}});
</script>

Hinweis

Es gibt zwei verteilte Ablaufverfolgungsmodi/-protokolle – KI (klassisch) und W3C TraceContext (neu). In Version 2.6.0 und höher sind beide standardmäßig aktiviert. Für ältere Versionen müssen Benutzer den W3C-Modus explizit aktivieren.

Routennachverfolgung

Standardmäßig verarbeitet dieses SDK keine statusbasierte Routenänderung, die in Single-Page-Webanwendungen erfolgt. Um das automatische Nachverfolgen von Routenänderungen für Ihre Single-Page-Webanwendung zu aktivieren, können Sie Ihrer Setupkonfiguration enableAutoRouteTracking: true hinzufügen.

Single-Page-Webanwendungen

Für Single Page-Webanwendungen finden Sie Plug-in-spezifische Anleitungen in der Plug-In-Dokumentation.

Plug-Ins
React
React Native
Angular
Automatische Erfassung von Klickanalysen

Erweiterte Korrelation

Wenn eine Seite erstmalig geladen wird und das SDK nicht vollständig initialisiert wurde, können wir die Vorgangs-ID für die erste Anforderung nicht generieren. Hieraus resultiert, dass die verteilte Ablaufverfolgung unvollständig ist, bis das SDK vollständig initialisiert wurde. Um dieses Problem zu beheben, können Sie dynamisches JavaScript auf der zurückgegebenen HTML-Seite einschließen. Das SDK verwendet während der Initialisierung eine Rückruffunktion, um die Vorgangs-ID aus serverside rückwirkend zu erhalten und clientside mit ihr auszufüllen.

Hier finden Sie ein Beispiel zum Erstellen von dynamischem JavaScript mithilfe von Razor.

<script>
!function(T,l,y){<removed snippet code>,{
    src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source
    onInit: function(appInsights) {
        var serverId = "@this.Context.GetRequestTelemetry().Context.Operation.Id";
        appInsights.context.telemetryTrace.parentID = serverId;
    },
    cfg: { // Application Insights Configuration
        instrumentationKey: "YOUR_INSTRUMENTATION_KEY_GOES_HERE"
    }});
</script>

Achtung

Die Anwendungs-UX ist noch nicht so optimiert, dass diese erweiterten Szenarien für verteilte Ablaufverfolgung des „erste Hops“ angezeigt werden. Die Daten sind in der Anforderungstabelle für Abfrage und Diagnose verfügbar.

Erweiterungen

Erweiterungen
React
React Native
Angular
Automatische Erfassung von Klickanalysen

Browser-/clientseitige Daten erkunden

Browser-/clientseitige Daten können angezeigt werden, indem Sie zu Metriken navigieren und einzelne Metriken hinzufügen, an denen Sie interessiert sind.

Screenshot der Seite „Metriken“ in Application Insights mit grafischen Darstellungen von Metrikdaten für eine Webanwendung.

Sie können Ihre Daten auch aus dem JavaScript SDK über die Browseroberfläche im Portal anzeigen.

Wählen Sie Browser und dann Fehler oder Leistung aus.

Screenshot der Seite „Browser“ in Application Insights, der zeigt, wie Sie den Metriken, die Sie für Ihre Webanwendung anzeigen können, Browserfehler oder Browserleistung hinzufügen können.

Leistung

Screenshot der Seite „Leistung“ in Application Insights mit grafischen Darstellungen von Vorgangsmetriken für eine Webanwendung.

Abhängigkeiten

Screenshot der Seite „Leistung“ in Application Insights mit grafischen Darstellungen von Abhängigkeitsmetriken für eine Webanwendung.

Analytics

Wenn Sie Ihre vom JavaScript SDK gesammelten Telemetriedaten abfragen möchten, wählen Sie die Schaltfläche In Protokollen anzeigen (Analytics) aus. Wenn Sie eine where-Anweisung vonclient_Type == "Browser" hinzufügen, werden nur Daten aus dem JavaScript SDK angezeigt. Alle serverseitigen Telemetriedaten, die von anderen SDKs gesammelt werden, werden ausgeschlossen.

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

Unterstützung für die Quellzuordnungsdatei

Die Minimierung der minimierten Aufrufliste Ihrer Ausnahmetelemetriedaten kann im Azure-Portal nicht aufgehoben werden. Alle vorhandenen Integrationen im Bereich „Ausnahmedetails“ funktionieren aber bei der Aufrufliste, deren Minimierung gerade aufgehoben wurde.

Sie können Ihre Application Insights-Ressource mit dem eigenen Azure Blob Storage-Container verknüpfen, um die Minimierung von Aufruflisten automatisch aufzuheben. Informationen zu den ersten Schritten finden Sie unter der automatischen Unterstützung der Quellzuordnungsdatei.

Drag & Drop

  1. Wählen Sie im Azure-Portal ein Element vom Typ „Ausnahmetelemetrie“ aus, um dessen „End-to-End-Transaktionsdetails“ anzuzeigen.

  2. Identifizieren Sie, welche Quellzuordnungsdateien dieser Aufrufliste entsprechen. Die Quellzuordnungsdatei muss mit der Quelldatei eines Stapelrahmens übereinstimmen, dabei allerdings mit dem Suffix .map versehen sein.

  3. Ziehen Sie die Quellzuordnungsdateien in die Aufrufliste im Azure-Portal.

    Animierte Darstellung des Ziehens von Quellzuordnungsdateien aus einem Buildordner in das Fenster der Aufrufliste im Azure-Portal.

Application Insights Web Basic

Für eine schlankere Erfahrung können Sie stattdessen die Basisversion von Application Insights installieren:

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

Diese Version ist mit der minimalen Anzahl von Features und Funktionen ausgestattet und basiert darauf, dass Sie sie nach Bedarf erstellen. So führt sie beispielsweise keine automatische Sammlung durch (nicht abgefangene Ausnahmen, AJAX usw.). Die APIs zum Senden bestimmter Arten von Telemetriedaten, wie z. B. trackTrace, trackException, sind in dieser Version nicht enthalten. Aus diesem Grund müssen Sie Ihren eigenen Wrapper bereitstellen. Die einzige verfügbare API ist track. Ein Beispiel finden Sie hier.

Beispiele

Ausführbare Beispiele finden Sie in den Beispielen für das Application Insights JavaScript SDK.

Upgrade von der alten Application Insights-Version

Breaking Changes in der SDK V2-Version:

  • Um bessere API-Signaturen zu ermöglichen, wurden einige API-Aufrufe, wie z. B. „trackPageView“ und „trackException“, aktualisiert. Eine Ausführung in Internet Explorer 8 und früheren Versionen des Browsers wird nicht unterstützt.

  • Beim Umschlag für die Telemetriedaten gibt es infolge von Datenschemaaktualisierungen Feldname- und Strukturänderungen.

  • context.operation wurde in context.telemetryTrace verschoben. Einige Felder wurden ebenfalls geändert (operation.id >telemetryTrace.traceID).

    Zum manuellen Aktualisieren der derzeitigen PageView-ID (z. B. in Single-Page-Webanwendungen) verwenden Sie appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId().

    Hinweis

    Damit die Ablaufverfolgungs-ID eindeutig bleibt, verwenden Sie dort, wo Sie zuvor Util.newId() verwendet haben, jetzt Util.generateW3CId(). Beide werden letztendlich zur Vorgangs-ID.

Wenn Sie das aktuelle Application Insights-PRODUKTIONS-SDK (1.0.20) verwenden und überprüfen möchten, ob das neue SDK in der Laufzeit funktioniert, aktualisieren Sie die URL abhängig von Ihrem aktuellen SDK-Ladeszenario.

  • Download über CDN-Szenario: Aktualisieren Sie den zurzeit verwendeten Codeausschnitt so, dass er auf die folgende URL verweist:

    "https://js.monitor.azure.com/scripts/b/ai.2.min.js"
    
  • npm-Szenario: Rufen Sie downloadAndSetup auf, um das vollständige ApplicationInsights-Skript aus dem CDN herunterzuladen und es mit einer Verbindungszeichenfolge zu initialisieren:

    appInsights.downloadAndSetup({
       connectionString: "Copy connection string from Application Insights Resource Overview",
       url: "https://js.monitor.azure.com/scripts/b/ai.2.min.jss"
       });
    

Testen Sie es in der internen Umgebung, um zu überprüfen, ob die Überwachung der Telemetriedaten wie erwartet funktioniert. Wenn alles funktioniert, aktualisieren Sie Ihre API-Signaturen entsprechend dem SDK v2, und stellen Sie sie in Ihren Produktionsumgebungen bereit.

SDK-Leistung/Mehraufwand

Mit einer Größe von 36 KB (GZIP-Ordner) und einer Initialisierungsdauer von etwa 15 ms steigert Application Insights die Ladezeit Ihrer Website nur geringfügig. Die minimalen Komponenten der Bibliothek werden schnell geladen, wenn Sie diesen Codeausschnitt verwenden. In der Zwischenzeit wird das vollständige Skript im Hintergrund heruntergeladen.

Während des Downloads des Skripts aus dem CDN wird die gesamte Nachverfolgung Ihrer Seite in die Warteschlange eingereiht. Nachdem die asynchrone Initialisierung des heruntergeladenen Skripts abgeschlossen wurde, werden alle Ereignisse, die in die Warteschlange eingereiht wurden, nachverfolgt. Infolgedessen gehen während des gesamten Lebenszyklus Ihrer Seite keine Telemetriedaten verloren. Dieser Setupvorgang stellt für Ihre Seite ein nahtloses Analysesystem bereit, das für Ihre Benutzer unsichtbar ist.

Zusammenfassung:

  • NPM-Version
  • Größe bei GZIP-Komprimierung
  • 15 ms – Gesamtinitialisierungszeit
  • Null – Nachverfolgung während des Lebenszyklus der Seite hat gefehlt.

Browserunterstützung

Chrome Firefox IE Opera Safari
Chrome (neueste Version) ✔ Firefox (neueste Version) ✔ IE 9+ & Microsoft Edge ✔
Mit Internet Explorer 8 kompatibel
Opera (neueste Version) ✔ Safari (neueste Version) ✔

ES3/Internet Explorer 8-Kompatibilität

Wir müssen sicherstellen, dass dieses SDK weiterhin funktioniert und nicht die Ausführung von JavaScript unterbricht, wenn es von einem älteren Browser geladen wird. Es wäre zwar optimal, ältere Browser nicht zu unterstützen, aber zahlreiche Großkunden können nicht steuern, welchen Browser ihre Benutzer verwenden.

Diese Aussage bedeutet nicht, dass wir nur den kleinsten gemeinsamen Leistungsumfang unterstützen werden. Wir müssen ES3-Codekompatibilität aufrechterhalten. Neue Funktionen müssen so hinzugefügt werden, dass das Parsen von ES3-JavaScript nicht unterbrochen wird und dass sie als optionale Funktion hinzugefügt werden.

Weitere Informationen zur Unterstützung von Internet Explorer 8 finden Sie auf GitHub.

Open Source SDK

Das Application Insights JavaScript SDK ist Open Source. Wenn Sie den Quellcode anzeigen oder zum Projekt beitragen möchten, besuchen Sie das offizielle GitHub-Repository.

Informationen zu den neuesten Updates und Fehlerbehebungen finden Sie in den Versionshinweisen.

Problembehandlung

In diesem Abschnitt können Sie häufige Probleme beheben.

Ich erhalte eine Fehlermeldung, dass der „Request-Context“-Korrelationsheader nicht abgerufen werden konnte, da er möglicherweise nicht in der Antwort enthalten ist oder nicht darauf zugegriffen werden kann.

Die Konfigurationseigenschaft von correlationHeaderExcludedDomains ist eine Ausschlussliste, die Korrelationsheader für bestimmte Domains deaktiviert. Diese Option ist nützlich, wenn die Einbeziehung dieser Header dazu führen würde, dass die Anfrage fehlschlägt oder aufgrund der Serverkonfiguration eines Dritten nicht gesendet wird. Diese Eigenschaft unterstützt Platzhalter. Ein Beispiel wäre *.queue.core.windows.net, wie im obigen Codebeispiel zu sehen. Das Hinzufügen der Anwendungsdomäne zu dieser Eigenschaft sollte vermieden werden, da das SDK dadurch aufhört, die erforderlichen verteilten AblaufverfolgungsheaderRequest-Id, Request-Context und traceparent als Teil der Anforderung einzuschließen.

Ich bin nicht sicher, wie ich meine Serverkonfiguration von Drittanbietern aktualisieren kann

Auf Serverseite müssen Verbindungen mit diesen Headern akzeptiert werden können. Je nach serverseitiger Konfiguration von Access-Control-Allow-Headers ist es häufig erforderlich, die serverseitige Liste zu erweitern, indem Request-Id, Request-Context und traceparent (verteilter W3C-Header) manuell hinzugefügt werden.

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

Ich erhalte doppelte Telemetriedaten vom Application Insights JavaScript SDK

Wenn das SDK Korrelationen wiederholt meldet, aktivieren Sie die Konfigurationseinstellung von excludeRequestFromAutoTrackingPatterns, um die doppelten Daten auszuschließen. Dieses Szenario kann bei der Verwendung von Verbindungszeichenfolgen auftreten. Die Syntax für die Konfigurationseinstellung lautet excludeRequestFromAutoTrackingPatterns: [<endpointUrl>].

Testen der Konnektivität zwischen Ihrem Anwendungshost und dem Erfassungsdienst

Application Insights SDKs und -Agents senden Telemetriedaten, die als REST-Aufrufe unserer Erfassungsendpunkte erfasst werden sollen. Sie können die Konnektivität Ihres Webservers oder Anwendungshostcomputers mit den Endpunkten des Erfassungsdiensts testen, indem Sie unformatierte REST-Clients über PowerShell- oder cURL-Befehle verwenden. Weitere Informationen finden Sie unter Problembehandlung bei fehlender Anwendungstelemetrie in Azure Monitor Application Insights.

Nächste Schritte