Was ist Distributed Tracing?
Beim verteilten Tracing werden Datenanforderungen beobachtet, während sie ein verteiltes System durchlaufen. Eine moderne Microservices-Architektur besteht oft aus mehreren kleinen unabhängigen Komponenten. Diese Komponenten kommunizieren ständig und tauschen Daten mithilfe von APIs aus, um komplexe Aufgaben zu erledigen. Mit verteiltem Tracing können Entwickler den Anforderungspfad über verschiedene Microservices hinweg verfolgen oder visuell verfolgen. Diese Sichtbarkeit hilft bei der Behebung von Fehlern oder bei der Behebung von Bugs und Leistungsproblemen.
Was sind die Vorteile von verteiltem Tracing?
Softwareentwickler können verteilte Tracing-Systeme in fast jeder cloudnativen Umgebung implementieren und verteilte Traces aufzeichnen, die von den Cloud-Anwendungen generiert werden. Darüber hinaus unterstützen Tracing-Tools zahlreiche Programmiersprachen und Software-Stacks, sodass Softwareteams Leistungsdaten für verschiedene Anwendungen auf derselben Plattform überwachen und sammeln können.
Entwicklungsteams verwenden verteiltes Tracing, um die Beobachtbarkeit zu verbessern und Leistungsprobleme zu lösen, bei denen herkömmliche Software-Debugging- und Überwachungstools nicht helfen können.
Im Folgenden sind weitere Vorteile des verteilten Tracings aufgeführt.
Beschleunigung der Software-Fehlerbehebung
Moderne Anwendungen sind auf zahlreiche Microservices angewiesen, um Daten auszutauschen und Serviceanfragen über verteilte Systeme hinweg zu erfüllen. Die Behebung von Leistungsproblemen in einer Microservice-basierten Architektur ist deutlich schwieriger als in einer monolithischen Softwareanwendung. Im Gegensatz zu einer monolithischen Anwendung ist die Ursache eines bestimmten Softwareproblems möglicherweise nicht offensichtlich – die überlappenden und komplexen Interaktionen zwischen mehreren Softwaremodulen können die Diagnose von Problemen erschweren.
Mit verteiltem Tracing können Softwareteams Daten überwachen, die komplexe Pfade durchlaufen, die verschiedene Microservices und Datenspeicher verbinden. Mithilfe verteilter Tracing-Tools verfolgen Softwareteams Anfragen und visualisieren Datenausbreitungspfade präzise. Softwareteams können Leistungsprobleme umgehend lösen und Serviceunterbrechungen minimieren.
Verbesserung der Zusammenarbeit mit Entwicklern
Oft sind mehrere Entwickler an der Erstellung einer Cloud-Anwendung beteiligt, wobei jeder für einen oder mehrere Microservices verantwortlich ist. Der Softwareentwicklungsprozess verlangsamt sich, wenn Entwickler die von Microservices ausgetauschten Daten nicht verfolgen können. Mit verteilten Tracing-Systemen können Entwickler zusammenarbeiten, indem sie Telemetriedaten wie Protokolle und Traces für jede Serviceanfrage des Microservices bereitstellen. Entwickler können präzise auf Fehler und andere Softwareprobleme reagieren, die während des Tests und der Produktion entdeckt wurden.
Verkürzen Sie die Zeit bis zur Markteinführung
Unternehmen, die verteilte Tracing-Plattformen einsetzen, können ihre Bemühungen zur Veröffentlichung von Softwareanwendungen für Endbenutzer rationalisieren und beschleunigen. Softwareteams überprüfen verteilte Traces, um Erkenntnisse zu gewinnen, die die Softwareentwicklung beschleunigen, die Entwicklungskosten minimieren, das Nutzerverhalten verstehen und die Marktreife verbessern.
Was sind die verschiedenen Arten des verteilten Tracings?
Softwareteams verwenden verteilte Tracing-Tools, um Anwendungen zu überwachen, zu analysieren und zu optimieren.
Code-Tracing
Code-Tracing ist ein Softwareprozess, der den Quellcodefluss in einer Anwendung überprüft, wenn eine bestimmte Funktion ausgeführt wird. Es hilft Entwicklern, den logischen Ablauf des Codes zu verstehen und unbekannte Probleme zu identifizieren. Beispielsweise verwenden Entwickler Code-Tracing, um zu überprüfen, ob die Serviceanfrage Schritte zum Abfragen einer Datenbank aufgerufen hat. Wenn einige Softwarefunktionen nicht antworten, erfasst das Tracing-System den entsprechenden Fehlerstatus und macht auf die Reaktionszeit aufmerksam.
Programm-Tracing
Das Programm-Tracing ist eine Methode, mit der Entwickler die Adressen von Anweisungen und Variablen untersuchen können, die von einer aktiven Anwendung aufgerufen werden. Wenn eine Softwareanwendung ausgeführt wird, verarbeitet sie jede Codezeile, die sich in einem bestimmten zugewiesenen Speicherplatz befindet. Die Anwendung verarbeitet auch Variablen, die im Maschinenspeicher gespeichert sind. Die Überprüfung von Änderungen an Programm- und Datenspeichern ist ohne ein automatisiertes Tool eine Herausforderung. Mithilfe des Programm-Tracings können Softwareteams tief verwurzelte Leistungsprobleme wie Speicherüberlauf, übermäßigen Ressourcenverbrauch und blockierende Logikoperationen diagnostizieren.
End-to-End-Ablaufverfolgung
Mit End-to-End-Ablaufverfolgung können Entwicklungsteams die Datentransformation entlang des Serviceanforderungspfads verfolgen. Wenn eine Anwendung eine Anfrage initiiert, sendet sie Daten zur weiteren Verarbeitung an andere Softwarekomponenten. Entwickler verwenden Tracing-Tools, um Änderungen, denen wichtige Daten unterliegen, von Anfang bis Ende zu verfolgen und zu kompilieren. Es bietet eine anwendungsorientierte Ansicht der Anfragen, die durch die Anwendung fließen.
Wie funktioniert verteiltes durchgängiges Tracing in der Microservices-Architektur?
Bei der Verwendung von Anwendungen initiieren Benutzer Serviceanfragen, und verschiedene Anwendungskomponenten verarbeiten die Anfrage.
Stellen Sie sich einen Benutzer vor, der eine Ticketbuchung in einer Online-Anwendung für Filmbuchungen vornimmt. Der Benutzer gibt seine Kontaktdaten, Filmdetails und Zahlungsinformationen ein und wählt Jetzt buchen. Es wird eine Anfrage erstellt. Diese geht an:
- Microservice A, der die vom Benutzer eingegebenen Daten validiert.
- Microservice B, der die Daten von A übernimmt und einen Datensatz in der Kundendatenbank erstellt.
- Microservice C, der die Daten von B übernimmt und die Zahlung validiert.
- Microservice D, der die Daten von C übernimmt, einen Sitzplatz zuweist und Kinokartendaten generiert.
- Microservice E, der die Daten von D übernimmt und eine formatierte Ticket-PDF-Datei erstellt.
Eine Antwort, die das Ticket-PDF enthält, wird dann in der Kette der Microservices von E nach D über C bis B nach A zurückgesendet, bis sie schließlich den Benutzer erreicht. Das obige Beispiel ist einfach: Eine Anfrage durchläuft oft mehrere Dutzend Microservices und sogar Ketten von Softwarekomponenten von Drittanbietern außerhalb der Anwendung. Dadurch wird der Prozess immer komplexer.
Verteilte Tracing-Systeme verfolgen diese Interaktionen von Serviceanfragen mit anderen Microservices und Softwarekomponenten in der verteilten Computerumgebung. Ein verteilter Trace stellt die Zeitleiste und alle Aktionen dar, die zwischen der Anforderungsgenerierung und dem Empfang der Antwort stattfinden. Softwareteams verwenden den Trace, um die Datenbewegung durch mehrere Microservices zu verfolgen, mit denen die ursprüngliche Anfrage interagiert.
Span
Bei der Bearbeitung einer Serviceanfrage kann eine Anwendung mehrere Aktionen ausführen. Diese Aktionen werden im verteilten Tracing als Spans dargestellt. Ein Span kann beispielsweise ein API-Aufruf, eine Benutzerauthentifizierung oder die Aktivierung des Speicherzugriffs sein. Wenn eine einzelne Anforderung zu mehreren Aktionen führt, kann sich der anfängliche (oder übergeordnete) Span in mehrere untergeordnete Spans verzweigen. Diese verschachtelten Ebenen aus übergeordneten und untergeordneten Spans bilden eine kontinuierliche logische Darstellung der Schritte, die zur Erfüllung der Serviceanfrage unternommen wurden.
Trace-ID
Das verteilte Tracing-System weist jeder Anfrage eine eindeutige ID zu, um sie zu verfolgen. Jeder Span erbt dieselbe Trace-ID von der ursprünglichen Anfrage, zu der er gehört. Spans werden außerdem mit einer eindeutigen Span-ID versehen, die dem Tracing-System hilft, die gesammelten Metadaten, Protokolle und Metriken zu konsolidieren.
Metrische Sammlung
Da jeder Bereich verschiedene Microservices durchläuft, werden Metriken angehängt, die Entwicklern tiefe und präzise Einblicke in das Verhalten der Software bieten. Sie können Fehlerrate, Zeitstempel, Antwortzeit und andere Metadaten mit den Spans erfassen. Nachdem der Trace einen ganzen Zyklus abgeschlossen hat, konsolidiert das Tool für das verteilte Tracing alle gesammelten Daten.
Beispielsweise wird ein API-Aufruf anhand der Antwortzeit, des Fehlerstatus und der Aufschlüsselung der sekundären Funktionen ausgewertet, die von mehreren Drittanbieterdiensten erfüllt werden. Das Tracing-Tool wandelt die Daten in visuelle Formen um und hebt Schlüsselindikatoren und Leistungszusammenfassungen hervor. Auf diese Weise können die Zuverlässigkeitsingenieure Fehler schnell identifizieren, wichtige Datenelemente überprüfen und mit Entwicklungsteams zusammenarbeiten, um Leistungsprobleme zu beheben und die Einhaltung von Service Level Agreements (SLAs) sicherzustellen.
Was sind verteilte Tracing-Standards?
Verteilte Tracing-Standards bieten Entwicklern ein gemeinsames Framework und Softwaretools. Diese Standards überwachen, visualisieren und analysieren Serviceanfragen in modernen Anwendungsumgebungen. Durch die Standardisierung des Workflows für das verteilte Tracing können Softwareteams die Anforderungsverfolgung instrumentieren, ohne an einen bestimmten Anbieter gebunden zu sein.
In den folgenden Abschnitten werden Standards beschrieben, die eingeführt wurden, um die Interoperabilität bei der Durchführung von verteiltem Tracing zu ermöglichen.
OpenTracing
OpenTracing ist ein Open-Source-Standard für verteiltes Tracing, der von der Cloud Native Computing Foundation (CNCF) entwickelt wurde. OpenTracing konzentriert sich darauf, Entwicklern die Generierung von Traces mit einer Instrumentierungs-API zu ermöglichen. Auf diese Weise können Entwickler verteilte Traces aus verschiedenen Teilen der Codebasis, Bibliothek oder anderen Abhängigkeiten generieren.
OpenCensus
OpenCensus besteht aus mehrsprachigen Bibliotheken, die Softwaremetriken extrahieren und zur Analyse an Backend-Systeme senden können. Entwickler können die bereitgestellte API verwenden, um zu verwalten, wie Traces generiert und gesammelt werden. Im Gegensatz zu OpenTracing arbeiten Entwickler mit OpenCensus von einem einzigen Projekt-Repository aus und nicht aus einzelnen Codebasen und Bibliotheken.
OpenTelemetry
OpenTelemetry vereint OpenTracing und OpenCensus. Es kombiniert die besten Funktionen beider Standards, um ein umfassendes Framework für verteiltes Tracing bereitzustellen. OpenTelemetry bietet umfangreiche Softwareentwicklungskits, APIs, Bibliotheken und andere Instrumentierungstools, mit denen Sie verteiltes Tracing mühelos implementieren können.
Was ist der Unterschied zwischen verteiltem Tracing und Protokollierung?
Bei der Protokollierung werden bestimmte Ereignisse aufgezeichnet, die auftreten, wenn eine Anwendung ausgeführt wird. Protokollierungstools erfassen Ereignisse mit Zeitstempel – wie Systemfehler, Benutzerinteraktionen, Kommunikationsstatus und andere Kennzahlen – um Entwicklungsteams bei der Erkennung von Systemanomalien zu unterstützen. Im Allgemeinen gibt es zwei Arten der Protokollierung:
- Die zentrale Protokollierung sammelt alle aufgezeichneten Aktivitäten und speichert sie an einem einzigen Ort.
- Bei verteilter Protokollierung werden Protokolldateien an separaten Orten in der Cloud gespeichert.
Beide Protokollierungsmethoden bieten einen statischen Überblick über Vorfälle, der Entwicklern zeigt, was in der Anwendung passiert ist. Im Gegensatz dazu bietet verteiltes Tracing einen Audit Trail, der verdeutlicht, warum ein Vorfall aufgetreten ist, indem verschiedene Telemetriedaten, die während des Zeitraums einer Serviceanfrage gesammelt wurden, miteinander korreliert werden. Beim verteilten Tracing können Protokollierungs- und andere Datenerfassungsmethoden verwendet werden, um eine bestimmte Serviceanfrage zu verfolgen.
Was sind die Herausforderungen von verteiltem Tracing?
Das verteilte Tracing hat die Arbeit der Entwickler bei der Diagnose, dem Debuggen und der Behebung von Softwareproblemen vereinfacht. Trotzdem bleiben die folgenden Herausforderungen bestehen, auf die Softwareteams bei der Auswahl der Tracing-Tools achten müssen.
Manuelle Instrumentierung
Bei einigen Tracing-Tools müssen Softwareteams ihre Codes manuell instrumentieren, um die erforderlichen Traces zu generieren. Wenn Entwickler Codes ändern, um Anfragen zu verfolgen, besteht das Risiko von Codierungsfehlern, die sich auf Produktionsversionen auswirken. Darüber hinaus erschwert der Mangel an Automatisierung das Tracing, was zu Verzögerungen und möglicherweise zu ungenauen Datenerfassungen führt.
Eingeschränkte Frontend-Abdeckung
Entwickler sind möglicherweise nicht in der Lage, Leistungsprobleme vollständig im Blick zu behalten, wenn ihre Tracing-Tools auf Backend-Analysen beschränkt sind. In einigen Fällen beginnt das verteilte Tracing-System erst, Daten zu sammeln, wenn der erste Backend-Dienst die Anfrage erhält. Das bedeutet, dass Entwickler Probleme, die sich aus Frontend-Diensten ergeben, während der entsprechenden Benutzersitzung nicht erkennen und untersuchen können.
Stichprobenentnahme
Bei einigen Tools können Softwareteams dem Tracing keine Priorität einräumen, sodass die Beobachtbarkeit auf zufällig ausgewählte Traces beschränkt ist. Angesichts begrenzter Stichprobendaten benötigen Unternehmen zusätzliche Software-Lösungsansätze zur Problembehebung, um schwerwiegende Probleme zu erfassen, die dem Tracing-Tool entgehen.
Wie kann AWS Ihnen bei Ihren Anforderungen an das verteilte Tracing helfen?
AWS X-Ray ist eine verteilte Verfolgungsplattform, mit der Softwareentwickler Benutzeranfragen verfolgen und Engpässe in ihren Cloud-Anwendungen identifizieren können. Unternehmen verwenden X-Ray, um Anwendungsmetriken zu visualisieren und die Verfügbarkeit von Workloads zu verbessern. Mit AWS X-Ray können Sie:
- Alle Anwendungen verwenden, die in Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda und AWS Elastic Beanstalk ausgeführt werden.
- Die entsprechende Abtastrate einstellen, um eine durchgängige Sichtbarkeit der Spuren zu gewährleisten.
- Aggregierte Daten mit einer Servicekarte visualisieren, die wichtige Kennzahlen wie Latenz und Ausfallraten anzeigt.
Beginnen Sie mit verteiltem Tracing in AWS, indem Sie noch heute ein Konto erstellen.
Nächste Schritte in AWS
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Starten Sie mit der Entwicklung in der AWS-Managementkonsole.