Stack-Trace-Überwachung: Lücken in der Benutzererfahrung

Zuletzt aktualisiert:
Entwickler sieht ein grünes APM-Dashboard, während ein frustrierter Benutzer denselben Webanwendung einen Lade-Spinner anschaut
Ein grünes APM-Dashboard und eine schlechte Benutzererfahrung können gleichzeitig wahr sein.

Ein Käufer in Frankfurt klickt auf Bezahlen und sieht zehn Sekunden lang einen Spinner, bevor er aufgibt. Ihr APM-Dashboard bleibt die ganze Zeit grün. Keine Ausnahme wurde ausgelöst, kein Stack-Trace erfasst, da in Ihrem Code nichts fehlgeschlagen ist. Das Skript des Zahlungsanbieters hing, die Seite wurde nie vollständig gerendert und die Bestellung ging verloren. Ihr Backend sah die endgültige Checkout-Anfrage nie, daher gibt es keine fehlgeschlagene Transaktion zu untersuchen: Aus Sicht der Anwendung ist nichts passiert. Aus Sicht des Benutzers ist der einzige wichtige Schritt fehlgeschlagen.

Das ist der blinde Fleck, um den es in diesem Artikel geht. Stack-Trace-Monitoring ist wirklich gut darin, was es tut: Wenn Ihr Code eine Ausnahme wirft, liefert es Entwicklern die Datei, die Zeile und die Aufrufkette, die dorthin geführt hat. Das Problem ist, was es strukturell nicht sehen kann. Eine ganze Klasse von benutzerseitigen Fehlern passiert, bevor eine Anfrage Ihren Code erreicht, nachdem Ihre Antwort ihn verlassen hat oder ohne dass eine Fehlermeldung ausgelöst wird.

Hier ist, was das Stack-Trace-Monitoring gut erfasst, die fünf Lücken, die es bei der Messung der Benutzererfahrung lässt, und wie synthetisches Real-Browser-Monitoring das abdeckt, was es nicht erfassen kann.

Was ist Stack-Trace-Monitoring?

Ein Stack-Trace ist eine Momentaufnahme des Aufrufstapels zum Zeitpunkt eines Fehlers: welche Funktionen ausgeführt wurden, in welchen Dateien, an welchen Zeilennummern und in welcher Reihenfolge sie aufgerufen wurden. Wenn Sie schon einmal einen Konsolenfehler gesehen haben, der eine Kaskade von Methoden und Dateipfaden auflistet, haben Sie einen Stack-Trace gelesen.

Stack-Trace-Monitoring, wie es von APM-Tools (Application Performance Monitoring) praktiziert wird, erfasst diese Traces automatisch, gruppiert sie und verfolgt, wie oft jede Ausnahme auftritt. Wenn in Ihrem Checkout-Service eine NullPointerException auftritt, sagt Ihnen die APM-Plattform genau, wo Sie nachsehen müssen und wie verbreitet das Problem ist. Ausnahmen, die sonst in einer Logdatei verschwinden würden, werden eingestuft, getrackt und als zu bearbeitende Aufgaben zugewiesen.

Beachten Sie die Auslösebedingung, denn alles andere in diesem Artikel folgt daraus: Ein Stack-Trace existiert nur, wenn Code ausgeführt und ein Fehler geworfen wird. Beide Hälften dieser Bedingung sind wichtig. Wenn Ihr Code nie ausgeführt wird oder ohne Fehler ausgeführt wird, gibt es keinen Trace, egal was der Benutzer gerade erlebt hat.

Eine praktische Merkhilfe: Code wurde ausgeführt und hat eine Ausnahme geworfen, Sie erhalten einen Trace. Code wurde langsam ausgeführt, ohne eine Ausnahme zu werfen, kein Trace. Der Browser ist fehlgeschlagen, bevor er Ihren Code erreicht hat, kein Trace. Etwas außerhalb Ihres Codes blockierte den Weg, nachdem Ihre Antwort verlassen wurde, kein Trace. Nur ein Zustand von vier liefert Beweise, und Benutzer erleben alle vier.

Was Stack-Trace-Monitoring gut erfasst

Nichts von dem Folgenden ist ein Argument gegen APM. Bei Fehlern, die aus Ihrem Code stammen, sind Stack-Traces der schnellste Weg vom Symptom zur Lösung:

  • Schnelle Ursachenbestimmung. Ein Trace zeigt auf die fehlerhafte Zeile und den Aufrufpfad, der sie erreichte, und eliminiert den Großteil der Vermutungen, die manuelles Debugging erfordert.
  • Tiefer Fehlerkontext. Gute Traces übertragen Methodenargumente, Variablenzustände und Request-Metadaten, sodass Entwickler nicht nur sehen, wo der Code brach, sondern auch unter welchen Bedingungen.
  • Eine gemeinsame Sprache für Entwicklerteams. Ein Trace ist präzise und reproduzierbar. Das Einfügen eines solchen in ein Ticket kommuniziert mehr als lange Beschreibungen.
  • Trends zur Codequalität. Das Verfolgen wiederkehrender Ausnahmen und deren Ort weist auf fragile Module und schlechte Muster hin, die man vor einem Ausfall refaktorieren sollte.

Behalten Sie Ihr APM-Tool bei. Die Frage ist nicht, ob Stack-Traces nützlich sind. Sie ist, ob sie beschreiben, was Ihre Nutzer erleben. Das tun sie nicht, und die Lücken fallen in fünf verschiedene Kategorien.

Die Lücken: Was Stack-Traces über die Nutzererfahrung nicht erfassen

Diese fünf Lücken sind keine zufälligen blinden Flecken. Es sind Grenzprobleme: ausgeliehener Code, Infrastruktur vor der Anwendung, Browser-Ausführung, Geografie und Zeit. Stack-Traces sind innerhalb der Anwendungsgrenze stark und schwach überall dort, wo die Nutzerreise diese Grenze überschreitet.

Diagramm zeigt die Sichtbarkeitslücke zwischen dem, was Stack-Trace-APM im Anwendungscode sieht und was Nutzer im Browser erleben, mit Drittanbieter-Skripten, CDN- und DNS-Ausfällen, Rendering-Problemen und regionalen Ausfällen dazwischen
Stack-Trace-APM instrumentiert Ihren Code. Nutzer erleben alles zwischen ihrem Browser und diesem Code.

Drittanbieter-Skripte und externe APIs

Eine typische Seite zieht heute Zahlungs-Widgets, Tag-Manager, Chat, Analytics und Werbeskripte von Servern anderer Firmen. Wenn eine dieser Abhängigkeiten hängt oder sich verlangsamt, stockt die Seite für den Nutzer, aber der fehlerhafte Code ist nicht Ihrer, daher löst Ihre Instrumentierung nichts aus. Oft gibt es keine explizite Ausnahme: Der Drittanbieter-Endpunkt antwortet, nur langsam genug, um das Rendering zu blockieren. Drittanbieter-Inhalte sind der klassische Fall, bei dem Nutzer leiden, während jedes interne Dashboard grün bleibt.

DNS-, TLS- und CDN-Ausfälle

Bevor eine Anfrage Ihre Anwendung erreicht, muss Ihre Domain aufgelöst, ein TLS-Handshake abgeschlossen und oft ein CDN-Edge passiert werden. Ein falsch konfigurierter DNS-Eintrag, ein abgelaufenes Zertifikat oder ein ausfallender Edge-Knoten stoppt Nutzer an der Haustür. Ihr Code wird für diese Besucher nie ausgeführt, was bedeutet, dass der Fehler definitionsgemäß keinen Stack-Trace erzeugen kann. Innerhalb Ihrer Infrastruktur ist das sichtbarste Symptom Stille: Der Traffic sinkt, und nichts erklärt es. Die DNS-, TCP-, TLS- und HTTP-Schichten fallen jeweils auf eine Weise aus, die nur eine außen-in Prüfung beobachten kann.

Frontend-Rendering- und UI-Fehler

Serverseitiges APM bestätigt, dass Ihr Backend eine gültige Antwort rechtzeitig zurückgegeben hat. Es sagt nichts darüber, was der Browser damit gemacht hat. Ein JavaScript-Bündel, das in einer Browser-Version abstürzt, ein Layout, das auf Mobilgeräten kollabiert, ein Button, dessen Klick-Handler nie gebunden wird: all das lässt Nutzer eine kaputte Seite sehen, während der Server sauber 200 protokolliert. Clientseitige Ausnahmen können separat gesammelt werden, aber langsames Rendering, Layoutverschiebungen und nicht reagierende Steuerelemente werfen meist keine Fehler. Sie verlieren Benutzer einfach still. Ein Hydrationsfehler in einer Next.js-App ist der moderne Klassiker: Der Server sendet ein perfektes 200 mit vollständig formatiertem HTML, das clientseitige JavaScript schlägt fehl, und Nutzer erhalten eine Seite, die richtig aussieht, aber nichts tut. Das zu überwachende Ereignis ist nicht, ob JavaScript eine Exception geworfen hat, sondern ob der Meilenstein erreicht wurde: Button klickbar, Formular abgeschickt, Bestätigung angezeigt. Stack-Traces erfassen Ausnahmen; Nutzer erleben fehlende Meilensteine.

Regionale Ausfälle

Ihre Instrumentierung befindet sich innerhalb Ihrer Infrastruktur und berichtet aggregiert. Wenn eine Carrier-Route zwischen einer Region und Ihren Servern abnimmt oder ein CDN-Knotenpunkt in einer Region ausfällt, erleben Nutzer dort Timeouts, während Ihre Durchschnittswerte kaum schwanken. Ein Stack-Trace kennt keinen Konzept von Nutzerstandort; er weiß nur, welcher Code gerade ausgeführt wurde. Regionale Ausfälle sind per Definition für eine codezentrierte Sicht unsichtbar.

Langsam ist keine Ausnahme

Die subtilste Lücke: Performance-Verschlechterungen werfen nie eine Ausnahme. Eine Seite, die von zwei auf acht Sekunden langsamer wird, erzeugt keine Fehler, treibt aber stetig Nutzer weg. Meist bemerkt es zuerst das Marketing in sinkenden Funnel-Metriken, lange bevor ein Entwickler Pager warnt, weil aus Sicht des Codes nichts defekt ist. Stack-Trace-Monitoring ist auch per Design reaktiv, da es erst nach einem Fehler meldet, und seine Ausgabe ist nur für Leute lesbar, die den Code kennen. Ein Stack-Trace erfasst keine Antwortzeiten, keine Ladegeschwindigkeiten, keine nutzerrelevanten Performancekennzahlen. Eine Anwendung kann so langsam sein, dass sie unbenutzbar ist, und aus Stack-Trace-Sicht vollkommen gesund.

Fehler Was der Nutzer erlebt Was Stack-Trace-APM zeigt
Drittanbieter-Skript hängt Seite stockt beim Laden, Checkout blockiert Grün — keine Ausnahme im eigenen Code
A/B-Test-Skript feuert fehl Die Hälfte der Nutzer erhält eine kaputte Variantenseite Grün — das Experiment ist nicht Ihr Code
DNS-Eintrag falsch konfiguriert Seite unerreichbar Grün — Anfragen kommen nie an
TLS-Zertifikat abgelaufen Sicherheitswarnung im Browser, Nutzer geht Grün — Handshake schlägt fehl, bevor Code läuft
JS-Bündel bricht in einem Browser Totale Buttons, kaputtes Layout Saubere 200er Antwort vom Server
CDN-Edge verschlechtert sich in einer Region Zehn-Sekunden-Ladezeiten in dieser Region Normale aggregierte Antwortzeiten
Allmählicher Performanceverfall Langsamere Seiten, steigendes Abbruchverhalten Keine Fehler, nichts zu melden

Wie synthetisches Monitoring die Lücken schließt

Synthetisches Monitoring nähert sich dem Problem von der entgegengesetzten Seite. Statt Ihren Code zu instrumentieren und zu warten, bis dieser eine Ausnahme wirft, führt es geplante, skriptgesteuerte Prüfungen Ihrer Anwendung von echten Browsern aus Weltstandorten aus durch und misst genau das, was ein Nutzer an diesem Ort und zu diesem Zeitpunkt erhält. Diese Umkehrung deckt jede Lücke direkt ab:

  • Es lädt die gesamte Seite, nicht nur Ihren Code. Eine Real-Browser-Prüfung führt jedes Drittanbieter-Skript aus, das die Seite enthält. Hängt der Tag-Manager oder verlangsamt ein Zahlungs-Widget das Laden, erkennt die Prüfung es, und ein Wasserfalldiagramm zeigt welche Ressource wie lange blockierte.
  • Sie beginnt dort, wo der Nutzer beginnt. Jede Prüfung löst DNS auf, verhandelt TLS und durchläuft das CDN von außerhalb Ihres Netzwerks. Ein abgelaufenes Zertifikat oder ein ausgefallener Edge-Knoten schlägt die Prüfung innerhalb eines Monitoring-Zyklus fehl, statt in einer unerklärlichen Traffic-Delle Stunden später aufzutauchen.
  • Sie rendert in einem echten Browser. Da die Prüfung eine echte Browser-Engine steuert, zeigen sich kaputte Skripte, nicht reagierende Elemente und Rendering-Fehler als fehlgeschlagene Schritte, nicht als unsichtbare clientseitige Probleme.
  • Sie läuft aus vielen Regionen. Prüfungen aus einem globalen Standortnetzwerk isolieren regionalspezifische Fehler: Wenn Frankfurt ausfällt, Dallas aber durchkommt, kennen Sie das Ausmaß des Problems, bevor Nutzer darüber twittern.
  • Sie misst die Geschwindigkeit bei jedem Lauf, Fehler oder nicht. Jede Prüfung zeichnet Lade- und Timing-Daten zu jedem Schritt auf, sodass eine achtsekündige Seite eine Warnung bei einem von Ihnen gesetzten Schwellenwert auslöst, lange bevor irgendetwas technisch kaputtgeht.

Die daraus abzuleitende Priorisierungsregel lautet: Eine Prüfung, die vor dem ersten Byte fehlschlägt, weist auf DNS-, TLS- oder CDN-Verantwortung hin. Ein Wasserfall, der bei einer Drittanbieter-Domain stockt, löst den ersten Anruf beim Anbieter aus, nicht beim Anwendungsteam. Ein skriptgesteuerter Schritt, der Ihr Backend erreicht, während APM eine Ausnahme zeigt, geht mit angehängtem Trace an die Entwickler.

Mehrstufige Abläufe erhalten dieselbe Behandlung. Mit EveryStep Scripting kann eine Prüfung sich einloggen, suchen, in den Warenkorb legen und bezahlen – nach Zeitplan rund um die Uhr – sodass die Einnahmepfade kontinuierlich verifiziert werden, anstatt als gesund angenommen zu werden.

Um klarzustellen, was synthetisches Monitoring nicht ist: Es sieht nicht in Ihren Code hinein. Wenn eine Prüfung fehlschlägt, weil Ihr Backend eine Ausnahme geworfen hat, sagt der Stack-Trace, nicht der Browser, dem Entwickler, welche Zeile zu fixieren ist. Genau deshalb gehören die beiden zusammen.

APM und synthetisches Monitoring: Besser zusammen

Dies ist keine entweder/oder Entscheidung, und wenn man sie so behandelt, werden Teams überrascht. APM mit Stack-Traces überwacht von innen nach außen und beantwortet Warum ist der Code fehlgeschlagen? Synthetisches Monitoring beobachtet von außen nach innen und beantwortet Können Nutzer wirklich die wichtigen Dinge jetzt von dort aus tun, wo sie sind? Jeder spiegelt die blinden Flecken des anderen wider.

Die gefährlichen Fehler sind die, die jedes Tool allein übersehen würde: bei APM ein durch ein Drittanbieter-Skript blockierter Checkout; bei synthetischen Prüfungen eine Ausnahme, die nur unter seltenen Eingaben auftritt. Beide zusammen eingesetzt, verschwinden keine Fehlerklasse.

In der Praxis bilden die beiden eine Pipeline. Eine synthetische Prüfung schlägt bei einem Checkout in Frankfurt fehl. Der Wasserfall isoliert die betroffene Schicht: DNS, CDN, einen Drittanbieter-Aufruf oder das eigene Backend. Wenn die Spur in Ihrer Anwendung endet, übernimmt der Stack-Trace in Ihrem APM-Tool und benennt die Funktion, die die Ausnahme geworfen hat. Erkennung von außen, Diagnose von innen, und keine Lücke zwischen dem, was Ihre Dashboards sagen, und dem, was Ihre Nutzer sehen. Es beendet auch das bekannte Patt, bei dem ein Team auf grünes APM besteht, während das andere Team von Nutzerbeschwerden berichtet: Nur mit APM zu arbeiten ist wie Überwachungskameras im Tresor ohne Kameras an der Tür – eine perfekte Aufzeichnung des Diebstahls entdeckt erst, wenn der Tresor leer ist.

Dotcom-Monitor sitzt auf der synthetischen Seite dieser Kombination. Es ist keine APM-Plattform und ersetzt Tools wie New Relic oder Datadog nicht; es ergänzt sie mit Real-Browser-Synthetik-Monitoring aus einem globalen Standortnetzwerk, mit Timing pro Schritt, Wasserfalldetails und Alarmierung, wenn ein Ablauf sich verlangsamt oder fehlschlägt.

Das Fazit

Stack-Trace-Monitoring hat seinen Platz verdient: Wenn Ihr Code eine Ausnahme wirft, kommt kein Entwickler schneller zur fehlerhaften Zeile. Aber seine Auslösebedingung, Code, der ausgeführt wird und Fehler verursacht, definiert genau, was es niemals zeigen kann. Drittanbieter-Skripte, DNS- und CDN-Ausfälle, Frontend-Rendering-Probleme, regionale Ausfälle und langsamer, aber fehlerfreier Abbau treffen Nutzer, ohne einen Trace zu hinterlassen, im wörtlichen Sinne.

Synthetisches Real-Browser-Monitoring schließt diese Lücken, indem es den gesamten Weg der Nutzer überprüft, aus jeder für Sie wichtigen Region, nach Zeitplan, der Probleme erkennt, bevor Support-Tickets es tun. Behalten Sie die Stack-Traces zur Diagnose. Ergänzen Sie diese durch außen-in Prüfungen zur Entdeckung. Ihre Nutzer erleben den ganzen Weg, also sollte Ihr Monitoring den ganzen Weg abdecken.

Sehen Sie, was Ihr APM nicht kann

Führen Sie Real-Browser-synthetisches Monitoring für Ihre kritischen Nutzerflüsse mit einem globalen Netzwerk durch und erkennen Sie Fehler, die nie eine Ausnahme auslösen. Starten Sie eine kostenlose Testversion.

Häufig gestellte Fragen

Ist Stack Trace Monitoring dasselbe wie APM?
Nicht genau. Stack-Trace-Erfassung ist eine Funktion innerhalb von APM-Suiten, die auch Transaktionszeiten, Datenbankabfragen und Infrastrukturmetriken verfolgen. Die gemeinsame Einschränkung ist die Perspektive: APM instrumentiert Ihre Anwendung von innen, daher werden Fehler außerhalb Ihres Codes oft nie erfasst.
Kann die Stapelverfolgungsüberwachung die Benutzererfahrung messen?
Nur indirekt. Eine Trace existiert, weil in deinem Code eine Ausnahme ausgelöst wurde. Sie zeichnet nichts über Ladegeschwindigkeit, Rendering, Skripte von Drittanbietern, DNS- oder CDN-Gesundheit oder regionale Verlangsamungen auf und kann keine Verschlechterung erfassen, die niemals eine Ausnahme wirft. Die Messung dessen, was Benutzer sehen, erfordert von außen kommende Überprüfungen mit echten Browsern.
Ersetzt synthetische Überwachung APM?
Nein. Sie decken die blinden Flecken des jeweils anderen ab. APM erklärt, warum der Code Zeile für Zeile fehlschlägt. Synthetisches Monitoring bestätigt von außen, dass Benutzer Seiten laden und wichtige Abläufe wie Login und Checkout abschließen können. Reife Teams nutzen beides: Synthetisches Monitoring erkennt benutzerseitige Fehler, APM diagnostiziert die, die im Code entstehen.
Welche Fehler übersehen Stack-Traces vollständig?
Alles, was vor oder außerhalb Ihres Codes fehlschlägt: DNS-Fehlkonfiguration, abgelaufene TLS-Zertifikate, CDN-Edge-Ausfälle, blockierte Drittanbieterskripte, Darstellungsfehler in bestimmten Browsern, regionale Netzwerkausfälle und allmählicher Leistungsabfall. In jedem Fall haben Benutzer eine schlechte Erfahrung, während keine Ausnahme ausgelöst wird und keine Spur existiert.
Matthew Schmitz
About the Author
Matthew Schmitz
Leiter für Last- und Performance-Tests bei Dotcom-Monitor

Als Leiter für Last- und Performance-Tests bei Dotcom-Monitor führt Matt derzeit ein Team außergewöhnlicher Ingenieure und Entwickler, die gemeinsam innovative Lösungen für Last- und Performance-Tests entwickeln, um selbst die anspruchsvollsten Anforderungen von Unternehmen zu erfüllen.

Latest Web Performance Articles​

Wie man eine Telefonnummer überwacht

Verhindern Sie stille Telefonleitungsunterbrechungen. Erfahren Sie, wie Operationsteams SIP-Checks und eingehende Wähltastentests verwenden, um die Kundenleitungen reibungslos am Laufen zu halten.

Starten Sie Dotcom-Monitor kostenlos

Keine Kreditkarte erforderlich