OpenTelemetry (OTel) ist ein Open-Source-Projekt, das einen anbieterneutralen Standard für die Erfassung, Verarbeitung und den Export von Telemetriedaten aus verteilten Systemen (wie etwa einer Microservices-Architektur) bereitstellt. Dieser vereinfachte und universelle Ansatz für Observability erleichtert es Entwicklern, die Leistung und das Verhalten von Software zu analysieren, sodass sie Probleme in ihren Anwendungen leichter diagnostizieren und beheben können. OTel erfasst die folgenden Daten:

  • Traces – „Wo liegt das Problem?“
  • Metriken – „Gibt es ein Problem?“
  • Protokolle – „Was ist das Problem?“

OTel ist weder eine Programmiersprache noch ein Produkt. Dieses Open-Source-Projekt gibt es seit 2019 und wird derzeit von der Cloud Native Computing Foundation (CNCF) betreut.

In diesem Video erfahren Sie, wie Sie loslegen können:

Von OTel generierte Datentypen

Traces

Ein Trace zeichnet die Ereignisse auf, die während eines Vorgangs auftreten, beispielsweise bei der Verarbeitung einer einzelnen Anfrage. Der Trace ist in eine Reihe von Spans unterteilt, die jeweils eine Arbeitseinheit darstellen.

Beispielsweise könnte der Trace für eine Webanfrage drei Spans umfassen:

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

Ein Trace unterteilt einen Datenfluss, der mehrere Dienste umfassen kann, in eine Reihe chronologisch geordneter Abschnitte, damit Sie Folgendes leichter nachvollziehen können:

  • Alle Schritte, die in jedem Abschnitt ausgeführt wurden
  • 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, sie 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 stellen Tools zur Analyse und Visualisierung von Trace-Daten bereit.

Metriken

In OTel sind Metriken Messwerte für bestimmte Aspekte des Verhaltens eines Betriebssystems. Sie werden im Zeitverlauf als Schlüssel-Wert-Paare (sogenannte Metrik-Labels) erfasst. Die Schlüssel-Wert-Paare liefern Kontext zu den Messwerten im Zeitverlauf. Eine Metrik für die Antwortzeit eines Webdienstes kann beispielsweise Labels für den HTTP-Statuscode, den Endpunkt und die HTTP-Methode enthalten. Alle Metriken sind außerdem mit einem Zeitstempel versehen, um eine chronologische Sortierung zu ermöglichen.

Protokolle

Logs sind die älteste und am weitesten verbreitete Methode, um Einblicke in die Vorgänge eines bestimmten Dienstes zu erhalten. Sie werden in der Regel als Text ausgegeben und müssen analysiert werden, um Erkenntnisse zu gewinnen. Die Unterstützung für Logs in OTel ist noch experimentell.

Weitere Informationen zu den Erkenntnissen unserer Lösungsarchitekten aus dem Vergleich der Observability-Funktionen von OTel mit anderen Observability-Tools finden Sie in unserem Blogbeitrag „Integration von OpenTelemetry in die Referenzarchitektur für moderne Anwendungen – ein Zwischenbericht“.

OTel-Instrumentierung

OTel lässt sich in viele gängige Programmiersprachen, Bibliotheken und Frameworks integrieren. Die Unterstützung ist bei einigen Sprachen umfassender als bei anderen. Beispielsweise verfügen die JavaScript-Instrumentierungsbibliotheken nach eigener Aussage über „stabile“ Implementierungen sowohl für Tracing als auch für Metriken und bieten eine der ausgereiftesten Unterstützungen für Protokolle. Außerdem stellen sie eine Option zur automatischen Instrumentierung bereit, mit der Sie Traces empfangen können, ohne Ihrer Servicelogik instrumentierungsspezifischen Code hinzuzufügen. Sprachen wie Go hingegen bieten eine weniger ausgereifte Unterstützung für Metriken und Protokolle und verfügen nicht über Funktionen zur automatischen Instrumentierung.

Telemetrieziele

Beim Einrichten der Telemetrieinstrumentierung empfiehlt es sich, zunächst konkretere Ziele festzulegen, als einfach „alles zu senden und auf Erkenntnisse zu hoffen“. Zwar lässt sich erst nach der Auswertung der Daten vollständig erkennen, welche Möglichkeiten sich bieten, doch einige Mindestanforderungen tragen dazu bei, den reibungslosen Betrieb und die Wartung Ihrer Dienste sicherzustellen.

Dabei kann es sich um technische Aspekte handeln, wie zum Beispiel:

  • Ich möchte wissen, wann mein Dienst stark ausgelastet ist und skaliert werden muss.
  • Ich möchte wissen, ob mein Dienst häufig neu gestartet wird.

Es kann sich aber auch um produkt- und nutzererfahrungsbezogene Anliegen handeln, wie zum Beispiel:

  • 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 verschickt werden.

Als Beispiel aus unserem Tutorial So nutzen Sie OpenTelemetry-Tracing, um Ihre Microservices besser zu verstehen, könnten Sie die folgenden Hauptziele definieren:

  • Alle Schritte nachvollziehen, die eine Anfrage durchläuft, um den neuen Nachrichtenfluss abzuschließen.
  • Überprüfen Sie, ob der Benutzerablauf erfolgreich abgeschlossen wurde.
  • Vergewissern Sie sich, dass der Benutzerablauf unter „normalen“ Umständen von Anfang bis Ende in weniger als fünf Sekunden ausgeführt wird.
  • Ermitteln Sie, ob der Benachrichtigungsdienst das vom Nachrichtendienst ausgelöste Ereignis zeitnah verarbeitet.

OTel-Implementierung

OTel stellt Entwicklern einen einheitlichen Satz von Programmierschnittstellen (APIs), Software Development Kits (SDKs) und Instrumentierungsbibliotheken zur Verfügung, mit denen sie ihre Anwendungen konsistent und standardisiert instrumentieren können.

Da das Format der von OTel erzeugten Daten als Industriestandard gilt, wird es von zahlreichen Lösungen zur Aggregation und Visualisierung von Telemetriedaten unterstützt. Sie können sich für eine On-Premises-Lösung wie Jaeger (wie in diesem Tutorial) oder für eine Software-as-a-Service-Lösung (SaaS) wie SumoLogic oder SigNoz entscheiden.

Um alle drei Arten von Telemetriedaten zu verwalten, bleibt als einzige Alternative zu OTel nur eine Kombination mehrerer Tools. Dies erhöht zusätzlich die ohnehin schon vorhandene Komplexität, die mit dem Betrieb einer Microservices-Architektur und der zugehörigen Infrastruktur verbunden ist.

Was ist eine API im Kontext von OTel?

APIs definieren die Methoden, Funktionen und Protokolle, über die Softwarekomponenten miteinander interagieren. Die OTel-APIs definieren einen Standardsatz von Methoden und Protokollen, mit denen Entwickler ihre Anwendungen instrumentieren und Telemetriedaten erfassen können.

Was ist ein SDK im Kontext von OTel?

SDKs sind Softwareentwicklungswerkzeuge, die vom Urheber eines Standards oder einer Anwendung bereitgestellt werden und Entwicklern das Erstellen von Anwendungen erleichtern, die dem Standard entsprechen oder mit der Anwendung interagieren. SDKs umfassen in der Regel Bibliotheken, Codebeispiele, Dokumentation sowie Werkzeuge für Tests, Debugging und Leistungsoptimierung. OTel stellt SDKs für Tracing, Metriken und Ressourcenverwaltung bereit.