Zum Hauptinhalt springen

Chaos Mesh + SkyWalking: Bessere Observability für Chaos Engineering

· 6 Minuten Lesezeit
Ningxuan Wang
Contributor of Chaos Mesh
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Chaos Mesh + SkyWalking: Bessere Observability für Chaos Engineering
Chaos Mesh + SkyWalking: Bessere Observability für Chaos Engineering

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:

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.

  1. Erstellen Sie eine SkyWalking-Demo in Spring Boot, indem Sie diesem Dokument folgen.

  2. Führen Sie den Befehl kubectl apply -f demo-deployment.yaml -n skywalking aus, 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.

JMeter-Dashboard 1
JMeter-Dashboard 1

JMeter-Dashboard 2
JMeter-Dashboard 2

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

SkyWalking-Dashboard
SkyWalking-Dashboard

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.

StressChaos im Chaos-Dashboard
StressChaos im Chaos-Dashboard

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
    Test 1

  • CPU-Last: 50%; Speicherauslastung: 128 MB

    Bei 50% CPU-Last sinkt die Dienstlast auf 4.307 CPM.

    Test 2
    Test 2

  • CPU-Last: 100%; Speicherauslastung: 128 MB

    Bei voller CPU-Auslastung sinkt die Dienstlast auf 40% des Normalwerts.

    Test 3
    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.