JavaScript-Agent-API

Der „ JavaScript “-Agent API und Web REST API sind nicht identisch. Mit dem „ Web REST API “ können Abfragen auf die gesammelten Daten durchgeführt und eine neue Website konfiguriert werden.

Der „ JavaScript “-Agent stellt einen „ API “ bereit, der auf überwachten Websites verfügbar ist. Ihre Website kann mit dem „ API “ des „ JavaScript “-Agenten interagieren, um die erfassten Daten zu ergänzen oder zu konfigurieren, benutzerdefinierte Ereignisse zu senden und vieles mehr.

JavaScript Agent-Versionen

Alle Versionsaktualisierungen, Funktionen und Fehlerbehebungen für den JavaScript-Agenten „ Instana “ (Weasel) finden Sie in der Changelog -Datei unter GitHub.

Das globale Objekt

Der Instana-JavaScript-Agent definiert eine neue globale Funktion mit dem Namen ineum. Diese Funktion steht unmittelbar nach dem JavaScript-Snippet im HTML-Dokument zur Verfügung. Das bedeutet, dass die Funktion auch dann existiert, wenn der Agent selbst nicht heruntergeladen wird. Dies wurde so implementiert, damit ineum-API-Aufrufe einfach und effizient sind.

Wenn der Agent noch nicht heruntergeladen wurde, ineum werden alle ausgeführten Aufrufe von ` API ` in die Warteschlange gestellt. Nachdem der Agent heruntergeladen wurde, werden diese Aufrufe von ` API ` synchron in der Reihenfolge ausgeführt, in der sie erfolgt sind. Ab diesem Zeitpunkt wird durch eine Funktion ineum ersetzt, die sofort die Aufrufe von ` API ` ausführt.

API-Struktur

Alle ineum folgen der gleichen Struktur wie dargestellt:

ineum(commandName, ...args);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
commandName (string) Bezeichnet den auszuführenden Befehl. Zum Beispiel, um Metadaten zu setzen oder einen Fehler zu melden.
...args Die tatsächlichen Argumente für den jeweiligen Befehl. Die Anzahl der Argumente und deren Typ sind für jeden Befehl spezifisch.
Hinweis: Die Funktion gibt ineum niemals einen Wert zurück (mit Ausnahme des Befehls getPageLoadId).

TypeScript-Typdefinitionen

TypeScript können die vom DefinitelyTyped bereitgestellten Typdefinitionen installieren und verwenden.

npm install --save @types/ineum
 

APIs

In den folgenden Abschnitten werden die verfügbaren Befehlsnamen mit ihren Argumenten beschrieben.

Überwachungsschlüssel

Überwachungstasten können mit dem Befehl key gesetzt werden. Der Überwachungsschlüssel wird angezeigt, wenn Sie Websites in der Benutzeroberfläche von „ Instana “ konfigurieren.

ineum('key', trackingKey);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
trackingKey (string) Der Überwachungsschlüssel für die Websitekonfiguration in Instana.

Beispiel

Innerhalb der Benutzerschnittstelle von Instana wird eine korrekte Konfiguration angezeigt.

Überwachungsschlüssel wechseln

Modellieren Sie jede Ihrer Umgebungen (Produktion, Staging und Test) als eigenständige Websites innerhalb von „ Instana “, um je nach Bereitstellung unterschiedliche Überwachungsschlüssel für den „ JavaScript “-Agenten zu konfigurieren. Wenn die Überwachungsschlüssel bereits vorhanden sind, speichern Sie die Überwachungsschlüssel in Ihrem Konfigurationsmanagementsystem und verwenden Sie den gespeicherten Wert, um den Überwachungsschlüssel zu ersetzen.

Wenn die Website nur aus statischen Dateien besteht oder kein Konfigurationsmanagementsystem zur Verfügung steht, können Sie ein Tool wie Google Tag Manager verwenden, mit dem Sie Code-Snippets für Ihre Website verwalten können. Alternativ können Sie die Überwachungsschlüssel fest einbinden und eine Überprüfung im Webbrowser durchführen.

if (window.location.hostname === 'example.com') {
  ineum('key', 'production monitoring key');
} else if (window.location.hostname === 'qa.example.com') {
  ineum('key', 'QA monitoring key');
} else {
  ineum('key', 'test monitoring key');
}
 

Berichts-URL

Beacons werden über HTTP GET und POST an die Berichts- URL gesendet, um die Überwachungsdaten an Instana zu übermitteln.

ineum('reportingUrl', reportingUrl);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
reportingUrl (string) Die URL URL, an die die Daten zur Website-Überwachung gesendet werden.

Beispiel

Für Nutzer des Produkts „ SaaS “ wird in der Benutzeroberfläche von „ Instana “ eine korrekte Konfiguration angezeigt. Benutzer vor Ort müssen anhand ihres konfigurierten EUM-Endpunkts die richtige URL URL ermitteln.

Mehrere Backends

In einigen Fällen kann es wünschenswert sein, einen JavaScript -Agenten an mehrere Back-Ends zu melden. Verwenden Sie in diesem Fall den Befehl reportingBackends , um den JavaScript -Agenten an mehrere Back-Ends zu melden.

ineum('reportingBackends', reportingBackends);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
reportingBackends (ReportingBackend[]) Ein Array von ReportingBackend -Objekten. Jedes der Objekte definiert ein Backend, an das die Websiteüberwachungsdaten gesendet werden.

Das ReportingBackend Objekt ist wie abgebildet:

{
  reportingUrl: 'http://example.com',  // The URL to which to send website monitoring data to.
  key: 'monitoring key'                // The monitoring key for the website configuration in Instana.
}
 

Der Befehl reportingBackends ist ab Version 230 von „ Instana “ verfügbar.

Beispiel

ineum('reportingBackends', [
      { reportingUrl: 'http://backend1.example.com', key: 'monitoring key 1' },
      { reportingUrl: 'http://backend2.example.com', key: 'moniroting key 2' }
    ]);
 
Hinweis: Der reportingBackends Befehl hat Vorrang vor dem reportingUrl Befehl. Nachdem der reportingBackends Befehlsaufruf erfolgt ist, werden alle weiteren reportingUrl Befehlsaufrufe ignoriert.

Seite

Instana kann Website-Messdaten nach logischen Seiten segmentieren. Dazu benötigt es einen Hinweis darauf, welche Seite der Benutzer gerade betrachtet. Dieser Seitenname kann mit dem Befehl page festgelegt werden. Setzen Sie den page so früh wie möglich. Sie können die page ändern, um Dokumentänderungen zu präsentieren (z. B. bei einseitigen Bewerbungen). Dadurch kann „ Instana “ nicht nur das Laden von Seiten, sondern auch Seitenwechsel erfassen.

ineum('page', pageName);
 

Seitenwechselereignisse werden immer dann erfasst, wenn der Seitenname über die Funktion ` API ` geändert wird – mit Ausnahme des ersten Aufrufs dieser Funktion ` API ` während der Ladephase der Seite.

Um Seiten zu definieren, verwenden Sie logische Namen wie product detail page oder payment selection anstelle von window.title oder window.href. Die Verwendung von product detail page oder payment selection führt zu weniger Seiten, die einen direkten Bezug zum bestehenden Code haben. Die Verwendung von window.title oder window.href hingegen führt zu zahlreichen nachverfolgten Seiten, die in den meisten Fällen einen Mehrwert bieten, da window.title Produktnamen enthält.

Instana bietet Beispielprojekte, die zeigen, wie man aussagekräftige Seitennamen für verschiedene Frameworks und Bibliotheken sammelt. Stellen Sie eine Pull- oder Support-Anfrage für ein fehlendes Framework oder eine Bibliothek.

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
pageName (string) Der Name der Seite.

Beispiel

ineum('page', 'shopping-cart');

// Do you want to change meta data and the page name at the same time?
// Make sure to change the page name last as this immediately
// triggers a page transition beacon.
ineum('meta', 'product', 'skateboard');
ineum('page', 'article-details');
 

Automatische Seitenerkennung

Die Website-Überwachung von Instana erkennt automatisch Seitenänderungen bei Single-Page-Webanwendungen. Diese Funktion wird seit der Website JavaScript und dem Agenten 1.7.1 unterstützt.

Bei „ JavaScript “-Agenten der Versionen „ 1.8.0 “ und höher werden die Werte für die Dauer von Seitenübergängen automatisch erfasst, sofern es sich bei Ihrer Website um eine Single-Page-Anwendung (SPA) handelt und die automatische Seitenerkennung aktiviert ist. Dies gibt die Zeit an, die bei einem Seitenwechsel benötigt wird.

Die automatische Seitenerkennung dient der Verfolgung und Aufzeichnung von Seitenwechselereignissen. Diese Funktion ist standardmäßig deaktiviert. Um die automatische Seitenerkennung zu aktivieren, haben Sie eine der folgenden Möglichkeiten:

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
enabled (boolean) So aktivieren Sie die automatische Seitenerkennung
Beispiel
ineum('autoPageDetection', true);
// page changes will be detected once set to true
 
Logische Seitennamen und Regex-Zuordnungen festlegen

Mit dem mappingRule Parameter können Sie logische Seitennamen festlegen, die ein Array von regulären Ausdrücken enthalten, um Änderungen an URL abzubilden und durch den angegebenen Namen zu ersetzen.

ineum('autoPageDetection', {mappingRule: [[/.*urlRegex.*/i, 'Page Name']]});
 

Um den Dokumenttitel als Seitennamen festzulegen, müssen Sie den titleAsPageName Parameter auf setzen true.

ineum('autoPageDetection', {titleAsPageName: true});
 

Wenn Sie die automatische Instrumentierung der Website so konfigurieren, dass die automatische Seitenerkennung aktiviert ist, wird standardmäßig der Pfad „ URL “ als Seitenname festgelegt.

Wenn die automatische Seitenerkennung aktiviert ist und ein Popstate-Ereignis auftritt, überprüft der „ JavaScript “-Agent anhand der Popstate-Ereignisse, ob ein Seitenwechsel stattgefunden hat. Häufig wird ein „popstate“-Ereignis ausgelöst, wenn man mit den Vor- und Zurück-Schaltflächen eines Browsers navigiert. Bei einigen Anwendungen, darunter auch solche mit statischen Inhalten, kann es erforderlich sein, dass der Agent Popstate-Ereignisse ignoriert, da diese zu falschen Seitenwechseln führen können. Der Agent „ JavaScript “ ignoriert Popstate-Ereignisse bei Seitenwechseln, wenn der ignorePopstateEvent Parameter auf truegesetzt ist.

ineum('autoPageDetection',  {ignorePopstateEvent: true});
 
Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
mappingRule (RegExp[], string) Ein Array von „ RegExp “-Objekten, die dem „ URL “ des Seitenwechsels entsprechen, wird durch die angegebene Zeichenfolge ersetzt. Ist das Mapping-Ergebnis leer, wird dieser Übergang ignoriert. Geben Sie keine Zuordnungsregeln an, wenn auf titleAsPageName „true“ gesetzt ist.
titleAsPageName (boolean) Wenn diese Option auf „true“ gesetzt ist, wird der Dokumenttitel als Seitenname in den Beacons für Seitenwechsel verwendet. Wenn dieser Wert auf „false“ gesetzt ist, wird entweder die Seiten- URL -Adresse oder die Zuordnungsregeln als Seitenname in den Seitenwechsel-Beacons verwendet.
ignorePopstateEvent (boolean) Wenn dieser Wert auf „true“ gesetzt ist, ignoriert der „ JavaScript “-Agent Popstate-Ereignisse, die vom Browser generiert werden, wenn dieser Seitenwechsel erkennt.
Beispiel

Wenn Ihre URL beispielsweise URL lautet https://example.com/accounts/checkUserDetails, können Sie in der Benutzeroberfläche von „ User DetailsInstana “ beobachten, wie die Seite zur Seite wechselt.

ineum('autoPageDetection',  {mappingRule: [[/.*checkuserdetails.*/i, 'User Details']]});
// Matches the regex and sets page name as User Details
// .*checkuserdetails.* matches the characters in the URL while 'i' modifier represents a case insensitve match.
 

Außerdem können Sie komplexere Seitennamen festlegen, wie im folgenden Beispiel gezeigt:

ineum('autoPageDetection',  {mappingRule: [[/.*product[0-9]+contains-[A-Za-z]+-productID-account-([A-Za-z].*)\1+/, 'Product Page : id $1'],[/.*aboutPage.*-([A-Za-z].*)/, 'About Page id: $1']]});
 

Benutzer identifizieren

Optional können benutzerspezifische Informationen zusammen mit den an Instana übermittelten Daten gesendet werden. Diese Informationen können dann verwendet werden, um weitere Funktionen freizuschalten, wie z. B.:

  • Berechnen Sie die Anzahl der von Fehlern betroffenen Benutzer
  • So filtern Sie Daten für bestimmte Benutzer
  • Um zu sehen, welcher Benutzer das Laden einer Seite oder einen Ajax-Aufruf ausgelöst hat.

Standardmäßig verknüpft Instana keine personenbezogenen Daten mit Beacons. Beachten Sie die jeweiligen Datenschutzgesetze, wenn Sie sich dafür entscheiden, dies zu tun. In „ Instana “ ist die Benutzer-ID ein transparenter string Wert, der ausschließlich zur Berechnung bestimmter Kennzahlen verwendet wird. Daher erfolgt die Identifizierung der Benutzer über eine Benutzer-ID. userName und userEmail kann zudem genutzt werden, um auf weitere Filter und eine übersichtliche Darstellung der Benutzerinformationen zuzugreifen.

Hinweis: Daten, die bereits an den Server von Instana übermittelt wurden, können nicht nachträglich aktualisiert werden. Daher ist es wichtig, diese Funktion „ API “ so früh wie möglich während des Ladevorgangs der Seite aufzurufen.

Wenn diese Funktion „ API “ synchron während des Ladevorgangs der Seite aufgerufen wird, beispielsweise durch serverseitiges Einbinden der Informationen in das HTML-Dokument, wird sichergestellt, dass alle Beacons Benutzerinformationen enthalten, die Statistiken zu einzelnen oder betroffenen Benutzern korrekt sind und die Beacons bei der Analyse ordnungsgemäß gefiltert und gruppiert werden.

ineum('user', userId, userName, userEmail);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
userId (string, optional) Eine Kennung für den Benutzer.
userName (string, optional) Der Benutzername.
userEmail (string, optional) Die E-Mail-Adresse des Benutzers.

Sie können null oder undefined für Werte angeben, die Sie nicht festlegen möchten.

Beispiel

// Report everything to Instana
ineum('user', 'hjmna897k1', 'Tom Mason', 'tom@example.com');

// or only some data points
ineum('user', 'hjmna897k1');
ineum('user', null, null, 'tom@example.com');
 

Sitzungsüberwachung

Die Sitzungsverfolgung kann genutzt werden, um Einblicke in die Aktivitäten der Endnutzer beim Laden von Seiten zu gewinnen. Mithilfe der Sitzungsverfolgung kann Instana insbesondere die Auswirkungen auf die Endnutzer ermitteln, wenn keine definierten Nutzerinformationen vorliegen.

Um Sitzungen zu verfolgen, verwendet der „ JavaScript “-Agent nach dem trackSessions Aufruf die Browser-URL localStorageAPI. Technisch gesehen ist eine Sitzung eine zufällige ID, die zusammen mit zwei Zeitstempeln in Browsern localStorage unter dem Schlüssel in-session gespeichert wird.

Die Verantwortung für die Einhaltung der Datenschutzbestimmungen liegt beim Aufrufenden dieser API.

Sitzung initialisieren/wiederverwenden

Diese API startet eine neue Sitzung oder verwendet eine vorhandene Sitzung, wenn dies möglich ist.

ineum('trackSessions', sessionInactivityTimeout, sessionTerminationTimeout);
 
Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
sessionInactivityTimeout (number, optional) Beschreibt, wie lange eine Sitzung seit dem letzten Aufruf von trackSessions in Millisekunden aktiv bleibt. Der Standardwert ist drei Stunden.
sessionTerminationTimeout (number, optional) Beschreibt, wie lange eine Sitzung seit dem ersten Aufruf von trackSessions in Millisekunden aktiv bleibt. Der Standardwert ist sechs Stunden.

Sie können null oder undefined für Werte angeben, die Sie nicht festlegen möchten.

Beispiel
// Starts tracking sessions with the default timeouts
ineum('trackSessions');

// or specify custom timeouts
ineum('trackSessions', 900000 /* 15min */, 3600000 /* 1h */);
 

Sitzung beenden

Beendet die momentan aktive Sitzung (sofern vorhanden) und entfernt die gespeicherten Daten aus dem Verzeichnis localStorage.

ineum('terminateSession');
 
Beispiel
// Starts tracking sessions with the default timeouts
ineum('trackSessions');

// after some time…
ineum('terminateSession');
 

Metadaten

Metadaten können verwendet werden, um Seitenaufbau und Ajax-Aufrufe zu annotieren. Verwenden Sie Metadaten, um die Werte der Benutzeroberflächenkonfiguration, Einstellungen, Feature-Flags oder sonstige zusätzliche Kontextinformationen zu erfassen, die für die Analyse nützlich sein könnten.

ineum('meta', key, value);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
key (string) Der Schlüssel (key) des Schlüsselwertpaares, das Sie als Metadaten hinzufügen möchten.
value (string) Der Schlüssel (value) des Schlüsselwertpaares, das Sie als Metadaten hinzufügen möchten.

Beispiel

ineum('meta', 'version', '1.42.3');
ineum('meta', 'role', 'admin');
 

Back-End-Trace-ID des Seitenaufbaus

Beim Laden der Seite kann eine Backend-Trace-ID definiert werden, um eine Korrelation zwischen Frontend und Backend zu ermöglichen. Weitere Informationen finden Sie unter „Backend-Korrelation “. Die Definition der Backend-Trace-ID ist erforderlich, um eine Korrelation zwischen der Backend- und der Frontend-Verarbeitung beim Laden von Seiten herzustellen. Sie ist für die Korrelation zwischen den XMLHttpRequest und fetch nicht erforderlich. Eine Trace-ID muss eine Hex-Zeichenkette mit 16 oder 32 Zeichen sein.

ineum('traceId', traceId);
 

Parameter

Parameter Beschreibung
traceId (string) Die Trace-ID des zugehörigen Back-End-Trace.

URLs vom Tracking ausschließen

Über diesen Link API können Sie mehrere reguläre Ausdrücke definieren. Bei mindestens einer Übereinstimmung erfolgt keine Datenübertragung an Instana. Die regulären Ausdrücke werden in den folgenden Szenarien ausgewertet:

  • Überprüfung anhand der URLs der Dokumente (d. h. der in der Adressleiste window.location.href angezeigten URLs). Die gesamte Datenübertragung an Instana wird unterbunden, sobald einer der regulären Ausdrücke übereinstimmt.
  • Auswertung anhand der URLs von Ressourcen, z. B. der URLs von JavaScript und CSS-Dateien. Es werden keine Informationen über Ressourcen, die einem der regulären Ausdrücke entsprechen, an Instana übermittelt.
  • Überprüfung der Ziel-URLs von Aufrufen unter HTTP, beispielsweise über XMLHttpRequest und fetch. Es werden keine Informationen über „ HTTP “-Aufrufe, die einem der regulären Ausdrücke entsprechen, an „ Instana “ übermittelt.
ineum('ignoreUrls', ignoreUrls);
 

Instana unterstützt auch das Entfernen von Geheimnissen aus Dokument-URLs, d. h. der URL, die in der Adressleiste des Browsers sichtbar ist (siehe secrets API ). Beachten Sie jedoch, dass die in den URLs von Dokumenten gespeicherten Geheimnisse fast allen Dritten bekannt sind. Wir haben eine spezielle Beispiel-App mit einer Beschreibung, die verdeutlicht, warum in Dokument-URLs gespeicherte Geheimnisse leicht an Dritte weitergegeben werden können. Weitere Einzelheiten finden Sie in dieser Beispielanwendung und -beschreibung. Sie können jedoch über diesen Link API die Erfassung aller Überwachungsdaten für diese URLs deaktivieren.

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
ignoreUrls (RegExp[]) Ein Array von RegExp Objekten entspricht den URLs, die Sie ignorieren möchten.

Beispiel

ineum('ignoreUrls', [
  /\/comet.+/i,
  /\/ws.+/i,
  /.*(&|\?)secret=.*/i
]);
 

Geheime Informationen aus URLs entfernen

Abfrageparameter in gesammelten URLs können sensible Daten enthalten. Daher unterstützt der JavaScript die Angabe von Mustern für Abfrageparameterschlüssel, deren Werte geschwärzt werden. Das Redigieren erfolgt innerhalb des JavaScript, d. h. innerhalb des Webbrowsers. Daher werden vertrauliche Daten nicht zur Verarbeitung an die Server von Instana übermittelt und stehen weder in der Benutzeroberfläche zur Analyse zur Verfügung noch können sie über API abgerufen werden.

ineum('secrets', secrets);
 

Wenn ein Abfrageparameter mit einem Eintrag aus der Liste übereinstimmt, wird der Wert unkenntlich gemacht und nicht an das Backend von „ Instana “ gesendet. Wenn keine ineum('secrets') Regel definiert ist, verwendet „ [/key/i, /secret/i, /password/i]Instana “ standardmäßig als Abgleichsregel.

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
secrets (RegExp[]) Ein Array von RegExp Objekten, die mit den Schlüsselnamen der Abfrageparameter übereinstimmen und deren Werte als Geheimnisse behandelt werden.

Beispiel

ineum('secrets', [/account/i, /user/i]);
 

Beispielsweise wird https://example.com/accounts/status?account=acount_name&user=user_name erfasst und als https://example.com/accounts/status?account=<redacted>&user=<redacted>angezeigt.

Hinweis: Der Agent „ JavaScript “ unterstützt die Behandlung von Pfadparametern (/account/<account id>/status) oder Matrixparametern (/account;accountId=<account id>/status) als Geheimnisse nicht.
Hinweis: Geheimnisse, die in Dokument-URLs gespeichert sind, werden fast ausnahmslos an Dritte weitergegeben. Weitere Informationen finden Sie in einer speziellen Beispiel-App mit einer Beschreibung, die verdeutlicht, warum in Dokument-URLs gespeicherte Geheimnisse leicht an Dritte weitergegeben werden können.

Ausblenden von Teilen aus URLs

Das Fragment der erfassten URLs kann sensible Informationen enthalten. Daher unterstützt der Agent „ JavaScript “ die Angabe von Mustern für Fragmentwerte, die auf der Grundlage des Pfads „ URL “ unkenntlich gemacht werden können. Diese Bearbeitung erfolgt über den „ JavaScript “-Agenten im Webbrowser. Dadurch wird verhindert, dass sensible Daten zur Verarbeitung an die Server von Instana gelangen. Vertrauliche Informationen bleiben für die Analyse in der Benutzeroberfläche oder den Abruf über das „ API “ unzugänglich.

ineum('fragment', fragment);
 

Wenn ein Teil Ihres „ URL “-Pfads mit einem Eintrag in der Liste übereinstimmt, wird der Wert des Fragments unkenntlich gemacht und nicht an das „ Instana “-Backend gesendet. Standardmäßig blendet „ Instana “ keine Fragmente von „ URL “ aus.

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
fragment (RegExp[]) Ein Array mit einem RegExp Objekt, das dem Pfad „ URL “ entspricht, dessen Fragment unkenntlich gemacht wurde.

Beispiel

ineum('fragment', [/example.com/i]);
 

Beispielsweise wird https://example.com/accounts/status?account=acount_name#fragmentinformation erfasst und als https://example.com/accounts/status?account=acount_name#<redacted>angezeigt.

Benutzertimings vom Tracking ausschließen

Instana Marker und Messwerte, die über das User-Timing- API erfasst werden, automatisch sammeln und in benutzerdefinierte Ereignisse umwandeln. Dies bedeutet, dass die User-Timing-API als herstellerneutrale Methode verwendet werden kann, um die reinen Timingdaten an Instana zu melden.

Mithilfe des User-Timing- API s können Sie mehrere reguläre Ausdrücke definieren, die, sobald mindestens einer davon zutrifft, dazu führen, dass keine spezifischen User-Timings erfasst werden. Standardmäßig werden die folgenden Bedingungen ignoriert:

  • „User-Timings“ in React : die Markierungen und Messwerte, die mit dem ⚛️- oder ⛔-Emoji beginnen
  • Die „user-timings“ von Angular : die Markierungen und Messungen, die mit Zone
  • Markierungen und Maßnahmen, deren Namen mit start oder end beginnen
ineum('ignoreUserTimings', ignoreUserTimings);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
ignoreUserTimings (RegExp[]) Ein Array von RegExp-Objekten, die mit den Namen von Markern und Kennzahlen von Benutzertimings übereinstimmen, die ignoriert werden sollen.

Beispiel

ineum('ignoreUserTimings', [
  /^\u269B/,
  /^\u26D4/,
  /^Zone(:|$)/,
  /mySecretTiming/i
]);
 

Ausschluss von „ URL “-Abfrageparametern und Fragmenten aus der Nachverfolgung

Standardmäßig erfasst der „ JavaScript “-Agent den vollständigen Befehl „ URL “ einschließlich aller Parameter. Sie können den Agenten so konfigurieren, dass er nur Parameter für die URLs erfasst, die einer bestimmten Liste von regulären Ausdrücken entsprechen. Die Parameter der ausgeschlossenen URLs werden nicht erfasst.

Auf der Grundlage der bereitgestellten Liste regulärer Ausdrücke verfolgt der „ JavaScript “-Agent URLs wie folgt:

  • Wenn der „ URL “ mit einem Eintrag in der Liste übereinstimmt, wird der gesamte „ URL “, der alle Parameter enthält, abgerufen.
  • Wenn der „ URL “ mit keinem Eintrag in der Liste übereinstimmt, werden die Abfrageparameter und Fragmente der „ URL “ nicht an das „ Instana “-Backend gesendet.
  • Ist die angegebene Liste leer, wird das Standardverhalten angewendet, und die gesamte „ URL “ mit ihren Parametern wird nachverfolgt.
ineum('queryTrackedDomainList',queryTrackedDomainList);
 

Die folgenden Szenarien erläutern die Situation, wenn die Datei „ URL “ ein Geheimnis oder ein Fragment enthält, das mithilfe von ineum('secrets', secrets) oder ineum('fragment', fragment)geschwärzt wurde:

  • Wenn die „ URL “ mit einem Eintrag in queryTrackedDomainList„“ übereinstimmt, wird die gesamte „ URL “ mit dem geschwärzten Geheimnis oder Fragment an das „ Instana “-Backend gesendet.
  • Wenn die „ URL “ nicht mit einem Eintrag in queryTrackedDomainListübereinstimmt, werden alle Parameter entfernt, bevor die „ URL “ an das „ Instana “-Backend gesendet wird.

Parameter

Parameter Beschreibung
queryTrackedDomainList (RegExp[]) Ein Array von RegExp Objekten, die den Namen der URLs entsprechen, die Sie verfolgen möchten, einschließlich aller Parameter.

Beispiel

Im folgenden Beispiel werden die URLs, die dem /example.com/i regulären Ausdruck /\/comet.+/i, /\/ws.+/i oder entsprechen, vollständig mit ihren Parametern erfasst:

ineum('queryTrackedDomainList', [
  /\/comet.+/i,
  /\/ws.+/i,
  /example.com/i
]);
 

Unterstützung von Trace-Headern in „ W3C “ für die Korrelation im Backend

Wenn ein Browser eine Anfrage an einen Remote-Server sendet und der Instana Agent den Remote-Server überwacht, kann die Antwort des Servers den HTTP Header „Server-Timing“ enthalten, um die Server-Timing-Informationen bereitzustellen. backendTraceId zum Instana -Agenten, der im Browser ausgeführt wird. Wenn auf dem Remote-Server „ OpenTelemetry “ aktiviert ist, kann der Header tracestate „ HTTP “ das enthalten backendTraceId.

tracestate und traceparent sind „ W3C-defined “-Header, die zur Korrelation verteilter Trace-IDs verwendet werden. Weitere Informationen zu den Trace-Headern von „ W3C “ finden Sie unter „Trace-Kontext-Ebene “.

Wenn Sie davon ausgehen, dass der Remote-Server „ OpenTelemetry “ verwenden und den Wert backendTraceId im tracestate Header bereitstellen kann, muss der „ Instana “-Agent im Browser „ enableW3CHeadersAPI “ auf „true“ setzen, um den backendTraceId Wert in den „ W3C “-Headern zu nutzen.

Sie können die Einstellung backendTraceId an drei verschiedenen Stellen vornehmen: über den Server-Timing Header, den tracestate Header und manuell über die Eingabe traceId von „ API “ im Browser. Die Reihenfolge dieser Ansätze ist wie folgt:

  • Wenn diese enableW3CHeaders Option aktiviert ist, haben Sie zwei Möglichkeiten. Entnehmen Sie zunächst den tracestate Wert aus den Metadaten der traceparent aktuellen Seite und verwenden Sie ihn. Falls Sie nicht abrufen können tracestate, wird eine 16 Zeichen lange Zeichenfolge generiert und verwendet, die mit dem Trace-Kontext von „ W3C “ kompatibel ist.
  • Wenn enableW3CHeaders deaktiviert ist, prüfen Sie zunächst, ob die Funktion traceId API aufgerufen wird. Wenn die traceId Methode ` API ` aufgerufen wird, verwende die ID als backendTraceId. Wenn die Funktion traceId ` API ` nicht aufgerufen wird, wird der Header `Server-Timing` der Antwort ` HTTP ` ausgewertet, um den Wert zu ermitteln backendTraceId.
  • Wenn keiner der oben genannten Werte verfügbar ist, können Sie Beacons nicht mit Backend-Traces verknüpfen.
ineum('enableW3CHeaders',true);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
enabled (boolean) Das Kennzeichen zum Deaktivieren oder Aktivieren dieser Funktion.

Beispiel

Das folgende Beispiel zeigt, dass die „ W3C “-Header aktiviert sind:

ineum('enableW3CHeaders', true);
 

Maximale Wartezeit nach dem Seitenaufbau konfigurieren

Um zusätzliche Metriken zu erfassen, wartet der Agent „ JavaScript “, bis die folgenden Bedingungen erfüllt sind. Zum Beispiel die Verzögerung bei der ersten Eingabe und die kumulative Layoutverschiebung.

  • Alle Metriken sind verfügbar
  • Die Seite wird entladen (z.B. Registerkarte wird geschlossen)
  • Bis eine maximale Wartezeit verstrichen ist

Sie können diese API verwenden, um die maximale Wartezeit zu rekonfigurieren. Standardmäßig wartet „ Instana “ nach dem Laden der Seite – also nach dem Ende des Ereignisses „ onLoad “ – bis zu einer Sekunde.

ineum('maxMaitForPageLoadMetricsMillis', durationMillis);
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
durationMillis (Zahl) Die maximale Zeit in Millisekunden, die nach Beendigung des Seitenladevorgangs gewartet werden soll, bevor das Page Load Beacon gesendet wird.

Seitenaufbau-ID abrufen

Manchmal kann es sinnvoll sein, die ID des Seitenladens manuell abzurufen, beispielsweise wenn man eine benutzerdefinierte Korrelation durchführen möchte. Diese Funktion gibt undefined zurück, bis der JavaScript nicht geladen ist. Nach dem Laden des JavaScript wird immer derselbe string zurückgegeben.

ineum('getPageLoadId');
 

Zurückgegebene Werte

Die Seitenlademodul-ID als string oder undefined.

Beispiel

var pageLoadId = ineum('getPageLoadId');
console.log(pageLoadId);
 

Fehler-Tracking

Manuelle Fehlerberichterstellung

Es ist möglich, abgefangene Fehler zu melden. Diese Option kann verwendet werden, um Instana mit Frameworks und Bibliotheken zu integrieren, die nicht erfasste Fehler abfangen.

ineum('reportError', error, opts);
 
Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
error (Error oder string) JavaScript-Objekt vom Typ Error oder eine Fehlernachricht.
opts (ErrorReportingOpts, optional) Ein Objekt, das wie folgt aussieht.
{
  componentStack: '...' // an optional string

  meta: {               // An optional JavaScript object with `string` values which can be used
    widgetType: 'chart' // to send metadata to Instana just for this singular event. In contrast to
  }                     // the usage of the metadata API, this metadata is not included in subsequent
                        // beacons.
}
 
Beispiel
ineum('reportError', new Error('Something failed'), {
  componentStack: '…',
  meta: {
    widgetType: 'chart'
  }
});
 
Integration von 'React'

Durch die Integration des „ JavaScript “-Agenten mit den Fehlergrenzen von „ React “ erhalten Sie einen besseren Einblick in Fehler. Konkret bedeutet dies, dass zusätzlich zu den Fehler-Stacktraces (Funktions-Stacktraces) auch Komponenten-Stacktraces zur Verfügung stehen.

Das folgende Code-Snippet zeigt, wie der Code componentDidCatch von React erweitert werden kann, um diese Integration zu erreichen. Weitere Informationen zum componentDidCatch Lebenszyklus finden Sie in der Dokumentation zu „ React “.

componentDidCatch(error, info) {
  ineum('reportError', error, {
    componentStack: info.componentStack
  });

  // your regular error boundary code
}
 
Integration von 'Angular 2+'

Angular Fängt standardmäßig alle Fehler ab und protokolliert sie in der Konsole. Das bedeutet, dass der „ JavaScript “-Agent keinen Zugriff auf diese Fehler hat. Das folgende TypeScript-Snippet zeigt, wie die von Angular abgefangenen Fehler mit Instana integriert werden können.

Weitere Informationen zu Fehlerbehandlungsroutinen in „ Angular “ finden Sie in der Dokumentation zu „ Angular “.

import { ErrorHandler, NgModule } from '@angular/core';

class CustomErrorHandler implements ErrorHandler {
  handleError(error) {
    ineum('reportError', error);

    // Continue to log caught errors to the console
    console.error(error);
  }
}

@NgModule({
  providers: [{ provide: ErrorHandler, useClass: CustomErrorHandler }],
})
class MyModule {
  // the rest of your application code…
}
 
Vue-Integration

Vue kann einen globalen Handler für nicht abgefangene Fehler zuordnen, die von der Anwendung weitergegeben werden. Der folgende Codeausschnitt zeigt, wie man die Fehlerbehandlung von Vue in „ Instana “ integriert.

Weitere Informationen über Vue-Fehlerbehandlungsprogramme finden Sie in der Vue-Dokumentation.

app.config.errorHandler = (err, instance, info) => {
  ineum('reportError', err);
  // your regular error handling code
}
 

Fehler vom Tracking ausschließen

Es ist möglich, explizit das Melden bestimmter Fehler an Instana zu stoppen. Dies kann dazu verwendet werden, bekannte oder nicht behebbare Fehler zu ignorieren.

ineum('ignoreErrorMessages', ignoreErrorMessages);
 
Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
ignoreErrorMessages (RegExp[]) Ein Array von RegExp-Objekten, die mit den Fehlern übereinstimmen, die vom Fehler-Tracking ausgeschlossen werden sollen.

Einblicke in Scriptfehler

Websites, die viele Skripte von Drittanbietern einbetten, haben in der Regel eine ständige Anzahl von Script Error. Instana bietet eine Anleitung dazu, wie man diese Fehler abrufen kann, d. h. wie man Zugriff auf die eigentliche Fehlermeldung und den Stack erhält. Es kann vorkommen, dass Sie diese Anweisungen nicht befolgen können, beispielsweise weil der Drittanbieter den erforderlichen Access-Control-Allow-Origin Header nicht hinzufügt. Für diese Fälle bietet Instana alternative Möglichkeiten, um einen besseren Einblick in Script Errorss zu gewinnen.

Dieser Mechanismus ist kein Patentrezept. Dadurch erhalten Sie eine verbesserte Sichtbarkeit und es treten hilfreichere verfolgte Fehler auf, aber es werden weiterhin (eine reduzierte Anzahl von) Script Errorangezeigt. Weitere Informationen finden Sie in den Hinweisen zu Cross-Origin-Anfragen.

Explizites Tracking von DOM-Ereignislistener-Fehlern

Dadurch wird der „ Instana “-Agent in den Aufrufstapel jedes DOM-Ereignis-Listeners eingefügt. Der Agent „ Instana “ fügt automatisch try/catch Anweisungen um die Funktionen der Ereignisbehandler ein. Dies ermöglicht eine bessere Einsicht in Cross-Origin-Fehler.

Diese Funktion ist standardmäßig inaktiviert, da der Nutzen für die meisten unserer Kunden fragwürdig ist. Außerdem ist nicht gewährleistet, dass auf diese Weise bessere Informationen über Skriptfehler gesammelt werden können, da die Webbrowser begonnen haben, diese Lücke im Web-Sicherheitsmodell zu schließen.

ineum('wrapEventHandlers', enabled);
 
Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
enabled (boolean) Das Kennzeichen zum Deaktivieren oder Aktivieren dieser Funktion.
Explizites Tracking von Timerfehlern

Dadurch wird der „ Instana “-Agent in den Aufrufstapel aller Timer eingefügt. Der Agent „ Instana “ fügt automatisch try/catch Anweisungen um die Funktionen der Timer-Handler ein. Dies ermöglicht eine bessere Einsicht in Cross-Origin-Fehler.

Diese Funktion ist standardmäßig inaktiviert, da der Wert für die meisten unserer Kunden fragwürdig ist. Außerdem ist nicht gewährleistet, dass auf diese Weise bessere Informationen über Skriptfehler gesammelt werden können, da die Webbrowser begonnen haben, diese Lücke im Web-Sicherheitsmodell zu schließen.

ineum('wrapTimers', enabled);
 
Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
enabled (boolean) Das Flag zum Aktivieren oder Deaktivieren dieser Funktion.
Scriptfehler ignorieren

Falls Sie mit keinem der zuvor genannten Verfahren Erkenntnisse über Skriptfehler gewinnen können, sollten Sie möglicherweise verhindern, dass diese an Instana gemeldet werden. Dies kann nützlich sein, um sicherzustellen, dass die Fehlerstatistiken verwertbar bleiben. Mit dem folgenden Snippet können Sie das Melden von Scriptfehlern an Instana stoppen.

ineum('ignoreErrorMessages', [/^script error/i]);
 

Angepasste Ereignisse melden

Weitere Informationen zu globalen benutzerdefinierten Ereignissen finden Sie auf der Seite „Ereignisse “.

Benutzerdefinierte Ereignisse ermöglichen die Übermittlung von Informationen zu nicht standardmäßigen Aktivitäten, wichtigen Interaktionen und benutzerdefinierten Zeitpunkten an Instana. Dies kann besonders hilfreich sein, wenn es darum geht, nicht abgefangene Fehler (Breadcrumbs) zu analysieren und weitere Leistungskennzahlen zu erfassen.

ineum('reportEvent', eventName, {
  duration: duration,
  timestamp: timestamp,
  backendTraceId: backendTraceId,
  error: error,
  componentStack: componentStack,
  meta: meta,
  customMetric: customMetric
});
 

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
eventName (string) Legt fest, welche Art von Ereignis auf Ihrer Website eingetreten ist, das zur Übertragung eines benutzerdefinierten Beacons führen könnte.
timestamp (number, optional ) Ein Zeitstempel gibt an, zu welchem Zeitpunkt das Ereignis stattgefunden hat. Wird auf now() - duration zurückgesetzt, wenn sie nicht definiert ist.
duration (number, optional ) Die Dauer des Ereignisses in Millisekunden.
backendTraceId (string, optional ) Verwenden Sie diesen Parameter, um ein Beacon mit einem Back-End-Trace zu verknüpfen. Sein Wert muss eine Hex-Zeichenkette mit 16 oder 32 Zeichen sein.
error (Error, optional ) Ein JavaScript, das mehr Kontext liefert. Wenn Sie einen aufgetretenen Fehler melden möchten, nutzen Sie bitte die dafür vorgesehene Fehlermeldungs- API.
componentStack (string, optional ) Eine Zeichenfolge, die eine Komponentenhierarchie darstellt. Wird in der Regel von komponentenbasierten Frameworks bereitgestellt.
maxMetadataKeys (number, optional ) Die maximale Anzahl an Metadaten-Schlüsseln, die in einem Beacon gesendet werden. Der Standardwert ist auf 25 eingestellt.
meta (object, optional ) Ein „ JavaScript “-Objekt mit string Werten, das verwendet werden kann, um Metadaten speziell für dieses einzelne Ereignis an Instana zu senden. Im Gegensatz zur Verwendung des Metadaten- API s werden diese Metadaten nicht in nachfolgende Beacons aufgenommen.
customMetric (number, optional ) Angepasste Metrikdaten mit einer Genauigkeit von bis zu vier Dezimalstellen. Schließen Sie keine sensiblen Informationen in diese Metrik ein.

Beispiel

ineum('reportEvent', 'login');

ineum('reportEvent', 'full example', {
  timestamp: Date.now(),
  duration: 42,
  backendTraceId: '31ab91fc109223fe',
  error: new Error('whooops – sorry!'),
  componentStack: 'a component stack',
  meta: {
    state: 'running'
  },
  customMetric: 123.2342
});
 

Back-End-Korrelation von Cross-Origin-Anforderungen

Die Back-End-Korrelation von Instana funktioniert, indem angepasste Header für Anforderungen des Typs XMLHttpRequest/fetch festgelegt werden. Der Agent „ JavaScript “ setzt diese Header, die anschließend vom Server gelesen werden. Innerhalb des Browsers beschränkt die Same-Origin-Policy die Übertragung von angepassten Headern. Genauer gesagt können benutzerdefinierte Kopfzeilen nur für Anfragen gleichen Ursprungs oder für Anfragen an andere Ursprünge, die die Übertragung benutzerdefinierter Kopfzeilen erlauben, festgelegt werden. So kann beispielsweise eine Website, die von https://example.com:443 bedient wird, standardmäßig keine XMLHttpRequestan https://shop.example.com:443 senden, da es sich um zwei unterschiedliche Ursprünge handelt.

Um diese Sicherheitsbeschränkung zu umgehen, steht die Funktion „Cross-Origin Resource Sharing“ ( CORS ) zur Verfügung. Mit CORS kann der Cross-Origin-Ressourcenzugriff für Ursprünge ermöglicht werden. Wenn Sie in Ihrer Anwendung bereits über Cross-Origin-Ressourcenzugriff verfügen, verwenden Sie wahrscheinlich bereits einige CORS-Header.

Führen Sie die folgenden Schritte aus, um die Backend-Korrelation für „ Instana “ zu aktivieren:

  1. Ermöglichen Sie Cross-Origin-Anforderungen für die Korrelation-Header von Instana durch serverseitige Antwort mit den folgenden Headern.

    Hinweis: Ihr Server muss sowohl bei Preflight-Anfragen als auch bei regulären Anfragen mit diesen Headern antworten. Preflight-Anfragen (erkennbar an der OPTIONS Methode ` HTTP `) werden vom Browser ausgeführt, um zu überprüfen, ob Anfragen an den Server gesendet werden dürfen.
    Access-Control-Allow-Origin: https://your-origin.example.com
    Access-Control-Allow-Headers: X-INSTANA-T, X-INSTANA-S, X-INSTANA-L
    
     
  2. Teilen Sie dem Mitarbeiter von „ JavaScript “ mit, dass CORS korrekt konfiguriert ist und dass folgende Korrelations-Header gesetzt werden müssen:

    ineum('allowedOrigins', urls);
     

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
urls (RegExp[]) Ein Array von RegExp-Objekten, die mit zulässigen URLS übereinstimmen.

Seit

Der allowedOrigins Befehl ist ab Version 185 von „ Instana “ verfügbar. Verwenden Sie den Aliasnamen whitelistedOrigins bei älteren Releases.

Alias

Der Befehl whitelistedOrigins ist ein veralteter Aliasname für allowedOrigins.

Beispiel

ineum('allowedOrigins', [/.*api\.example\.com.*/]);
 

Überprüfen Sie, ob Ihre Anwendung nach diesen Änderungen ordnungsgemäß funktioniert. Wenn Sie den „ JavaScript “-Agenten anweisen, Backend-Korrelations-Header hinzuzufügen (d. h. Ursprungsdomänen zuzulassen), ohne „ CORS “ auf der Serverseite zu konfigurieren, besteht eine hohe Wahrscheinlichkeit, dass Ihre Website nicht mehr funktioniert!

Header von Anfragen oder Antworten in „ HTTP “ erfassen

Die „ HTTP “-Header in den Anfrage- oder Antwortdaten von XMLHttpRequest oder fetch Anfragen können vom JavaScript -Agenten erfasst werden. Sie können die „ HTTP “-Header, die der „ JavaScript “-Agent erfassen soll, über den captureHeaders Befehl festlegen.

Innerhalb des Browsers beschränkt die Same-Origin-Policy den Zugriff auf angepasste Header. Ohne eine Konfiguration für den Austausch von Ressourcen zwischen verschiedenen Ursprüngen ( CORS ) kann der „ JavaScript “-Agent möglicherweise nicht alle „ HTTP “-Header erfassen. Informationen zur Aktivierung von „ CORS “ finden Sie unter „Cross-Origin Request Backend Correlation “. Bei „ CORS “ können vom „ JavaScript “-Agenten nur die Request- oder Response-Header erfasst werden, die die Bedingung „ CORS “ erfüllen, sowie diejenigen, die in „Access-Control-Expose-Headers“ definiert sind.

Hinweis: Bei den Headern in der Anfrage können Sie in der Regel nur die Headers erfassen, die Sie der Anfrage „ HTTP “ hinzufügen, nicht jedoch die vom Browser automatisch hinzugefügten Headers. Der User-Agent-Header ist beispielsweise eine charakteristische Zeichenfolge, anhand derer Server und Netzwerkpartner die Anwendung, das Betriebssystem, den Hersteller und die Version des anfragenden User-Agents identifizieren. Es wird vom Browser hinzugefügt und kann vom „ JavaScript “-Agenten nicht erfasst werden. Was die Header in der Antwort betrifft, so können sowohl integrierte als auch benutzerdefinierte Header von der Serverseite vom „ JavaScript “-Agenten erfasst werden, sofern sie nicht durch die Cross-Origin-Richtlinie blockiert werden.

Parameter

In der folgenden Tabelle sind die Parameter aufgeführt:

Parameter Beschreibung
captureHeaders (RegExp[]) Ein Array von RegExp Objekten, die den Schlüsseln der Header in den An- oder Antwort-Headern von HTTP entsprechen, die der JavaScript -Agent erfassen soll.

Seit

Der captureHeaders Befehl ist ab Version 216 von „ Instana “ verfügbar.