Microsoft veröffentlicht Monitoring-Tool für .NET-Umgebungen
Das experimentelle Werkzeug dotnet-monitor gibt diverse Informationen über eine REST API aus und ist auch als Container-Image verfügbar.
Ein zunächst als experimentell gekennzeichnetes Werkzeug soll beim Monitoring von .NET-Umgebungen helfen. Microsoft hat das Werkzeug dotnet-monitor
veröffentlicht, das diverse Informationen über eine REST API bereitstellt. Verfügbar ist es als globales Tool für .NET Core und als Container-Image über die Microsoft Container Registry (MCR).
Endpunkte und Abfragen
Die REST API stellt insgesamt sechs Endpunkte bereit: /processes
, /dump/{pid?}
, /gcdump/{pid?}
, /trace/{pid?}
, /logs/{pid?}
und /metrics
.
Standardmäßig bietet das Werkzeug zwei URL-Gruppen an. Für den Parameter --urls
, der in der Grundeinstellung über http://localhost:52323
bereitsteht, stehen alle Endpunkte der Anfrage bereit. Die URLs über den --metricUrls
-Parameter bieten ausschließlich den /metrics
-Endpunkt an und sind standardmäßig über http://localhost:52325
verfügbar.
Einblick in die Prozesse
Der Endpoint /processes
gibt eine Liste aller Prozesse zurück, auf die der dotnet-monitor
Zugriff hat. Sollte dabei nur einer verfügbar sein, wie in folgendem Beispiel für den Einsatz über die PowerShell, darf der Parameter für die Prozess-ID bei den spezifischen Anfragen zu den einzelnen Prozessen entfallen:
PS> Invoke-RestMethod http://localhost:52323/processes
pid
---
1
Dumps, Traces und Logs
/dump/{pid?}
erzeugt einen Dump des Prozesses mit der angegeben ID. Die Analyse des Dumps ist nur auf Systemen möglich, auf denen dasselbe Betriebssystem läuft wie in der abgefragten .NET-Core-Umgebung. Der Dump des Garbage Collector ist über /gcdump/{pid?}
verfügbar und im Gegensatz zum Prozess-Dump portabel, also nicht vom Betriebssystem des Zielsystems, abhängig.
Der /trace/{pid?}
-Endpunkt erstellt standardmäßig ein Trace über die letzten 30 Sekunden. Sowohl die Länge als auch die Inhalte wie ein CPU Profiler lassen sich über Parameter anpassen. Dasselbe gilt für die Sammlung von Stream-Logs des Zielsystems über den /logs/{pid?}
Endpoint.
/metrics
erstellt einen Snapshot der Laufzeitumgebung und ASP.NET-Core-Metriken im Exposition Format des Open-Source-Monitoring-Tools Prometheus. Damit lässt es sich zum Sammeln von Metriken in einem Cluster unter anderem über Kubernetes verwenden. Für das Szenario bietet sich der Einsatz über den --metricUrls
-Parameter an, um ausschließlich die Metriken bereitzustellen.
Testballon bis zum Release von .NET 5
Der Blogbeitrag, der das Tool vorstellt, bezeichnet dotnet-monitor
explizit als experimentell. Die Maintainer des Projekts bitten um Rückmeldung von Anwendern. Das Experiment soll bis zum Erscheinen von .NET 5 laufen, von dem Microsoft Anfang Juni die fünfte Preview veröffentlicht hat. Zu dem Zeitpunkt wollen die Entwickler das Projekt evaluieren und erwägen, was künftig damit geschehen soll. Der Quellcode und die Dokumentation finden sich auf GitHub.
(rme)