Einführung in OpenTelemetry für Anfänger

Lassen Sie uns über OpenTelemetry sprechen – eine anbieterneutrale Standardmethode zum Sammeln von Telemetriedaten.

Eine Anwendung besser beobachten zu können, ist eine große Herausforderung für jeden Entwickler, da er Telemetriedaten der Anwendung erfassen muss. Das Cambridge-Wörterbuch definiert Telemetrie als die Wissenschaft oder den Prozess des Sammelns von Informationen über weit entfernte Objekte und des elektronischen Sendens der Informationen.

Beispielsweise erzeugt ein einzelner Klick oder eine Sitzung eines Benutzers auf einer Website viele Anfragen und Ablaufverfolgungen, die zwischen Netzwerken, Microservices, Datenbanken usw. fließen.

OpenTelemetry ist eine Observability-Plattform, eine Reihe gut durchdachter Komponenten, die zusammen oder à la carte verwendet werden können. Darüber hinaus verfügen Entwickler von Frameworks und Bibliotheken, die wir alle heute verwenden, jetzt über eine Standardmethode, um Telemetriedaten in diese Bibliotheken und Frameworks einzubacken, wodurch die Endbenutzer viele sofort einsatzbereite Einblicke in das erhalten, was diese Frameworks unter der Haube tun .

Um OpenTelemetry zu verstehen, müssen Sie zunächst wissen, was verteilte Ablaufverfolgung ist.

Was ist verteilte Ablaufverfolgung?

Da unsere Anwendungen immer komplexer werden und immer mehr Dienste an der Bedienung des Benutzerdatenverkehrs und dem Abschluss von Transaktionen beteiligt sind, wird es immer wichtiger zu verstehen, wie Anfragen unsere Dienste durchlaufen und wie jeder Dienst zur Gesamtlatenz beiträgt. Dies ist die Aufgabe der verteilten Ablaufverfolgung. Es erfasst die Latenz von Benutzeranfragen und wie lange es dauert, bis jeder Microservice im Pfad eine Antwort zurückgibt.

Wenn eine Benutzeranfrage eingeht, möchten wir eine Ablaufverfolgung erstellen, dh die Gesamtheit der Informationen, die beschreiben, wie unser System auf eine Benutzeranfrage reagiert. Traces bestehen aus Spans, und jeder Span steht für ein bestimmtes Anforderungs- und Antwortpaar, das an der Bearbeitung einer Benutzeranforderung beteiligt ist. Die übergeordnete Spanne beschreibt die vom Endbenutzer beobachtete Latenz. Und die untergeordnete Spanne wird verwendet, um zu verstehen, wie ein bestimmter Dienst im verteilten System aufgerufen und mit seinen Latenzinformationen geantwortet wurde.

Was ist OpenTelemetry?

OpenTelemetry ist ein Open-Source-Projekt, das von der CNCF gehostet wird und eine Standardmethode zum Generieren von Telemetriedaten bietet. Es entstand durch die Fusion von OpenTracingein Standard zum Generieren von Ablaufverfolgungsdaten, und OpenCensusein Standard zum Generieren von Metrikdaten.

  Erstellen Sie mit diesen Vorlagen in wenigen Minuten einen Vorfallbericht

OpenTelemetry bietet einen einzigen Satz von APIs, Agenten, Kollektordiensten und Bibliotheken, um verteilte Ablaufverfolgungen und Metriken aus Ihrer Anwendung zu erfassen. OpenTelemetry standardisiert, wie wir Telemetriedaten sammeln und an ein Back-End Ihrer Wahl senden. Dies bietet Ihnen einen herstellerneutralen Weg zur Instrumentierung und gibt Ihnen die Flexibilität, Ihr Back-End zu ändern, ohne Ihren Code erneut zu instrumentieren.

So können Sie Ihre Anwendungen mit einem herstellerunabhängigen Agenten instrumentieren und gleichzeitig Ihre Metriken und Traces an einen SaaS-Anbieter wie Datadog senden. Wenn Sie dann den Anbieter wechseln möchten (z. B. von Datadog zu Dynatrace), können Sie dies tun, ohne Ihren Anwendungscode zu ändern.

Das OpenTelemetry-Projekt zielt darauf ab, einen einzigen Satz von API-Bibliotheken und Agenten bereitzustellen, um Metriken und verteilte Ablaufverfolgungen aus Ihren Anwendungen zu erfassen. Dies gilt für viele Sprachen und Plattformen. Das OpenTelemetry-Projekt umfasst auch einen optionalen Collector-Dienst und verfügt über ein dediziertes Repository für Spezifikationen. Um es klar zu sagen, OpenTelemetry ist nicht Jaeger oder Prometheus, die beobachtbare Back-Ends sind. Aber es hilft beim Exportieren von Daten in Open-Source- und kommerzielle Back-Ends.

Nachfolgend sind die Funktionen aufgeführt, die OpenTelemetry bietet:

  • Standardisierung beim Sammeln von Telemetriedaten, denen Unternehmen folgen können, was den Wechsel zwischen Anbietern erleichtert
  • Eine anbieterunabhängige semantische Konvention mit offenem Standard für den Prozess der Datenerfassung
  • Collector, der als Agent oder Gateway oder auf viele verschiedene Arten bereitgestellt werden kann
  • Unterstützt mehrere Kontextweitergabeformate für die Migration
  • Eine End-to-End-Lösung zum Generieren, Ausgeben, Sammeln, Verarbeiten und Exportieren von Telemetriedaten
  • Möglichkeit, Daten mit vollständiger Kontrolle parallel an verschiedene Ziele zu senden

OpenTelemetry-Komponenten

Nachfolgend sind die Kernkomponenten von OpenTelemetry aufgeführt:

  • Proto: Diese Komponente wird verwendet, um für Kollektoren, Instrumentierungsbibliotheken usw. sprachunabhängige Schnittstellentypen für OpenTelemetry zu definieren.
  • Collector: Collectors werden zum Empfangen, Verarbeiten und Exportieren von Telemetriedaten verwendet. Diese Implementierung von Kollektoren muss anbieterunabhängig sein. Standardmäßig werden alle Telemetriedaten von Instrumentierungsbibliotheken an diesem Speicherort exportiert.
  • Spezifikation: Diese Komponente beschreibt die Anforderungen und Erwartungen an die Implementierung in verschiedenen Sprachen, bestehend aus APIs, SDKs und Daten. Die API generiert die Telemetriedaten, Verarbeitungs- und Exportfunktionen zum Implementieren der von SDKs bereitgestellten APIs. Daten haben die semantischen Konventionen, um alle Arten von Anbietern zu unterstützen, ohne Code zu ändern.
  • Instrumentierungsbibliotheken: Diese sind als Teil des OpenTelemetry-Projekts in mehreren Sprachen verfügbar. Diese Bibliotheken werden verwendet, um Beobachtbarkeit für andere Bibliotheken bereitzustellen, damit alle Anwendungen durch Aufrufe der OpenTelemetry-API beobachtet werden können.
  Sanity Returns: Wie die neuen Logos von USB4 das Einkaufen vereinfachen werden

OpenTelemetry-Architektur

Bild von New Relic

Auf hoher Ebene besteht OpenTelemetry aus drei Hauptteilen:

  • Eine Reihe von APIs zum Instrumentieren von Anwendungen, Bibliotheken und Frameworks.
  • Das SDK implementiert APIs.
  • Ein optionaler Kollektor kann Telemetriedaten erfassen, aggregieren und exportieren, wo immer Sie sie benötigen.

Der Zweck der API besteht darin, die Erstellung von Instrumenten für Bibliotheken und den Anwendungscode zu ermöglichen. Die API besteht aus vier Hauptabschnitten: Ablaufverfolgung, Zähler, gemeinsam genutzter Kontext und semantische Konventionen.

  • Die Tracer-API unterstützt das Erstellen, Kommentieren und Vervollständigen von Spans.
  • Die Zähler-API besteht aus mehreren metrischen Instrumenten. Beispiele für diese Instrumente sind Beobachter, Wertaufnehmer, Zähler.
  • Sie können Span-Kontext nachverfolgen und ausführen, indem Sie die Kontext-API aktivieren und diesen Kontext sowohl innerhalb als auch außerhalb Ihres Systems weitergeben.
  • Alle Richtlinien und Regeln für die hauptsächliche Benennung, wie die Benennung der Spans, Attribute, Labels und metrischen Instrumente, sind in den semantischen Konventionen enthalten. Diese Konventionen werden implementiert, um die Konsistenz über verschiedene Sprachimplementierungen und für externe Instrumentierungen sicherzustellen.

In einem gemeinsam genutzten Kontext liegt die Kontextimplementierung zwischen dem Tracer und dem Messgerät und ermöglicht, dass alle Nicht-Beobachter-Metrikaufzeichnungen im Kontext einer ausführenden Spanne erfolgen. Eine Funktion, die es SDKs ermöglicht, beispielhafte Spannen für Metrikwerte zu erfassen. Sie können den Kontext mit Propagatoren anpassen, die die Weitergabe des Span-Kontexts in das und aus dem System ermöglichen, was eine echte verteilte Ablaufverfolgung ermöglicht.

Der Collector ist ein wesentlicher Bestandteil der OpenTelemetry-Architektur. Es ist ein eigenständiger Dienst, der Telemetriedaten aus verschiedenen Quellen empfangen, verarbeiten und exportieren kann, darunter OpenCensus, Zipkin, Jaeger und das OpenTelemetry-Protokoll. Mithilfe von Kollektoren können Sie Spans und Metriken an mehrere Anbieter und Open-Source-Telemetriesysteme exportieren.

Die OpenTelemetry-Architektur bietet eine vollständige Telemetrielösung „out of the box“. Sie können auch Anpassungen vornehmen, indem Sie je nach Bedarf mehrere Erweiterungspunkte verwenden.

  So ändern Sie Ihren Standort in Pokémon Go

Wie funktioniert OpenTelemetry?

Installieren Sie in jedem Dienst in Ihrer Bereitstellung den OpenTelemetry-Client. Der Client ist das SDK; das SDK wiederum hat eine API. Ihre Anwendungsframeworks und -bibliotheken verwenden diese Instrumentierungs-API, um ihre Arbeit zu beschreiben. Das SDK exportiert dann die gesammelten Beobachtungen an einen Datenpipelinedienst namens Collector.

OpenTelemetry hat sein eigenes Datenprotokoll, OTLP, aber der Kollektor kann OTLP in verschiedene Formate übersetzen, einschließlich Zipkin, Jägerund Prometheus. Insbesondere stellt OpenTelemetry kein eigenes Backend oder Analysetool zur Verfügung; Dies liegt daran, dass es sich um eine Standardisierungsbemühung im Herzen von OpenTelemetry handelt. Ziel ist es, eine universelle Sprache zur Beschreibung des Betriebs von Computern in einer Cloud-Umgebung zu entwickeln. Das Ziel ist nicht, zu standardisieren, wie wir diese Daten analysieren. Stattdessen hoffen wir, dass OpenTelemetry dazu beitragen wird, die Welt der Observability voranzutreiben, indem neue Analysetools schnell gestartet werden können, ohne dieses gesamte Ökosystem von Telemetriesoftware neu aufbauen zu müssen.

Wenn Sie viele Daten über das System senden, gibt es viel zu beachten. Glücklicherweise hat OpenTelemetry an all die Dinge gedacht und Lösungen für jede dieser Fragen parat. Zuallererst ist OpenTelemetry flexibel und verarbeitet mehrere Kontextweitergabeformate. Das heißt, obwohl es einen Standard gibt, gibt es immer noch die Wahlmöglichkeit innerhalb dieses Standards. Wenn Sie also so etwas wie das w3c-Trace-Context-Format oder die b3-Propagation verwenden, sind dies verschiedene Standards innerhalb des Standards, die es Ihren Diensten ermöglichen, die Punkte zu verbinden.

Fazit

OpenTelemetry sammelt eine Vielzahl von Beobachtungen, wobei verteilte Ablaufverfolgungsmetriken und Systemressourcen die wichtigsten sind. Anstatt diese als separate Signale zu behandeln, verflochten OpenTelemetry sie miteinander und bieten Indizierung und Kontext, mit denen Sie alle diese Signale am Backend aggregieren und querindizieren können.

Zusätzlich zur Datenerfassung bietet OpenTelemetry eine Datenverarbeitungs- und Pipeline-Funktion, mit der Sie Datenformate ändern, Ihre Daten bearbeiten können, sowie alle Tools, die Sie zum Aufbau einer robusten Telemetrie-Pipeline in einem modernen System benötigen.

Das war also alles über OpenTelemetry, probieren Sie dieses Tool aus.

x