Observability: Optimieren von Workloads mit Universal Profiling

Überblick

Einführung in Elastic Observability

Machen Sie sich mit Elastic Observability vertraut und erfahren Sie, wie Sie mit Elastic Cloud Kunden-Logdaten aus Ihren Anwendungen ingestieren, einsehen und analysieren können. Finden Sie heraus, wie Sie Anwendungen modernisieren und die Cloud selbstbewusst nutzen können.


Los gehts

Elastic Cloud-Konto erstellen

Öffnen Sie cloud.elastic.co, erstellen Sie ein Konto und folgen Sie diesem Video, um herauszufinden, wie Sie Ihren ersten Elastic Stack in einer unserer mehr als 50 unterstützten Regionen weltweit starten können.

Create_Deployment_8.13.png

Warten Sie, bis Ihr Deployment abgeschlossen wurde, und wählen Sie auf der Registerkarte Observability die Option Optimize my workloads with Universal Profiling (Workloads mit Universal Profiling optimieren) aus.

olly_tiles.png

Anschließend werden Sie aufgefordert, Ihre Daten hinzuzufügen. Wählen Sie Set up Universal Profiling (Universal Profiling einrichten) aus.

universal-profiling-set-up.png

Wenn Sie den Universal Profiling Agent zum ersten Mal verwenden, müssen Sie ihn zunächst einrichten. Gehen Sie dazu wie folgt vor.

kubernetes-universal-profiling-agent-install-start.png

Im folgenden Beispiel werden die oben gezeigten Befehle im Microsoft Azure AKS-Cluster ausgeführt.

kubernetes-universal-profiling-agent-install-in-azure-cloud-shell.png

Sobald die ersten Daten angezeigt werden, navigieren Sie links im Menü zu Stacktraces (Stapelüberwachung) unter Universal Profiling. In den Stacktraces wird angezeigt, welche Vorgänge am meisten Zeit verbrauchen. Fahren Sie mit dem Mauszeiger über das Diagramm, um das Wellenmuster für einzelne Threads anzuzeigen.

In der Stacktraces-Ansicht werden gruppierte Stacktrace-Diagramme nach Threads, Hosts, Kubernetes-Deployments und Containern angezeigt. Dort können Sie unerwartete CPU-Lastspitzen über Threads hinweg erkennen und Drilldowns in kleinere Zeitbereiche ausführen, um Ihre Untersuchung mit einem Flamegraph zu erweitern.

Die ersten Daten sollten spätestens nach etwa drei Minuten angezeigt werden. In diesem Blogeintrag finden Sie weitere Hinweise zur Interpretation von Stacktraces.

kubernetes-universal-profiling-after-agent-install.png


Mit Elastic Observability arbeiten

Flamegraphs analysieren

Navigieren Sie anschließend links im Menü zu Flamegraphs unter Universal Profiling. Profiling ist im Grunde genommen ein Synonym für „Flamegraphs“. Von links nach rechts wird angezeigt, welcher Code oder welche Funktion besonders ressourcenaufwändig ist.

Auf der Flamegraph-Seite verbringen Sie vermutlich die meiste Zeit, insbesondere beim Debuggen und Optimieren. In diesem Blogeintrag finden Sie weitere Informationen zum Identifizieren von Leistungsengpässen und zur Optimierung mit Flamegraphs. Die drei wichtigsten Elemente oder Bedingungen, auf die Sie achten müssen, sind Breite, Hierarchie und Höhe.

  • Beginnen Sie horizontal von links nach rechts und achten Sie auf die Breite für CPU-intensive Funktionen.
  • In vertikaler Richtung können Sie den Stack untersuchen und Engpässe identifizieren.
  • Besonders hohe Stapel deuten auf potenzielle Komplexität im Code hin.

kubernetes-universal-profiling-flame-graph-after-agent-install.png

Beschränken Sie Ihre Erkundung für den Anfang auf einzelne Threads, Hosts, Deployments oder Container. Geben Sie dazu das gewünschte Element in die Suchleiste ein.

HINWEIS: Elastic Universal Profiling ist branchenweit die einzige fortlaufende Profiling-Lösung mit Sichtbarkeit für gemischte Sprachen vom Kernel bis hin zu nativem Code in High-Level-Programmiersprachen, ohne Debugsymbole auf dem Host zu benötigen.

universal_differential_flamegraph.png

Beachten Sie beim Analysieren des Diagramms, dass die Linienlänge der Ausführungsdauer in Form von CPU-Zeit entspricht. Wählen Sie eine der Linien aus, um ein Flyout mit zusätzlichen Details anzuzeigen. Function (Funktion) ist die zum entsprechenden Zeitpunkt ausgeführte Codezeile. Daneben werden weitere wichtige Details wie Total CPU (CPU gesamt), Annualized CO2 (CO2 pro Jahr) und Annualized dollar cost (Kosten in US-Dollar pro Jahr) angezeigt.

universal_differential_details.png

Code vor und nach Änderungen vergleichen

Mit verschiedenen Flamegraphs können Sie den Code vor und nach Änderungen vergleichen, bevor Sie ihn in die Produktionsumgebung übernehmen. Blaugrün steht für Verbesserungen und rot deutet auf Rückschritte hin.

In der folgenden Abbildung sehen Sie anhand der Farbe, dass der optimierte Container verbessert wurde.

universal_differential_good.png

Wählen Sie den Dropdown-Pfeil neben Gained overall performance (Erzielte Gesamtleistung) aus, um die Summe der Verbesserungen anzuzeigen.

universal_differential_good_value.png

Beachten Sie das Symbol Swap sides (Seiten wechseln, das Symbol zwischen den verglichenen Containern mit Pfeilen in entgegengesetzte Richtungen). Damit können Sie sehen, dass sich bei einem Rollback des Codes für den Container vor der Optimierung die Leistung verschlechtern würde.

universal_differential_bad.png

Mit dem Dropdown-Pfeil neben Lost overall performance (Verlorene Gesamtleistung) können Sie die Summe der Verschlechterungen anzeigen.

universal_differential_bad_value.png

Unter Go to monitor (Zu Monitor wechseln) werden sofort einige High-Level-Einblicke angezeigt. Diese Diagramme werden gerendert, sobald weitere Tests abgeschlossen wurden, aber Sie können auf einen Blick Daten wie Verfügbarkeit, Dauer der Testausführung oder Zeitleiste anzeigen und einen Drilldown in das Wasserfalldiagramm ausführen. Klicken Sie auf das Symbol unter View test run (Testlauf anzeigen), um den Drilldown auszuführen.


Wie geht es weiter?

Vielen Dank, dass Sie sich die Zeit genommen haben, Logs mit Elastic Cloud zu erfassen und zu analysieren. Wenn Sie Elastic noch nicht kennen, starten Sie jetzt eine kostenlose 14-tägige Testversion.

Für Ihre Elastic-Journey sollten Sie außerdem die wichtigsten Komponenten im Hinblick auf Betrieb, Sicherheit und Daten kennen, die Nutzer beim Bereitstellen in Umgebungen verwalten müssen.


Observability-Ressourcen (teils nur auf Englisch verfügbar)