Was bedeutet Einblick?

Abgeschlossen

Bevor Sie sich mit dem Code befassen, werfen wir einen Schritt zurück und sprechen über die Observability. Sie müssen Über Tools verfügen, die Ihnen helfen, den internen Zustand eines Systems basierend auf den extern sichtbaren Informationen zu verstehen.

Warum Beobachtbarkeit implementieren?

Es gibt mehrere Gründe, warum Die Observierbarkeit ein wichtiger Aspekt bei der Entwicklung und Verbesserung von cloudeigenen Anwendungen ist:

  • Grundlegendes zum Systemverhalten: Observability bietet Einblicke in die Leistung Ihrer Anwendung und wo Engpässe oder Fehler auftreten.
  • Debuggen und Problembehandlung: Wenn Probleme auftreten, können Observability-Tools detaillierte Informationen zu den Vorgängen im System zum Zeitpunkt des Problems bereitstellen.
  • Kontinuierliche Verbesserung: Die Observability dient nicht nur der Identifizierung und Lösung von Problemen – sie wird auch zur kontinuierlichen Verbesserung verwendet. Durch die Überwachung der Systemleistung im Laufe der Zeit können Sie Möglichkeiten identifizieren, Ihren Code zu optimieren, die Systemleistung zu verbessern und die Benutzererfahrung quantitativ zu verbessern.
  • Proaktive Problemerkennung: Mit den richtigen Observability-Tools können Sie häufig Probleme erkennen, bevor Ihre Benutzer sie sogar sehen.

Die Implementierung der Observierbarkeit in cloudeigenen Anwendungen ist nicht nur eine bewährte Methode, es ist eine Notwendigkeit, Ihre Anwendungen aufrechtzuerhalten, zu optimieren und kontinuierlich zu verbessern. Es ermöglicht Entwicklern, zuverlässige, leistungsfähige Anwendungen bereitzustellen und die erforderlichen Erkenntnisse zu liefern, um fundierte Entscheidungen zu treffen.

Die drei Säulen der Beobachtbarkeit

Es gibt drei Hauptpfeiler der Observierbarkeit:

  • Protokolle: Protokolle stellen detaillierte Datensätze von Ereignissen bereit, die innerhalb einer Anwendung oder eines Systems auftreten. In Ihrer App können Sie die Infrastruktur zum Protokollieren von Ereignissen verwenden Microsoft.Extensions.Logging .
  • Metriken: Metriken beziehen sich auf numerische Messungen und Leistungsindikatoren, die Einblicke in die Leistung und Integrität eines Systems bieten. Beispiele sind Anforderungsraten, Reaktionszeiten, CPU-/Arbeitsspeicherauslastung und Fehlerraten. In Ihrer App verfügen Sie möglicherweise über bestimmte Maße, die Sie nachverfolgen müssen.
  • Verteilte Ablaufverfolgung: Dieser Prozess umfasst die Ablaufverfolgung einer Anforderung, da sie über alle Microservices in Ihrer cloudeigenen App verteilt wird. Jeder Dienst protokolliert Ablaufverfolgungsdaten wie Anforderungs-IDs, mit denen Sie Ereignisse über Dienste hinweg korrelieren können. Die verteilte Ablaufverfolgung ist auch hilfreich beim Debuggen von Leistungsproblemen und Fehlern in komplexen Systemen.

Gemeinsam bieten diese drei Säulen umfassende Beobachtbarkeit in einem System.

Datenquellen für Telemetrie

In der cloudeigenen App Ihres Unternehmens gibt es mehrere Telemetriequellen, die Sie sammeln können:

  • Anwendungsprotokolle: Anwendungen generieren Protokolle, die detaillierte Informationen zu ihrem Vorgang und zu Fehlern bereitstellen, wenn sie auftreten. Die Protokollierung ist eine umfangreiche Quelle von Telemetriedaten.
  • Datenbanken: Datenbanken können Telemetriedaten zu den Verarbeiteten Abfragen, Ausführungszeiten und fehlern bereitstellen.
  • HTTP-Anforderungen und -Antworten: Die HTTP-Anforderungen und -Antworten zwischen Ihren Microservices bieten umfangreiche und wertvolle Telemetriedaten. Zu diesen Daten gehören die Anforderungs- und Antwortheader, Textinhalte, Statuscodes und Zeitangaben.
  • Clientseitige Leistungsdaten: In cloudeigenen Apps mit einem Front-End können Sie die clientseitigen Leistungsdaten erfassen. Diese Daten können Seitentreffer, Ladezeiten und Ui-Interaktionszeiten umfassen.
  • Infrastrukturmetriken: Wenn Ihre Anwendung in einer Cloudumgebung gehostet wird, können Sie Infrastrukturmetriken wie CPU-Auslastung, Arbeitsspeicherauslastung, Netzwerkdatenverkehr und E/A-Vorgänge des Datenträgers erfassen.

Durch das Sammeln und Analysieren dieser Telemetriedaten können Sie wertvolle Einblicke in die Leistung und den Zustand Ihrer Anwendung gewinnen.

Beobachtbarkeit implementieren

Um Ihrer cloudeigenen Anwendung Observability hinzuzufügen, führen Sie die folgenden Schritte aus:

  • Fügen Sie eine Protokollierung hinzu.
  • Aktivieren Sie Metriken, und definieren Sie benutzerdefinierte Metriken, die erfasst werden sollen.
  • Aktivieren Sie das verteilte Tracing mit OpenTelemetry und Zipkin.
  • Instrumentieren Sie Ihre App mit OpenTelemetry erneut und fügen Sie Ihrem Code Telemetrie hinzu.
  • Analysieren Sie die Telemetriedaten mit Prometheus, Grafana oder Application Insights.

Einführung in OpenTelemetry

Wie hilft OpenTelemetry dabei, Beobachtbarkeit zu Ihrer App hinzuzufügen, und warum gibt es so umfassende Unterstützung dafür in .NET? OpenTelemetry ist ein Open-Source-Observability-Framework. Sie bietet eine standardmäßige, anbieterunabhängige Möglichkeit zum Generieren von Telemetriedaten.

OpenTelemetry standardisiert die Art und Weise, wie Telemetriedaten gesammelt und an Back-End-Plattformen übertragen werden. Es überbrückt Sichtbarkeitslücken, indem ein gemeinsames Instrumentierungsformat für alle Mikroservices bereitgestellt wird. Sie müssen code nicht neu instrumentieren oder verschiedene proprietäre Agents installieren, wenn sich eine Back-End-Plattform ändert.

Da es sich um einen offenen Standard handelt, werden viele andere Tools außerhalb von .NET unterstützt. OpenTelemetry ist für die Verwendung von Erweiterungen konfiguriert, mit denen Exporter Telemetriedaten für alle verschiedenen Tools erstellen können. Dies bedeutet, dass Sie dieselben Tools verwenden können, um Microservices unabhängig von der Sprache zu überwachen, in der sie geschrieben sind.

OpenTelemetry hilft Ihnen, alle drei Säulen der Beobachtbarkeit zu erfassen und zu überwachen: Protokolle, Metriken und Traces. Sie sehen, wie Sie diese Aufgaben in den folgenden Einheiten ausführen.