Bei Cloudanwendungen spielt die Möglichkeit zur Fernauslesung eine zentrale Rolle, um die Performance sicherzustellen. Anhand von Telemetrie-Daten wie Logs, Metriken und Traces lassen sich Fehler analysieren und die Anwendung überwachen, sei es die Speicherkapazität oder die CPU-Auslastung. Um diese Daten zu verarbeiten, werden oft proprietäre Werkzeuge genutzt. Ein Wechsel gestaltet sich dann schwer und kompliziert. Auch die Unterstützung von Systemen verschiedener Hersteller für verschiedene Umgebungen (lokale Tests vs. Produktion) erfordert viel Aufwand. All dies wäre viel einfacher, wenn es einen Service übergreifenden Standard für die Erfassung und Verwertung von Telemetrie-Daten gäbe. Die Antwort lautet: OpenTelemetry!
Fernmessung leicht gemacht mit OpenTelemetry (© Erick Dachselt – pixabay)
Telemetrie-Daten verraten uns aus der Ferne, wie es um die Performance und den Zustand von Anwendungen steht. Dabei gibt es verschiedene Arten von Daten, die unterschiedliche Informationen liefern:
Gerade bei komplexen, dezentralen Servicelandschaften ist die Fernmessung elementar, um Probleme schnell zu identifizieren. Allerdings gestaltet sich die Observability dabei auch besonders schwer, denn es sind verschiedene Frameworks, Bibliotheken und Programmiersprachen im Spiel. Für eine reibungslose Kommunikation ist es jedoch essenziell, die gleiche Sprache zu sprechen. Hier kommt OpenTelemetry ins Spiel. Der Open-Source-Standard für Telemetrie-Daten beinhaltet alles, was es zur Erfassung und Verwertung von Daten aus Cloud-native Anwendungen braucht. Die wichtigsten Funktionen sind folgende:
Die Anwendung und die Infrastruktur, auf der die Anwendung läuft, erzeugen Telemetrie-Daten. Diese Daten können über das OTLP-Protokoll an den Collector gesendet werden. Für Java-Anwendungen erzeugt die Autoinstrumentation die Telemetrie-Daten. Dafür muss nur eine zusätzliche Jar-Datei beim Start eingebunden werden. Anschließend erkennt diese bekannte Bibliotheken und Frameworks (wie z.B. Log4j oder Spring Boot) automatisch. Für die CPU-Auslastung und den Netzwerkverkehr wird beispielsweise eine entsprechende Metrik erstellt. Wird das Framework nicht unterstützt, so können die Telemtrie-Daten mithilfe des OTel SDK manuell erzeugt und versendet werden.
Zusammenspiel der OTel-Komponenten in der Praxis (© eXXcellent solutions)
Zusätzlich unterstützt der Collector viele bekannte Systeme und kann Daten von diesen selbständig abholen. Unterstützt werden z.B. Prometheus-Endpunkte, MySQL und Postgres-Datenbanken, nginx und Apache Web Server oder die Kubernetes-API.
Über welche Wege Daten in den Collector fließen können, wird über eine Datei konfiguriert. Der Collector kann die Daten bearbeiten und z.B. Logs nach Log-Level filtern oder Labels mit Metadaten anhängen. Der Export an Dritt-Systeme, wie z.B. Prometheus oder Jaeger, wird ebenfalls in der Datei konfiguriert. Auch hier unterstützt der Collector viele verschiedene Systeme. Telemetrie-Daten werden automatisch in das Format des Zielsystems konvertiert.
Das OpenTelemetry-Projekt beschäftigt sich hauptsächlich mit dem Erzeugen und Verarbeiten von Telemetrie-Daten. Für die Speicherung und Aufbereitung bzw. Visualisierung werden Systeme von Drittanbietern benötigt. Für Metriken ist Prometheus die bekannteste Datenbank zum Speichern. Daneben gibt es noch Jaeger und Grafana Tempo für Traces, Grafana Loki für Logs oder auch Anbieter wie DataDog und SigNoz. Cloud-Anbieter wie Google Cloud oder AWS bieten hier ihre eigenen Lösungen an. Die Unterstützung verschiedener Systeme ist mit dem OpenTelemetry Collector keine Herausforderung mehr. Es sind lediglich verschiedene Konfigurationen notwendig, die meist mit geringem Aufwand geschrieben sind. Gespeicherte Daten können dann bspw. in Grafana Dashboards visualisiert werden.
OpenTelemetry standardisiert nicht nur die Erfassung von Telemetrie-Daten, sondern passt sich auch an unterschiedliche Bedingungen und Systeme an. Bei der Entwicklung unserer Softwarelösungen, steht für uns immer die Passgenauigkeit im Vordergrund. OpenTelemetry bietet hier viele Vorteile, die über eine passgenaue Entwicklung hinaus, auch eine passgenaue Observability ermöglichen:
Dank dieser Vorteile ist OpenTelemetry der Türöffner für eine Fernmessung ohne Hemmschwellen und erlaubt es uns, die Performance unserer Lösungen noch besser zu gewährleisten und an die Bedürfnisse unserer Kunden anzupassen.
Haben Sie Fragen zu diesem Thema? Unser Gildenmeister Cloud-native freut sich über Ihre Kontaktaufnahme! Oder informieren Sie sich auf unserer Website über unsere Kompetenzen im Bereich Cloud: |
|
Christoph Löser ist Software Architect bei der eXXcellent solutions in Ulm und koordiniert als Gildenmeister die internen Aktivitäten rund um Architektur, Entwicklung und Betrieb von Cloud-native basierten Lösungen. Er begeistert sich außerdem für innovative Software-Architekturen, freie Software und Systemsicherheit.
|