Telemetrie-APIs in .NET

Abgeschlossen

Wie können Sie das Verhalten einer App zur Problembehandlung oder Leistungsoptimierung untersuchen? Je mehr Daten Sie darüber haben, was die App getan hat, desto einfacher ist es, Probleme zu diagnostizieren.

Stellen Sie sich vor, Sie arbeiten für einen Outdoor-Händler. Ihre Teams entwickeln ihre Microservices, die für die Testphase bereit sind. Sie möchten sicherstellen, dass Ihre cloudnative App Telemetrie über das Verhalten ausgibt, damit Sie Probleme beim Testen, Staging und Produktion diagnostizieren können.

In dieser Lektion erfahren Sie mehr über Telemetrie und die verschiedenen Arten von Daten, die Sie mit ihr aufzeichnen können.

Was ist Telemetrie?

In der Technik ist Telemetrie die Messung von Daten und deren automatische Übertragung an ein zentrales System zur Überwachung. Beispielsweise kann ein Rennwagen Daten über seine Leistung aufzeichnen und an den Paddock zurücksenden, in dem Techniker sie analysieren. Ebenso kann eine Raumkapsel Informationen über Bedingungen in der Kapsel aufzeichnen und zurück an die Missionskontrolle senden. In den letzten Jahren ist es üblich, Telemetriedaten in gängigeren Systemen aufzuzeichnen und zu analysieren. Beispielsweise kann Ihre Zentralheizung Telemetrie an den Hersteller senden, um die Problembehandlung zu unterstützen.

Wenn Sie cloudeigene Apps schreiben, ist Telemetrie hilfreich in folgenden Fällen:

  • Sie entwickeln Microservices und möchten wissen, ob sie sich erwartungsgemäß verhalten.
  • Sie testen Ihre App und möchten wissen, was passiert, wenn sie einen Test nicht besteht.
  • Sie stellen Ihre App bereit und möchten wissen, wie sie funktioniert.
  • Sie unterstützen Ihre App in der Produktion und möchten eine Ausnahme beheben oder die Leistung optimieren.

Wir können ein System beschreiben, das umfassende Telemetrie ausgibt, als:

  • Erkennbar: Ein erkennbares System ist ein System, bei dem Sie sein Verhalten von außerhalb verstehen können.
  • Instrumentiert: Ein instrumentiertes System ist ein System, das alle Daten ausgibt, die Entwickler benötigen ein Problem zu beheben.

OpenTelemetry ist ein Observability Framework und Toolkit, das Sie in Ihrer App zum Erstellen, Verarbeiten und Ausgeben von Telemetriedaten verwenden können. Sie können es ganz einfach zu jeder .NET-Anwendung hinzufügen, einschließlich Microservices in einer cloudnativen App. Es emittiert Daten in Formularen, die gängige Observability-Tools wie Jaeger und Prometheus verwenden und analysieren können.

Säulen der Beobachtbarkeit

Die Art von cloudnativen Apps, die aus verteilten Microservices bestehen, die unterschiedliche Technologien verwenden, können es schwierig machen, erkennbar und ordnungsgemäß instrumentierten Code zu erstellen. Alle Teams müssen die Observability in ihre Microservices integrieren, andernfalls ist es schwierig, diesen Teil Ihrer App zu überwachen und eine Problembehandlung durchzuführen.

Wichtig

Um sicherzustellen, dass Ihre gesamte App erkennbar ist, sollten Sie sicherstellen, dass alle Entwicklungsteams die drei Säulen der Observability in ihren Microservices berücksichtigen: Protokollierung, Metriken und Ablaufverfolgung.

Die drei Säulen der Observability sind drei verschiedene Arten von Datensätzen, die das Verhalten von Softwarekomponenten für die spätere Analyse speichern:

  • Protokoll: Ein Textdatensatz mit Zeitstempel darüber, was während der Verarbeitung einer Anforderung passiert ist.
  • Metrik: Eine Messung eines Diensts, die zur Laufzeit erfasst wurde. Metrikwerte können in Statistiken zu einem Prozess aggregiert werden, einschließlich:
    • .NET-Runtime-Statistiken wie z. B. der verwendete Arbeitsspeicher oder die Anzahl der aufgetretenen automatischen Speicherbereinigungen.
    • ASP.NET- oder NuGet-Paketstatistiken, z. B. die Anzahl der abgeschlossenen Anforderungen, die Anforderungsdauer oder die Fehleranzahl.
    • Benutzerdefinierte Statistiken, die für Ihre App spezifisch sind, z. B. die Anzahl der Bestellungen.
  • Verteilte Ablaufverfolgung: Ein Datensatz aller Arbeitseinheiten, der häufig als Spanne bezeichnet wird, die erforderlich ist, um eine einzelne Anforderung zu verarbeiten. In einer cloudnativen App können viele Microservices und Sicherungsdienste an einer einzigen Anforderung beteiligt sein, und eine verteilte Ablaufverfolgung zeigt alle an, während sie zusammenarbeiten, um die Antwort vorzubereiten.

Hinweis

In OpenTelemetry gelten alle Daten, die nicht Teil einer verteilten Ablaufverfolgung oder einer Metrik sind, als Protokoll, z. B. Ereignisse.

Verwenden von Telemetrie in .NET

.NET verfügt über integrierte Typen, welche die drei Säulen darstellen:

  • ILogger: Diese Schnittstelle stellt eine Standardschnittstelle bereit, die Sie verwenden können, wenn Sie Ereignisse aus einem beliebigen .NET-Code protokollieren.
  • Messinstrument: Sie können diese Klasse verwenden, um eine Gruppe von Instrumenten zu erstellen, von denen jedes einen Wert misst, der mit der Leistung oder dem Verhalten Ihres Codes verknüpft ist. Sie können z. B. ein Instrument hinzufügen, das den Umsatz eines Produkts zählt, oder ein anderes, das die Zeitspanne misst, die eine Nachricht in einer Warteschlange gewartet hat. .NET bietet auch viele integrierte Metriken.
  • Activity (Aktivität): Sie können diese Klasse verwenden, um die Ablaufverfolgungsinformationen aufzuzeichnen. Erstellen Sie zunächst ein ActivitySource-Objekt für Ihren Namespace. Rufen Sie dann die StartActivity-Methode auf, um mit der Aufzeichnung von Daten zu beginnen.

Sie können diese Klassen in jedem .NET-Code verwenden. In der nächsten Einheit sehen Sie, wie .NET Aspire die Verwendung von OpenTelemetry-Klassen in cloudnativen Apps erleichtert.

Weitere Informationen