OpenTelemetry (OTel) ist ein Open-Source-Projekt, das einen herstellerneutralen Standard zum Sammeln, Verarbeiten und Exportieren von Telemetriedaten aus verteilten Systemen (z. B. einer Microservices- Architektur) bereitstellt. Dieser vereinfachte und universelle Ansatz zur Beobachtbarkeit erleichtert Entwicklern die Analyse der Leistung und des Verhaltens von Software, sodass sie Probleme in ihren Anwendungen leichter diagnostizieren und beheben können. OTel erfasst die folgenden Daten:

  • Spuren – „Wo liegt das Problem?“
  • Kennzahlen – „Gibt es ein Problem?“
  • Protokolle – „Was ist das Problem?“

OTel ist keine Programmiersprache oder ein Programmierprodukt. Dieses Open-Source-Projekt gibt es seit 2019 und wird derzeit von der Cloud Native Computing Foundation (CNCF) gepflegt.

Sehen Sie sich dieses Video an, um zu erfahren, wie Sie loslegen:

Von OTel generierte Datentypen

Spuren

Eine Ablaufverfolgung zeichnet die Ereignisse auf, die während eines Vorgangs auftreten, beispielsweise während der Bearbeitung einer einzelnen Anfrage. Die Ablaufverfolgung wird in eine Reihe von Bereichen aufgeteilt, von denen jeder eine Arbeitseinheit darstellt.

Beispielsweise kann die Ablaufverfolgung für eine Webanforderung drei Bereiche enthalten:

  • Annahme der Anfrage
  • Abfragen der Datenbank
  • Senden einer Antwort

Eine Ablaufverfolgung zerlegt einen Datenfluss, der mehrere Dienste umfassen kann, in eine Reihe chronologisch geordneter Abschnitte, um Ihnen das Verständnis zu erleichtern:

  • Alle Schritte, die in jedem Abschnitt passiert sind
  • Die Reihenfolge, in der die Chunks ausgeführt wurden
  • Wie lange jeder Schritt dauerte
  • Metadaten zu jedem Schritt

Sobald OTel Traces generiert hat, besteht der nächste Schritt darin, diese zur Analyse in ein Tracing-Backend oder -Tool zu exportieren. OTel bietet eine Reihe von Exportern für beliebte Backends wie Jaeger , Zipkin und AWS X-Ray . Diese Dienste bieten Tools zum Analysieren und Visualisieren von Trace-Daten.

Metriken

In OTel sind Metriken Messungen bestimmter Aspekte des Verhaltens eines Betriebssystems und werden im Laufe der Zeit als Schlüssel-Wert-Paare (sogenannte Metrikbezeichnungen ) gesammelt. Die Schlüssel-Wert-Paare liefern Kontext zur Messung im Zeitverlauf. Eine Metrik für die Antwortzeit eines Webdienstes könnte beispielsweise Bezeichnungen für den HTTP-Statuscode, den Endpunkt und die HTTP-Methode enthalten. Alle Messwerte sind außerdem mit einem Zeitstempel versehen, um wiederum eine chronologische Sortierung zu ermöglichen.

Protokolle

Protokolle sind die älteste und gebräuchlichste Methode, um Einblick in die Vorgänge bei einem bestimmten Dienst zu erhalten. Sie werden im Allgemeinen als Text erstellt und müssen analysiert werden, um Erkenntnisse zu gewinnen. Die Unterstützung für Protokolle in OTel ist noch experimentell.

Weitere Informationen zu den Erkenntnissen unserer Lösungsarchitekten beim Vergleich der Observability-Funktionssätze in OTel mit anderen Observability-Tools finden Sie in unserem Blog unter „Integration von OpenTelemetry in die Modern Apps Reference Architecture – Ein Fortschrittsbericht“ .

OTel-Instrumentierung

OTel lässt sich in viele gängige Programmiersprachen , Bibliotheken und Frameworks integrieren. Die Unterstützung ist in einigen Sprachen umfassender als in anderen. Beispielsweise verfügen die JavaScript-Instrumentierungsbibliotheken über selbsterklärte „stabile“ Implementierungen sowohl für die Ablaufverfolgung als auch für Metriken und bieten eine der stabilsten Unterstützungen für Protokolle. Sie bieten außerdem eine automatische Instrumentierungsoption, mit der Sie mit dem Empfangen von Traces beginnen können, ohne Ihrer Servicelogik instrumentierungsspezifischen Code hinzuzufügen. Andererseits verfügen Sprachen wie Go über eine weniger ausgereifte Unterstützung für Metriken und Protokolle und es fehlen ihnen Funktionen zur automatischen Instrumentierung.

Telemetrieziele

Beim Einrichten der Telemetrieinstrumentierung ist es am besten, mit einer Reihe klarer definierterer Ziele für die Instrumentierung zu beginnen als „alles senden und auf Erkenntnisse hoffen“. Zwar können Sie das volle Ausmaß der Möglichkeiten erst erkennen, wenn Sie sich die Daten ansehen. Durch das Festlegen einiger Mindestanforderungen können Sie jedoch den reibungslosen Betrieb und die Wartung Ihrer Dienste sicherstellen.

Dies können technische Probleme sein wie:

  • Ich möchte wissen, wann mein Dienst unter Druck steht und skaliert werden muss.
  • Ich möchte wissen, ob mein Dienst häufig neu gestartet wird.

Es können aber auch Probleme im Zusammenhang mit dem Produkt und der Benutzererfahrung sein, wie beispielsweise:

  • Ich möchte, dass Benutzer neue Nachrichten im System innerhalb von fünf Sekunden sehen.
  • Ich möchte, dass Benachrichtigungen innerhalb einer Minute nach dem Senden einer Nachricht versendet werden.

Als Beispiel aus unserem Tutorial „ So verwenden Sie OpenTelemetry Tracing zum Verstehen Ihrer Microservices “ könnten Sie die folgenden Hauptziele definieren:

  • Verstehen Sie alle Schritte, die eine Anfrage durchläuft, um den neuen Nachrichtenfluss zu erreichen.
  • Überprüfen Sie, ob der Benutzerfluss erfolgreich abgeschlossen wurde.
  • Sie können darauf vertrauen, dass die Ausführung des Benutzerflusses von Ende zu Ende (unter „normalen“ Umständen) schneller als fünf Sekunden dauert.
  • Erfahren Sie, ob der Benachrichtigungsdienst das Ereignis (das vom Nachrichtendienst versendet wird) rechtzeitig verarbeitet. 
OTel-Implementierung

OTel bietet Entwicklern einen einzigen Satz von Anwendungsprogrammierschnittstellen (APIs), Software Development Kits (SDKs) und Instrumentierungsbibliotheken, mit denen sie ihre Anwendungen auf konsistente und standardisierte Weise instrumentieren können.

Da das Format der von OTel erzeugten Daten als Industriestandard gilt, wird es von mehreren Lösungen zur Telemetrieaggregation und -visualisierung akzeptiert. Sie können eine lokale Lösung wie Jaeger wählen (wie wir es in diesem Tutorial getan haben) oder sich für eine Software-as-a-Service (SaaS)-Lösung wie SumoLogic oder SigNoz entscheiden.

Um alle drei Telemetrietypen zu verwalten, ist die einzige Alternative zu OTel eine Kombination mehrerer Tools. Dies führt zu einer noch größeren Komplexität zusätzlich zu der Komplexität, die mit dem Betrieb einer Microservices-Architektur und -Infrastruktur verbunden ist.

Was ist eine API im Kontext von OTel?

APIs definieren die Methoden, Funktionen und Protokolle, die von Softwarekomponenten zur Interaktion untereinander verwendet werden. Die OTel-APIs definieren einen Standardsatz an Methoden und Protokollen, die Entwickler zum Instrumentieren ihrer Anwendungen und zum Sammeln von Telemetriedaten verwenden können.

Was ist ein SDK im Kontext von OTel?

SDKs sind Softwareentwicklungstools, die vom Autor eines Standards oder einer Anwendung bereitgestellt werden und es Entwicklern erleichtern, Anwendungen zu erstellen, die dem Standard entsprechen oder mit der App interagieren. SDKs enthalten normalerweise Bibliotheken, Codebeispiele, Dokumentation und Tools zum Testen, Debuggen und zur Leistungsoptimierung. OTel bietet SDKs für Tracing , Metriken und Ressourcenmanagement .