Verwenden des .NET Aspire-Dashboards
Nachdem Sie Telemetriedaten aufgezeichnet haben, benötigen Sie eine Möglichkeit, sie zu untersuchen. Mit .NET Aspire bietet das Dashboard umfangreiche Tools zum Untersuchen von Telemetrie und Diagnose von Problemen.
Stellen Sie sich vor, Sie arbeiten für einen Händler für Outdoor-Ausrüstung. Sie verwenden OpenTelemetry in Ihrer cloudnativen .NET Aspire-App. Nun möchten Sie die Daten, die die Telemetrie ausgibt, untersuchen, um zu entscheiden, ob Sie sie zur Verbesserung der Leistung nutzen können.
In dieser Lerneinheit sehen Sie, wie das .NET Aspire-Dashboard Telemetriedaten anzeigt.
Telemetrie im .NET Aspire-Dashboard
Wenn Sie eine App, die mit .NET Aspire erstellt wurde, sowie die Container, die die einzelnen Komponenten ausführen, auf Ihrem Entwicklungscomputer starten, startet .NET das .NET Aspire-Dashboard. Diese Weboberfläche hat fünf Bereiche, von denen vier die Telemetrie anzeigen:
- Ressourcen: Listet die Container, Projekte und ausführbaren Dateien auf, aus denen Ihre gesamte cloudnativen App besteht. Verwenden Sie die Links in der Spalte Endpunkte, um eine Verbindung mit jedem Microservice herzustellen.
- Konsole: Zeigt den Text an, der von der angegebenen Komponente an die Standardausgabe gesendet wird.
- Strukturierte Protokolle: Zeigt Informationen an, die an die OpenTelemetry-Protokollierung gesendet werden.
- Traces: Zeigt eine Ablaufverfolgung für jede Anforderung an, die von jedem Microservice in der App empfangen wird.
- Metriken: Zeigt konfigurierbare Zeitbereichsdiagramme an, die zeigen, wie die von Ihnen ausgewählten Metriken variieren.
Protokolle im Dashboard
Protokollierte Ereignisse beschreiben, was geschieht, wenn Ihre App gestartet und ausgeführt wird. Im Dashboard werden zwei Arten protokollierter Informationen angezeigt: Konsolenprotokolle und strukturierte Protokolle.
Konsolenprotokolle
Konsolenprotokolle zeigen Text an, den Ihre App an die Standardausgabe gesendet hat. Ein CLI-Programm würde Text als Zeilen in der Konsole anzeigen, aber Microservices und Sicherungsdienste haben keinen systeminternen Ort zum Anzeigen der Standardausgabe. .NET Aspire hilft, indem die Konsolenprotokollseite im Dashboard bereitgestellt wird.
Wenn Sie die Seite öffnen, müssen Sie zuerst eine Quellkomponente auswählen, z. B. einen Ihrer Microservices. Das Tool zeigt alle Standardausgaben aus dieser Quelle im Hauptfenster mit einer Formatierung an. Beispielsweise werden die Informationsereignisse grün angezeigt, während Fehler rot angezeigt werden.
Konsolenprotokolle sind einfach Textzeilen. Sie sind für Anwendungen einfach zu erstellen und auszugeben, aber für Menschen schwer zu lesen und für Analysezwecke schwer zu verarbeiten, da sie keine Struktur aufweisen.
Strukturierte Protokolle
Anstelle von reinem Text werden in strukturierten Protokollen die protokollierten Meldungen mit ihren Vorlagen und Meldungsparametern gespeichert. Diese Struktur erleichtert es Ihnen, irrelevante Ereignisse herauszufiltern, so dass Sie bei der Problembehandlung ein bestimmtes Problem aufschlüsseln können. In einer Produktionsumgebung können die Protokolle aufbewahrt, indiziert und dann wie eine Datenbank abgefragt werden. Auf diese Weise können Sie umfangreiche Analysen zu den darin enthaltenen Daten durchführen.
Hinweis
Strukturierte Protokolle werden häufig auch als semantische Protokolle bezeichnet.
Senden Sie in Ihrem Code ein Ereignis an die strukturierten Protokolle, indem Sie ein ILogger
-Objekt von OpenTelemetry verwenden:
logger.Info("{shopitem} added to basket by {user}", "Ski goggles", "Kenny");
Im .NET Dashboard zeigt die Seite Strukturierte Protokolle Ereignisse von jeder Ressource in Ihrer Anwendung an. Wählen Sie zur Problembehandlung die betreffende Ressource aus und verwenden Sie die Felder Filter und Ebene, um nur die relevanten Ereignisse anzuzeigen.
Verteilte Ablaufverfolgungen im Dashboard
Eine Ablaufverfolgung ist ein Datensatz, der beschreibt, wie eine Anforderung verarbeitet und an die aufrufende Entität zurückgegeben wurde. Jede Ablaufverfolgung kann Aufrufe an mehrere Komponenten in Ihrer Anwendung beinhalten. Wenn eine Benutzerin oder ein Benutzer beispielsweise die Webseite des Produktkatalogs anfordert, könnte der Web-UI-Microservice die Anforderung erhalten, der den Authentifizierungs-Microservice, den Katalog-Microservice und den Redis-Cache aufruft, bevor er der Benutzerin oder dem Benutzer eine Webseite zurückgibt.
Jede Ablaufverfolgung besteht aus Abschnitten, z. B. dem Aufruf des Katalog-Microservice. Das System zeichnet jeden Abschnitt mit den Informationen zum Zeitverlauf und zu den übergeordneten Komponenten auf, so dass Sie sehen können, welche Komponente schnell reagiert und welche Verzögerungen verursacht. Für jeden Abschnitt sind weitere Details verfügbar.
Ähnlich wie bei den strukturierten Protokollen können Sie die Quelle auswählen und Filter anwenden, um das spezifische Problem, das Sie diagnostizieren möchten, aufzuschlüsseln und zu ermitteln.
Metriken im Dashboard
Metriken sind Werte, die sich im Laufe der Zeit ändern und von einer Komponente Ihrer Anwendung aufgezeichnet werden. Metriken können z. B. die Dauer einer Anforderung und einer Antwort oder eine Zählung der aktiven Verbindungen zu Ihrem Katalog-Microservice aufzeichnen. Einige Metriken sind in .NET integriert, andere sind in den OpenTelemetry SDK-Bibliotheken enthalten, und Entwicklerinnen und Entwickler können benutzerdefinierte OpenTelemetry-Metriken hinzufügen, die für ihre Komponente einzigartig sind.
Das .NET Aspire Dashboard enthält den Bereich Metriken, mit dem Sie untersuchen und anzeigen können, wie sich Metriken im Laufe der Zeit verändern.
Die Metrik http.server.active_requests zeigt zum Beispiel die Anzahl der Anforderungen an, die zu einem bestimmten Zeitpunkt bearbeitet werden:
Die Metrik http.server.request.duration zeigt an, wie reaktionsschnell die App zu einem bestimmten Zeitpunkt ist:
Unter jedem Diagramm können Sie Filter angeben, die auf das Diagramm angewendet werden sollen. Dieses Diagramm zeigt zum Beispiel die Metrik der Anforderungsdauer für Anforderungen an die Homepage-Route: