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:
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:
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:
Eine Anforderung unterteilt einen Datenfluss, der mehrere Dienste umfassen kann, in eine Reihe chronologisch geordneter Bereiche, um das Verständnis zu erleichtern:
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 Jaeger, Zipkin und AWS X‑Ray. Diese Dienste bieten Tools zur Analyse und Visualisierung von Ablaufverfolgungsdaten.
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 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 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.
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:
Es kann sich aber auch um produkt- und benutzerbezogene Anliegen handeln:
Als Beispiel aus unserem Tutorial Verwendung der OpenTelemetry-Ablaufverfolgung zum Verständnis Ihrer Microservices könnten Sie die folgenden Ziele als Schlüsselziele definieren:
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.
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.
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 Ablaufverfolgung, Metriken und Ressourcenverwaltung.
NGINX ist stolz darauf, diese zusätzlichen Ressourcen präsentieren zu können, damit Sie mehr über OTel erfahren können: