Mehr als 43 Millionen Aufrufe pro Monat: Site-Performance und Verfügbarkeit von Dealer.com sind entscheidende Erfolgsfaktoren für tausende Automobilhändler in den USA. Ist die Website nicht aufrufbar oder treten Fehler auf, leidet das Kundenerlebnis – mit unmittelbaren Auswirkungen auf die Verkaufschancen der Anbieter auf der Plattform.

In komplexen Software-Umgebungen wie der von Dealer.com muss jede Anfrage eine Vielzahl einzelner Services durchlaufen. Nur ein einziger problematischer Service auf diesem Weg kann die Reaktionszeit der jeweiligen Anfrage beeinträchtigen und zu Unzufriedenheit bei den Kund:innen führen – aus denen bei solchen Vorkommnissen auch ganz schnell ehemalige Kund:innen werden können.

Umso wichtiger also, dass Software-Teams mit Verantwortung für Umgebungen, in denen viele Services auf eine Anfrage einwirken, den Performance-Kontext jedes einzelnen vor- wie auch nachgelagerten Service im Detail evaluieren können. Denn nur so können sie Performance-Probleme effektiv lösen, die System-Health quantitativ erfassen und kritische Bereiche mit hohem Verbesserungspotenzial priorisieren. 

New Relic APM-Kund:innen nutzen Distributed Tracing kostenlos

Mit New Relic Distributed Tracing erhalten Software-Teams ein effizientes Tool, um Traces über komplexe Architekturen hinweg zu erfassen, zu visualisieren und zu analysieren. Wenn Sie Application Performance Monitoring (APM) von New Relic bereits nutzen, erhalten Sie kostenlos Zugriff auf Distributed Tracing. Aktualisieren Sie einfach Ihre Agents, öffnen Sie New Relic und wählen Sie die Option Traces. Anschließend werden Ihre Trace-Daten angezeigt.

Die New Relic APM-Agents ersetzen Tracing-Software vollständig – und somit einiges an komplexem Admin-Aufwand. So können Engineers wie Andrew Potter von Dealer.com ihre Umgebung nahtlos instrumentieren und ohne Einschränkungen Trace-Telemetriedaten generieren – ganz ohne zusätzlichen Deployment- und Skalierungsaufwand für Einzelkomponenten.

Distributed Tracing von New Relic ließ sich enorm einfach in unseren Stack integrieren. Wir haben einfach unseren Agent aktualisiert und schon war die Technologie einsatzbereit. Voilà.

Distributed Tracing instituiert Observability für alle Anwendungs-Traces in verteilten Systemen. Detaillierte Punktdiagramme und Wasserfallvisualisierungen liefern direkt umsetzbare Insights für verschiedene Frameworks wie C, Go, Java, .NET, Node.js, PHP, Python oder Ruby. Ebenso enthalten sind Browserdaten und Mobile Monitoring von New Relic sowie AWS Lambda und Zipkin Format-Traces über die Trace API. Dank Unterstützung für gängige Trace-Standards wie OpenTelemetry und W3C können Probleme schneller analysiert und behoben werden.

Ansicht für Distributed Tracing als Teil von New Relic APM

Detailvisualisierung für moderne Software-Umgebungen

Um den Wirkungsgrad von Distributed Tracing präziser abzubilden, lohnt sich ein Blick auf Cloud-Plattformen sowie die Zusammenhänge von Containerisierung und Container-Orchestrierung. Technologien also, die Software-Teams mit Innovations-Mindset nutzen, um geschäftskritische Anwendungen zu entwickeln, operativ umzusetzen und zu skalieren.

Zweifelsohne bieten auf Microservices und Serverless aufbauende Software-Architekturen zahlreiche Vorteile. Gleichzeitig aber wirken die geradezu explodierende Anzahl an Komponenten und all die verschiedenen Programmiersprachen, Betriebsumgebungen und neuen Verantwortlichkeiten erschwerend auf die zuständigen Teams. Damit Probleme in diesen komplexen Systemen effizient behoben werden können, müssen ganz generell zwei Kernanforderungen erfüllt sein: Zum einen müssen sich Service-Abhängigkeiten klar nachvollziehen lassen können, zum anderen die Auswirkungen von Performance-Aspekten der abhängigen Services auf Anfragen und Transaktionen abbildbar sein. Die sprichwörtliche Nadel im Heuhaufen findet dabei nur, wer das Gesamtsystem in seiner Gänze überblickt.

Nur wenn sich klar identifizieren lässt, warum ein nachgelagerter Service ursächlich für einen kritischen Bottleneck bei einem anderen Service in unmittelbarer Abfolge der Transaktionskette war, kann auch schnell eine Problemlösung erarbeitet werden. DevOps-Teams erhalten so außerdem auch konkrete Insights, wie sich ihr Code optimieren lässt. Wenn nicht bestimmt werden kann, wann, weshalb und wie ein Problem aufgetreten ist, können kleinere Defekte weiterbestehen, bis sich eines Tages ein wahrer Events-Taifun zusammenbraut und das System komplett lahmlegt. Distributed Tracing liefert einen detaillierten Überblick einzelner Anfragen. Dadurch lässt sich präzise bestimmen, welche Bereiche im Gesamtsystem die Übeltäter sind – und Fehler folglich schneller beheben.

Daten & Insights

Distributed Tracing legt Service-Abhängigkeiten konsistent offen und vermittelt so End-to-End-Transparenz, fungiert dabei quasi als Erfassungs- und Visualisierungsmechanismus für komplexe Verkettungen in verteilten Systemen. Genau das kann sich bei Tracing-Daten aber enorm aufwendig gestalten, da dafür beispielsweise Gateways oder Satelliten von Drittanbietern implementiert und skaliert werden müssen.

Mit der automatischen Instrumentierung von New Relic lässt sich Distributed Tracing hingegen ganz einfach einrichten. Unser Anwendungscode greift hierbei auf Language Agents zurück, die mit Hunderten Bibliotheken und Frameworks verschiedener Programmiersprachen einsetzbar sind. Wenn Sie einen Agent installieren, instrumentiert New Relic APM jeden an der Anfrage beteiligten Service, erzeugt Timings für Abläufe innerhalb des Services und erweitert jeden Span automatisch um relevante Informationen zur Fehlerbehebung. Auch Custom-Attribute lassen sich zu Transaktionen hinzufügen und alle Details in der Trace einsehen – ohne etwas zu ändern.

Die Agents von New Relic APM erzeugen automatisch eine individuelle Trace-ID für jede eingehende Anfrage. Anschließend werden diese IDs und weitere zur Korrelation notwendige Informationen als Trace-Kontext in der gesamten Anfrage bereitgestellt. Kommt es beispielsweise zu einer Anfrage durch einen anderen Service, fügt New Relic den Trace-Kontext in den HTTP-Anfrage-Header ein. So kann der nächste Service diesen Kontext ebenfalls nutzen. Kontext muss dank der automatischen Instrumentierung von New Relic somit nicht mehr aufwendig propagiert werden.

Was aber müssen Anwender:innen mit einer Transportmethode beachten, die eine manuelle Instrumentierung erfordert? Mit dem Agent von New Relic APM erhalten Sie eine API, mit der sich der Trace-Kontext in den Ablauf einspeisen und extrahieren lässt. Die Propagierung erfolgt im Format W3C Trace Context, wodurch Interoperabilität mit jedem anderen Tracing-Agent oder -Tool gegeben ist, die diesen Standard unterstützen.

All dies setzt jedoch voraus, dass Sie diese Insights in Ihrem Stack auch identifizieren können. New Relic APM macht genau das möglich: Mit seinen Trace-Visualisierungen identifizieren Sie punktgenau langsame Anfragen und Fehlerursachen. Auch Optimierungspotenzial für Ihren Code mit starken UX-Vorteilen lässt sich präzise bestimmen.

Das folgende Diagramm verdeutlicht, wie diese Komponenten im Kontext von Distributed Tracing zusammenwirken:

Distributed Tracing: 4 Komponenten
Distributed Tracing: 4 Komponenten

Distributed Tracing in der Praxis

Neue Optimierungsmöglichkeiten für Ihre Anwendungen: Mit New Relic APM und Distributed Tracing analysieren Sie komplexe Architekturen und erhalten so einen genauen Einblick in die Abhängigkeiten in Ihrem gesamten System.

1. Erfahren Sie mehr in der Dokumentation zu Distributed Tracing.

2. Installieren bzw. aktualisieren Sie den APM-Agent für jeden Service, der Teil des für Sie relevanten Anfragepfads ist. Distributed Tracing steht sofort nach dem Upgrade zur Verfügung.

3. Das war's! Jetzt stehen Ihnen Distributed-Tracing-Details aus New Relic APM zur Verfügung, mit denen Sie nun langsame und fehlerhafte Traces rasch identifizieren können. Über die Filter-Features können Sie zudem Traces anhand verschiedener Attribute identifizieren.


Visualisieren Sie alle Spans, die eine Trace bilden. Die für jeden Span erfassten Details geben Auskunft zu Fehlerursachen und Möglichkeiten zur Behebung.