Blog

Ein kurzer Blick auf OpenTelemetry, Beobachtbarkeit und Standardisierung

Bild des ITGix-Teams
ITGix-Team
Passionierte DevOps- und Cloud-Ingenieure
05.05.2023
Lesezeit: 6 Minuten.
Zuletzt aktualisiert am: 29.07.2024

Inhaltsübersicht

Was ist Beobachtbarkeit und warum ist sie wichtig?

Die Idee, Ihre Anwendung in eine Reihe kleiner, miteinander verbundener Dienste aufzuteilen, die als Microservices-Architektur hat es Ingenieuren ermöglicht, Software schneller zu entwickeln und freizugeben, als dies mit monolithischen Architekturen je möglich gewesen wäre. Das ist großartig, aber es geht nicht ohne gewisse Herausforderungen.

Die Verwaltung der Anwendungsleistung erwies sich als eine dieser Herausforderungen. In den komplexen, verteilten Umgebungen von heute ist es äußerst schwierig, ein vollständiges Bild von allen Diensten und der Kommunikation zwischen ihnen zu erhalten.

Genau an dieser Stelle kommt die Beobachtbarkeit ins Spiel.

Sie hilft uns, ein System von außen zu verstehen, ohne jedes einzelne Zahnrad zu kennen, das sich im Inneren dreht. All dies geschieht durch die Extraktion und Analyse von Telemetriedaten.

Aber was sind Telemetriedaten? 

In verteilten Systemen, Telemetriedaten können in drei Hauptkategorien unterteilt werden, die gemeinhin als die drei Säulen der Beobachtbarkeit bezeichnet werden:

  • Metriken - "Gibt es ein Problem?"

Metriken sind eine numerische Darstellung von Daten, die aus der Anwendung oder einer ihrer Komponenten im Laufe der Zeit extrahiert wurden. Sie können dann in Form von Diagrammen dargestellt werden, die einen ganzheitlichen Überblick über den Zustand und die Leistung des Systems oder einiger seiner Komponenten geben können.

  • Traces - "Wo ist das Problem?"

Traces stellen den Lebenszyklus einer Anfrage dar, die irgendwo im Code gestellt wurde. Obwohl Protokolle und Metriken für das Verständnis des Verhaltens und der Leistung des Systems angemessen sein können, liefern sie in der Regel keine hilfreichen Informationen für das Verständnis des gesamten Weges einer bestimmten Anfrage oder Aktion, während sie sich durch die verteilte Umgebung bewegt. 

Durch die Analyse eines Trace kann ein Entwickler Engpässe besser erkennen und Probleme schneller beheben oder Bereiche identifizieren, die optimiert und verbessert werden müssen.

  • Logs - "Was ist das Problem?"

Protokolle sind Textaufzeichnungen von Ereignissen, die während der Ausführung eines Codes innerhalb einer Anwendung stattgefunden haben. Sie liegen in Form von einfachem Text, strukturiert oder unstrukturiert vor. Ein Protokolleintrag kann dann vom Entwickler untersucht werden, um ihm bei der Fehlersuche in seinem Code zu helfen oder die Ausführung eines bestimmten Codeblocks zu bestätigen.

Telemetriedaten sind für jeden DevOps-Ingenieur von entscheidender Bedeutung, um diese komplexen, besseren Systeme und das Verhalten ihrer Anwendungen zu verstehen.

Worum geht es also bei OpenTelemetry?

Beobachtbarkeit beginnt mit der Instrumentierung der Anwendung. Das heißt, der gesamte Code muss Telemetriedaten ausgeben. OpenTelemetry erleichtert dies, indem es Mittel zur automatischen oder manuellen Instrumentierung Ihrer Anwendung in einem einheitlichen Rahmen bietet.

Vor OpenTelemetry gab es keine derart zentralisierte und flexible Lösung für die Beobachtung. Die Ingenieure waren auf bestimmte Anbieter und Backend-Plattformen angewiesen. Das Sammeln von Telemetriedaten aus mehreren Quellen in einem großen Unternehmen erfordert oft verschiedene Stacks und Back-Ends, die jeweils auf die Bedürfnisse der einzelnen Teams zugeschnitten sind.

Dies macht es jedoch sehr schwierig, einen einzigen Überblick über die Leistung des gesamten Systems zu erhalten. Mit OpenTelemetry können Sie das Format der gesammelten Daten aus jeder Quelle standardisieren und sie einfach an verschiedene oder sogar mehrere Back-End-Plattformen senden. Dies ermöglicht Ihnen einen ganzheitlichen Einblick in das gesamte System und löst auch das Problem der Herstellerabhängigkeit, da

OpenTelemetry ist herstellerunabhängig und Entwickler können die Back-End-Plattform jederzeit wechseln, ohne ihren Code erneut instrumentieren zu müssen. Die Fähigkeiten zur automatischen Instrumentierung werden dank der aktiven Gemeinschaft hinter dem Projekt ständig erweitert, und die Liste der sprachspezifischen Integrationen wird immer länger und reift, wobei die beliebtesten Frameworks bereits abgedeckt sind. Es kann automatisch relevante Telemetriedaten erfassen und darüber hinaus Kontextpropagation handhaben, um ausführungsspezifische Werte über API-Grenzen hinweg zu übertragen.

Obwohl es sich bei OpenTelemetry um ein relativ neues Open-Source-Projekt handelt, ist es nach Kubernetes bereits das zweitaktivste CNCF-Projekt und reift in einem sehr schnellen Tempo, das den Weg für eine breite Akzeptanz in der Branche ebnet.

Wie funktioniert OpenTelemetry?

OpenTelemetry stellt einen Rahmen zur Verfügung, der Telemetriedaten empfängt, verarbeitet und an ein beliebiges Back-End exportiert, das die erfassten Daten speichert und visualisiert. Bei der OpenTelemetry-Datenerfassung gibt es viele bewegliche Teile. Schauen wir uns die Hauptkomponenten an und wie sie zusammenarbeiten.

APIs und SDKs:

APIs werden von den Entwicklern verwendet, um ihren Code zu instrumentieren. Es gibt bereits APIs, die in den gängigsten Sprachen wie Python, Java, Go usw. verwendet werden können. Alle diese APIs nutzen den OpenTelmetry-Standard und funktionieren mit jeder OpenTelemetry-kompatiblen Backend-Plattform, ohne dass der Code neu instrumentiert werden muss. Die APIs sind dann in vier Teile unterteilt:

  • Tracer-API die die Erzeugung von Spans ermöglicht. Eine Spanne ist ein benannter und zeitlich festgelegter Vorgang, der ein zusammenhängendes Segment der Arbeit darstellt. Mehrere Spans, die zusammen gruppiert werden, bilden eine Spur.
  • Metrik-API die verschiedene metrische Instrumente wie Zähler und Beobachter bereitstellt.
  • Kontext-API die von den Entwicklern genutzt werden kann, um die Traces und Spans mit Kontext anzureichern und den Propagationsmechanismus zu aktivieren.
  • Baggage API ist ein Satz von benutzerdefinierten Schlüssel/Wert-Paaren, mit denen Telemetriedaten kommentiert und Informationen zu Metriken, Traces und Protokollen hinzugefügt werden können.

Die SDKs sind ebenfalls sprachspezifisch und unterstützen die gleichen Sprachen wie die APIs. Sie werden verwendet, um die Daten zu sammeln und sie an die prozessinternen (innerhalb der Anwendung) Verarbeitungs- und Exportphasen weiterzuleiten. Die Verarbeitungsphase befasst sich mit der Berechnung der gesammelten Telemetriedaten, die dann an den prozessinternen Exporteur gesendet werden. Der prozessinterne Exporter übersetzt dann die empfangenen Daten in ein benutzerdefiniertes Format, das an den OpenTelemetry Collector oder an eine der unterstützten Backend-Plattformen weitergeleitet werden kann.

Sammler

Der OpenTelemetry Collector ist ein optionaler Proxy, der Telemetriedaten empfängt, verarbeitet und exportiert. Während der prozessinterne Exporter die gesammelten Daten direkt zur Backend-Plattform transportieren kann, bietet der Collector dem Entwickler eine viel größere Flexibilität, z. B. die Möglichkeit, verschiedene Sampling-Strategien zu aktivieren, die andernfalls möglicherweise nicht unterstützt werden, oder die Daten gleichzeitig an mehrere Backends zu exportieren. Der Collector kann auch Dinge wie Wiederholungsversuche, Stapelverarbeitung, Verschlüsselung oder sogar das Filtern sensibler Daten verarbeiten.

Der Collector besteht aus drei Komponenten: Empfängern, Verarbeitern und Exporteuren..

  • Empfänger werden verwendet, um Telemetriedaten zu erhalten und sie in den Kollektor zu übertragen. Der Kollektor unterstützt verschiedene Empfänger, die viele der gängigen Formate wie Jaeger oder Prometheus abdecken. Er unterstützt auch das standardmäßige OpenTelemetry Protocol (OTLP), ein agnostisches Protokoll, das flexibel, zuverlässig und effizient sein soll.
  • Verarbeiter ermöglichen es uns, die gesammelten Daten durch Formatierung, Filterung oder anderweitige Anreicherung zu bearbeiten, bevor sie zur Exportphase transportiert werden. Die Prozessoren unterstützen auch die Stapelverarbeitung, um die Daten besser zu komprimieren und die Anzahl der für den späteren Export erforderlichen ausgehenden Verbindungen zu verringern.
  • Exporteure können Daten an eine oder mehrere Backend-Plattformen oder Ziele wie Konsolenausgabe oder Dumping von Daten in eine Datei übertragen. Die Hauptaufgabe eines Exporters besteht darin, die Daten in das entsprechende Format umzuwandeln und sie an die konfigurierten Endpunkte zu senden. Auf diese Weise können wir die Back-Ends jederzeit wechseln, ohne den Code neu instrumentieren zu müssen.

Der Collector ist zwar völlig optional und es ist möglich, ihn zu überspringen und die Telemetriedaten direkt an die Backend-Plattform der Wahl zu senden, aber letzteres wird für große Projekte nicht empfohlen. Der Collector kann getrennt von der Anwendung eingesetzt werden. Auf diese Weise kann er die Verantwortung für die Verwaltung der Telemetriedaten auslagern, wodurch das gesamte System viel effizienter wird, ganz zu schweigen von all den netten Möglichkeiten zur Datenmanipulation, die der Collector bietet.

Warum die Cloud für die Nutzung der Telemetrie von entscheidender Bedeutung ist

Derzeit werden aus Platzgründen nicht alle Telemetriedaten aufgezeichnet. Die Speicherung aller Daten wäre nicht machbar, und die meisten Systeme haben nur eine begrenzte Kapazität, um Telemetriedaten von einigen Wochen oder Tagen zu speichern. Um dieses Problem zu lösen, werden die Daten oft in Zeitreihen aufgeteilt, aber der Speicherplatzbedarf ist nach wie vor beträchtlich, so dass ältere Daten schließlich gelöscht werden müssen, um Platz für neue, relevantere Informationen zu schaffen.

Aus diesem Grund werden fortschrittliche Analysedienste in der Regel auf öffentlichen Cloud-Plattformen gehostet. Die immense Speicher- und Rechnerkapazitätin Verbindung mit maschinellem Lernen bilden die technologische Grundlage für die Erfassung, Speicherung und Verarbeitung großer Mengen von Telemetriedaten. Durch das Sammeln von Telemetriedaten von verschiedenen Punkten entlang des Datenpfads kann ein umfassender Datensatz gewonnen werden, der wertvolle Erkenntnisse für Unternehmen liefert. Mit diesen Erkenntnissen können Muster und Beziehungen zwischen scheinbar unterschiedlichen Datenpunkten aufgedeckt werden, was zu einer verbesserten Unternehmensleistung und Kundenzufriedenheit führt. Daher ist es wichtig, so viele Telemetriedaten wie möglich von verschiedenen Punkten entlang des Datenpfads zu übermitteln, damit das System nach Mustern und Beziehungen suchen kann, die zu verwertbaren Erkenntnissen führen.

Schlussfolgerung

Alles in allem ist OpenTelemetry eine großartige Möglichkeit, Ihre Observability-Lösung zu standardisieren und langfristig viel nachhaltiger, effizienter und flexibler zu gestalten. Die große Gemeinschaft macht erhebliche Fortschritte bei der Reifung des Projekts und es wird bereits von allen möglichen großen Organisationen übernommen.

Nachdem Sie nun eine Vorstellung davon haben, was OpenTelemetry ist, welche Vorteile es bietet und wie es funktioniert, können Sie beginnen, indem Sie die OpenTelemetry-Website oder ihre GitHub-Projekt Seite.

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Da die Verbreitung von IPv6 weiter zunimmt, benötigen Unternehmen, die Workloads auf AWS ausführen, zunehmend Netzwerkarchitekturen, die sowohl IPv4- als auch IPv6-Datenverkehr unterstützen. AWS bietet zwar native IPv6-Funktionen, doch die Integration...
Lesen
In AWS ist ein Client-VPN-Endpunkt ein verwalteter, serverloser Cloud-VPN-Dienst, der es Benutzern ermöglicht, sicher auf Ressourcen innerhalb einer AWS VPC (Virtual Private Cloud) zuzugreifen. Beim Erstellen dieses...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.