Was ist OpenTelemetry?

OpenTelemetry (OTel) ist ein Open-Source-Projekt, das einen anbieterneutralen Standard für das Erheben, 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 sammelt die folgenden Daten:

  • Ablaufverfolgungen – „Wo liegt das Problem?“
  • Metriken – „Gibt es ein Problem?“
  • Protokolle – „Wo liegt das Problem?“

OTel ist keine Programmiersprache und kein Produkt, sondern ein Open-Source-Projekt, das seit 2019 existiert und derzeit von der Cloud Native Computing Foundation (CNCF) gepflegt wird.

Sehen Sie sich dieses Video an, um zu erfahren, wie Sie anfangen können:

Von OTel generierte Datenarten

Ablaufverfolgungen

Eine Ablaufverfolgung zeichnet die Ereignisse auf, die während einer Operation, z. B. der Bearbeitung einer einzelnen Anforderung, auftreten. Die Ablaufverfolgung ist in eine Reihe von Bereichen unterteilt, die jeweils eine Arbeitseinheit darstellen.

Zum Beispiel könnte die Ablaufverfolgung für eine Web-Anforderung drei Bereiche umfassen:

  • Annahme der Anforderung
  • Abfrage der Datenbank
  • Senden einer Antwort

Eine Anforderung unterteilt einen Datenfluss, der mehrere Dienste umfassen kann, in eine Reihe chronologisch geordneter Bereiche, um das Verständnis zu erleichtern:

  • Alle Schritte, die in den einzelnen Blöcken stattfanden
  • Die Reihenfolge, in der die Blöcke ausgeführt werden
  • Wie lange jeder Schritt dauerte
  • Metadaten zu jedem Schritt

Sobald OTel Ablaufverfolgungen generiert hat, ist der nächste Schritt der Export in ein Ablaufverfolgungs-Backend oder ein Analyse-Tool. OTel bietet eine Reihe von Exportern für gängige Backends wie JaegerZipkin und AWS X‑Ray. Diese Dienste bieten Tools zur Analyse und Visualisierung von Ablaufverfolgungsdaten.

Metriken

In OTel sind Metriken Messungen spezifischer Aspekte des Verhaltens eines Betriebssystems und werden im Laufe der Zeit als Schlüssel-Wert-Paare (so genannte Metrikbezeichnungen) gesammelt. Die Schlüssel-Wert-Paare liefern einen Kontext über die Messung im Laufe der Zeit. 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 Metriken werden auch mit einem Zeitstempel versehen, um eine chronologische Reihenfolge zu ermöglichen.

Protokolle

Protokolle sind die älteste und gebräuchlichste Methode, um Einblicke in die Vorgänge eines bestimmten Dienstes zu erhalten. Sie werden im Allgemeinen als Text erzeugt und müssen geparst werden, um Einblicke zu erhalten. Die Unterstützung für Protokolle in OTel ist noch experimentell.

Um mehr darüber zu erfahren, was unsere Lösungsarchitekten herausgefunden haben, als sie die Beobachtbarkeitsfunktionen von OTel mit denen anderer Beobachtbarkeits-Tools verglichen haben, lesen Sie bitte den Artikel Integration von OpenTelemetry in die Referenzarchitektur für moderne Anwendungen – ein Fortschrittsbericht in unserem Blog.

OTel-Instrumentierung

OTel lässt sich in viele gängige Programmiersprachen, Bibliotheken und Frameworks integrieren. Die Unterstützung in einigen Sprachen ist umfassender als in anderen. Die JavaScript-Instrumentierungsbibliotheken verfügen beispielsweise über selbst beschriebene „stabile“ Implementierungen für Ablaufverfolgung und Metriken sowie über eine der stabilsten Unterstützungen für Protokolle. Sie bieten außerdem eine Option zur automatischen Instrumentierung, mit der Sie Ablaufverfolgungen empfangen können, ohne Ihrer Dienstlogik instrumentierungsspezifischen Code hinzufügen zu müssen. Sprachen wie Go hingegen bieten eine weniger ausgereifte Unterstützung für Metriken und Protokolle und verfügen nicht über automatische Instrumentierungsfunktionen.

Telemetrie-Ziele

Bei der Einrichtung von Telemetrie-Instrumenten ist es am besten, mit einer Reihe von Zielen für die Instrumentierung zu beginnen, die besser definiert sind als „alles senden und auf Erkenntnisse hoffen“. Es stimmt zwar, dass man das volle Ausmaß der Möglichkeiten nicht kennen kann, bis man die Daten sieht, aber die Festlegung einiger Mindestanforderungen hilft, den reibungslosen Betrieb und die Wartung Ihrer Dienste zu gewährleisten.

Dabei kann es sich um technische Fragen handeln 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 kann sich aber auch um produkt- und benutzerbezogene Anliegen handeln:

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

Als Beispiel aus unserem Tutorial Verwendung der OpenTelemetry-Ablaufverfolgung zum Verständnis Ihrer Microservices könnten Sie die folgenden Ziele als Schlüsselziele definieren:

  • Verstehen Sie alle Schritte, die eine Anforderung durchläuft, um den neuen Nachrichtenablauf zu erreichen.
  • Überprüfen Sie, ob der Benutzerablauf erfolgreich abgeschlossen wurde.
  • Vertrauen Sie darauf, dass der Benutzerablauf von Ende zu Ende weniger als fünf Sekunden benötigt (unter „normalen“ Umständen).
  • Erfahren Sie, ob der Benachrichtigungsdienst das Ereignis (das vom Nachrichtendienst versendet wird) rechtzeitig verarbeitet.
OTel-Implementierung

OTel bietet Entwicklern einen einheitlichen Satz von Programmierschnittstellen (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 Telemetrie-Aggregations- und Visualisierungslösungen akzeptiert. Sie können sich für eine lokale Lösung wie Jaeger (wie in diesem Tutorial) oder für eine Software-as-a-Service (SaaS)-Lösung wie SumoLogic oder SigNoz entscheiden.

Um alle drei Arten von Telemetrie zu verwalten, besteht die einzige Alternative zu OTel in einer Kombination mehrerer Tools, was die Komplexität zusätzlich zu der inhärenten Komplexität erhöht, die mit dem Betrieb einer Microservices-Architektur und -Infrastruktur einhergeht.

Was ist eine API im Kontext von OTel?

APIs definieren die Methoden, Funktionen und Protokolle, die von Software-Komponenten zur Interaktion miteinander verwendet werden. Die OTel-APIs definieren einen Standardsatz von Methoden und Protokollen, die Entwickler zur Instrumentierung ihrer Anwendungen und zur Erfassung von Telemetriedaten verwenden können.

Was ist ein SDK im Kontext von OTel?

SDKs sind Software-Entwicklungstools, die vom Autor eines Standards oder einer Anwendung zur Verfügung gestellt werden und es Entwicklern erleichtern, Anwendungen zu erstellen, die dem Standard entsprechen oder mit der Anwendung interagieren. SDKs umfassen in der Regel Bibliotheken, Code-Beispiele, Dokumentation und Tools für Tests, Debugging und Leistungsoptimierung. OTel bietet SDKs für AblaufverfolgungMetriken und Ressourcenverwaltung.