Instrumentierung und Beobachtbarkeit

Instrumentierung bezieht sich auf den spezifischen Code, der Daten zum Laufzeitverhalten der Anwendung generiert oder erfasst. Innerhalb Ihrer Anwendung kann eine Instrumentierung, wie sie beispielsweise von OpenTelemetry bereitgestellt wird, domainspezifische Informationen zur Sprachlaufzeit, zum Framework oder zur Anwendungslogik erfassen und diese Daten dann an ein Google Cloud-Projekt oder an ein anderes Ziel schicken. Diese Daten, auch unter Telemetrie bekannt, enthält Messdaten, Logs, undTraces

Messwerte auf Systemebene wie CPU-, Arbeitsspeicher- und Laufwerknutzung sind wertvoll, um Probleme mit Ihrer Anwendung zu erkennen. Sie bieten jedoch keinen großen Einblick in Bedenken auf Anwendungsebene. Durch Instrumentierung kann Ihre Anwendung die Daten generieren, die Sie benötigen, um die Ursache eines Problems zu diagnostizieren, da die resultierende Telemetrie zeigt, was in Ihrer Anwendung passiert. Logs enthalten beispielsweise häufig Kontext zu Ihrem Programm, z. B. eine bestimmte Fehlermeldung oder einen Stacktrace sowie die Position im Quellcode. Ebenso können Sie mit verteilten Traces nachvollziehen, wie mehrere Dienste bei der Verarbeitung von Anfragen interagieren. Über Messwerte können Sie benachrichtigt werden, wenn sich Ihre Anwendung nicht ordnungsgemäß verhält.

Zur Instrumentierung Ihrer Anwendung wird Telemetrie generiert und an den Ort gesendet, an dem die Daten gespeichert und abgefragt werden können. Beispielsweise könnte Ihre Instrumentierung Telemetrie an ein Google Cloud-Projekt senden. Mit Diensten in Google Cloud Observability können Sie Telemetriedaten erfassen, analysieren und korrelieren. Außerdem bieten sie integrierte Standardeinstellungen, damit Ihr Einstieg schneller gelingt, beispielsweise standardmäßige Dashboards und Benachrichtigungsrichtlinien. Weitere Informationen zur Google Cloud Observability finden Sie unter Beobachtbarkeit in Google Cloud.

Die folgende Abbildung zeigt, wie eine Anwendung Instrumentierung verwendet, um Telemetriedaten zu generieren und an ein Speichersystem zu senden:

Abbildung zur Architektur der Prozessinstrumentierung

Wie in der vorherigen Abbildung dargestellt, ist der Instrumentierungscode im Prozess Ihrer Anwendung vorhanden und interagiert mit der Anwendung, um Telemetriedaten zu generieren. Das Instrumentierungs-Framework exportiert dann Ihre Telemetrie in ein konfiguriertes Speichersystem. In der Abbildung ist das Speichersystem Ihr Google Cloud-Projekt.

Anbieterneutrale Instrumentierungs-Frameworks

Auch wenn Sie Telemetrie nur an Google Cloud senden möchten, empfehlen wir Ihnen, ein anbieterneutrales Open-Source-Instrumentierungs-Framework zur Instrumentierung Ihrer Anwendungen zu verwenden. Diese Arten von Frameworks haben einige entscheidende Vorteile:

Keine Anbieterbindung
Anbieterneutrale Frameworks sind nicht an einen bestimmten Anbieter gebunden und stellen ein eigenes Datenmodell für die generierte Telemetrie bereit. Daher können Sie Daten an mehrere Anbieter senden und in der Regel können Sie den verwendeten Anbieter ändern, ohne Ihren Code zu ändern.
Standardisierte Verfahren zum Erfassen von Telemetriedaten
Aussagekräftige Frameworks wie OpenTelemetry bieten einen standardisierten Ansatz für die Erfassung von Telemetriedaten aus Anwendungen. Für Anwendungen, die in unterstützten Sprachen geschrieben sind, können Sie das gleiche Framework verwenden. Da das Framework standardisiert ist, können Sie die Telemetriedaten aus allen Ihren Diensten erfassen und vergleichen.
Interoperabilitätsbibliotheken
Instrumentierungs-Frameworks umfassen eine Vielzahl von Bibliotheken, die Telemetriesignale erfassen. Diese Bibliotheken sind interoperabel. OpenTelemetry bietet beispielsweise Bibliotheken zum Erfassen von Trace-Daten und Messwertdaten. Sie können eine der beiden Bibliotheken oder beide verwenden.

Allgemeine Empfehlungen

Dieser Abschnitt enthält allgemeine Empfehlungen zur Instrumentierung Ihrer Anwendung. Eine spezifische Anleitung für Google Cloud finden Sie unter Instrumentierungsansatz auswählen.

Zum Erfassen von Messwerten empfehlen wir die Verwendung von OpenTelemetry oder Prometheus:

  • OpenTelemetry ist ein Open-Source-Projekt, das ein einheitliches Framework für die Anwendungsinstrumentierung bietet. Außerdem bietet sie Instrumentierungsbibliotheken für beliebte Bibliotheken. OpenTelemetry bietet einen eigenständigen Agent, den OpenTelemetry Collector, der Telemetrie empfangen, transformieren und exportieren kann. Die OpenTelemetry-Konfigurationsdatei bestimmt das Verhalten des OpenTelemetry Collector. Verwenden Sie das OpenTelemetry Protocol (OTLP), um Telemetrie an einen Agent oder direkt an ein Speichersystem zu senden.

  • Prometheus ist ein beliebtes Open-Source-Monitoring-System. Sie können die Prometheus-Clientbibliotheken verwenden, um Messwerte aus Ihrer Anwendung zu generieren. Außerdem gibt es ein Drittanbieter-System von Instrumentierungsbibliotheken für beliebte Frameworks. Prometheus-Clients stellen ihre Messwerte als HTTP-Endpunkt bereit, der von einem Agent extrahiert werden kann.

Zum Erfassen von Traces empfehlen wir die Verwendung von OpenTelemetry.

Zum Erfassen von Logs empfehlen wir die Verwendung eines Frameworks, das für die Ausgabe von JSON-strukturierten Logs für Cloud Logging konfiguriert werden kann. Zum Schreiben von Logdaten empfehlen wir Folgendes:

Google Cloud-Lösungen

Google Cloud Observability bietet flexible Optionen zum Erfassen von Telemetriedaten:

Nächste Schritte

Weitere Informationen zur Google Cloud Observability finden Sie unter Beobachtbarkeit in Google Cloud.