Chaos Mesh + SkyWalking: Bessere Observability für Chaos Engineering
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Chaos Mesh ist eine Open-Source-Chaos-Engineering-Plattform für Cloud-native Umgebungen. Mit Chaos Mesh können Sie gezielt Fehler injizieren und reale Ausnahmesituationen simulieren, um potenzielle Schwachstellen in Ihrem System zu identifizieren. Das integrierte Chaos Dashboard ermöglicht die Überwachung des Status von Chaos-Experimenten. Allerdings zeigt es nicht, wie sich die experimentellen Fehler auf die Dienstleistung von Anwendungen auswirken. Das erschwert die weitere Systemprüfung und Fehlersuche.
Apache SkyWalking ist ein Open-Source-Application Performance Monitor (APM), speziell für die Überwachung, Nachverfolgung und Diagnose cloud-nativer, containerbasierter Systeme entwickelt. Es erfasst Ereignisse und visualisiert sie in einem Dashboard. So können Sie direkt sehen, welche Ereignisse in Ihrem System auftreten, wie häufig sie vorkommen und wie sie die Dienstleistung beeinflussen.
Durch die kombinierte Nutzung von SkyWalking und Chaos Mesh während Chaos-Experimenten können Sie beobachten, wie verschiedene Fehler die Dienstleistung beeinträchtigen.
Dieses Tutorial zeigt, wie Sie SkyWalking und Chaos Mesh konfigurieren. Sie lernen außerdem, wie Sie beide Systeme nutzen, um Ereignisse zu überwachen und in Echtzeit zu sehen, wie Chaos-Experimente die Dienstleistung Ihrer Anwendungen beeinflussen.
Vorbereitung
Bevor Sie SkyWalking und Chaos Mesh nutzen können, müssen Sie:
-
Einen SkyWalking-Cluster gemäß der SkyWalking-Konfigurationsanleitung einrichten.
-
Chaos Mesh mit Helm bereitstellen.
-
JMeter oder andere Java-Testtools installieren (um Dienstlasten zu erhöhen).
-
SkyWalking und Chaos Mesh gemäß dieser Anleitung konfigurieren, falls Sie nur eine Demo ausführen möchten.
Nun sind Sie vollständig vorbereitet, und wir können zur Sache kommen.
Schritt 1: Auf den SkyWalking-Cluster zugreifen
Nach der Installation des SkyWalking-Clusters können Sie auf dessen Benutzeroberfläche (UI) zugreifen. Zu diesem Zeitpunkt sind jedoch noch keine Dienste aktiv. Bevor Sie mit der Überwachung beginnen, müssen Sie einen Dienst hinzufügen und Agents konfigurieren.
In diesem Tutorial verwenden wir Spring Boot, ein leichtgewichtiges Microservice-Framework, um eine vereinfachte Demo-Umgebung aufzubauen.
-
Erstellen Sie eine SkyWalking-Demo in Spring Boot, indem Sie diesem Dokument folgen.
-
Führen Sie den Befehl
kubectl apply -f demo-deployment.yaml -n skywalkingaus, um die Demo bereitzustellen.
Nach erfolgreicher Bereitstellung können Sie die Echtzeit-Monitoring-Ergebnisse in der SkyWalking-UI beobachten.
Hinweis: Spring Boot und SkyWalking verwenden beide standardmäßig Port 8080. Achten Sie bei der Portweiterleitung auf Konflikte. Beispielsweise können Sie den Port von Spring Boot auf 8079 setzen, um Konflikte zu vermeiden: kubectl port-forward svc/spring-boot-skywalking-demo 8079:8080 -n skywalking.
Schritt 2: SkyWalking Kubernetes Event Exporter bereitstellen
Der SkyWalking Kubernetes Event Exporter kann Kubernetes-Ereignisse überwachen, filtern und an das SkyWalking-Backend senden. SkyWalking verknüpft dann diese Ereignisse mit Systemmetriken und zeigt eine Übersicht, wann und wie die Metriken durch die Ereignisse beeinflusst werden.
Falls Sie den SkyWalking Kubernetes Event Explorer mit einem einzigen Befehl bereitstellen möchten, erstellen Sie Konfigurationsdateien im YAML-Format gemäß dieser Anleitung und passen Sie die Parameter in Filtern und Exporteuren an. Anschließend können Sie den Befehl kubectl apply zur Bereitstellung verwenden.
Schritt 3: JMeter zur Erhöhung der Dienstlast einsetzen
Um Leistungsänderungen besser beobachten zu können, müssen Sie die Dienstlast auf Spring Boot erhöhen. Hier verwenden wir JMeter, ein weit verbreitetes Java-Testtool, um die Last zu steigern.
Führen Sie mit JMeter einen Lasttest auf localhost:8079 durch und fügen Sie fünf Threads hinzu, um die Last kontinuierlich zu erhöhen.


Im SkyWalking-Dashboard sehen Sie eine Zugriffsrate von 100% und eine Dienstlast von etwa 5.300 Aufrufen pro Minute (CPM).

Schritt 4: Fehler mit Chaos Mesh injizieren und Ergebnisse beobachten
Nach Abschluss der drei Schritte können Sie über das Chaos Dashboard Stressszenarien simulieren und Leistungsänderungen während der Chaos-Experimente beobachten.

Die folgenden Abschnitte zeigen, wie sich die Dienstleistung unter drei Chaos-Bedingungen verändert:
-
CPU-Last: 10%; Speicherauslastung: 128 MB
Dieses Experiment simuliert geringe CPU-Auslastung. Um Start/Ende des Experiments anzuzeigen, klicken Sie den Schalter rechts im Dashboard. Der Status "Applied" oder "Recovered" wird beim Überfahren der grünen Linien angezeigt.
Zwischen den grünen Linien sinkt die Last auf 4.929 CPM, normalisiert sich aber nach Experimentende.

Test 1 -
CPU-Last: 50%; Speicherauslastung: 128 MB
Bei 50% CPU-Last sinkt die Dienstlast auf 4.307 CPM.

Test 2 -
CPU-Last: 100%; Speicherauslastung: 128 MB
Bei voller CPU-Auslastung sinkt die Dienstlast auf 40% des Normalwerts.

Test 3 Da Linux-Prozessscheduling keine dauerhafte CPU-Belegung erlaubt, verarbeitet die Spring Boot Demo selbst bei voller Last noch 40% der Anfragen.
Zusammenfassung
Durch SkyWalking und Chaos Mesh sehen Sie genau, wann und wie stark Chaos-Experimente die Dienstleistung beeinflussen. Diese Kombination ermöglicht Leistungsbeobachtung unter Extrembedingungen und stärkt Ihr Servicevertrauen.
Chaos Mesh entwickelte sich 2021 stark durch PingCAP-Ingenieure und Community-Mitwirkende. Um unsere Unterstützung weiter zu verbessern und mehr über Ihre Chaos-Engineering-Erfahrungen zu erfahren, laden wir Sie zur Teilnahme an dieser Umfrage ein.
Wenn Sie mehr über Chaos Mesh erfahren möchten, laden wir Sie herzlich ein, der Chaos-Mesh-Community auf GitHub beizutreten oder an unseren Slack-Diskussionen teilzunehmen (#project-chaos-mesh). Falls Sie bei der Nutzung von Chaos Mesh auf Fehler stoßen oder Funktionen vermissen, können Sie Pull Requests oder Issues in unserem GitHub-Repository einreichen.