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
- 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.
- 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. - 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 |
disableExceptionTracking | 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 |
disableCorrelationHeaders | 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 |
correlationHeaderExcludedDomains | Korrelations-Header für bestimmte Domänen deaktivieren. | string[] nicht definiert |
correlationHeaderExcludePatterns | Korrelationskopfzeilen mit regulären Ausdrücken deaktivieren. | regex[] nicht definiert |
correlationHeaderDomains | Korrelations-Header für bestimmte Domänen aktivieren. | string[] nicht definiert |
disableFlushOnBeforeUnload | 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 |
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 |
isBrowserLinkTrackingEnabled | 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 |
enableCorsCorrelation | 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 |
enableAutoRouteTracking | 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 |
enableRequestHeaderTracking | Falls „true“ werden AJAX- und Fetch-Anforderungsheader nachverfolgt. | boolean false |
enableResponseHeaderTracking | 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. | DistributedTracingModes oderNUMERIC (Seit v2.6.0) DistributedTracingModes.AI_AND_W3C (v 2.5.11 oder früher) DistributedTracingModes.AI |
enableAjaxErrorStatusText | Bei TRUE wird der Text zu Antwortfehlerdaten im Abhängigkeitsereignis für fehlerhafte AJAX-Anforderungen aufgeführt. | boolean false |
enableAjaxPerfTracking | 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 |
maxAjaxPerfLookupAttempts | 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 |
enableUnhandledPromiseRejectionTracking | 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 |
Handhabung von Cookies
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 |
Vereinfachte Verwendung des neuen Instanz-Cookie-Managers
- appInsights.getCookieMgr().setEnabled(true/false);
- appInsights.getCookieMgr().set("MyCookie", "the%20encoded%20value");
- appInsights.getCookieMgr().get("MyCookie");
- appInsights.getCookieMgr().del("MyCookie");
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.
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.
Leistung
Abhängigkeiten
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.
Verknüpfung mit Blob Storage-Konto
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
Wählen Sie im Azure-Portal ein Element vom Typ „Ausnahmetelemetrie“ aus, um dessen „End-to-End-Transaktionsdetails“ anzuzeigen.
Identifizieren Sie, welche Quellzuordnungsdateien dieser Aufrufliste entsprechen. Die Quellzuordnungsdatei muss mit der Quelldatei eines Stapelrahmens übereinstimmen, dabei allerdings mit dem Suffix
.map
versehen sein.Ziehen Sie die Quellzuordnungsdateien in die 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 incontext.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, jetztUtil.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:
- 15 ms – Gesamtinitialisierungszeit
- Null – Nachverfolgung während des Lebenszyklus der Seite hat gefehlt.
Browserunterstützung
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|
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.