Aller au contenu principal

Chaos Mesh + SkyWalking : Une meilleure observabilité pour le chaos engineering

· 6 minutes de lecture
Ningxuan Wang
Contributor of Chaos Mesh
Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Chaos Mesh + SkyWalking : Une meilleure observabilité pour le chaos engineering
Chaos Mesh + SkyWalking : Une meilleure observabilité pour le chaos engineering

Chaos Mesh est une plateforme open source d'ingénierie du chaos cloud native. Vous pouvez l'utiliser pour injecter facilement des pannes et simuler des anomalies susceptibles de survenir en production, ce qui vous permet d'identifier les problèmes potentiels de votre système. Chaos Mesh propose également un Chaos Dashboard pour surveiller l'état des expériences de chaos. Cependant, ce tableau de bord ne permet pas d'observer comment les pannes affectent les performances des applications, ce qui limite notre capacité à tester en profondeur nos systèmes et à identifier des problèmes cachés.

Apache SkyWalking est un moniteur de performances d'applications (APM) open source spécialement conçu pour surveiller, tracer et diagnostiquer des systèmes distribués cloud native basés sur des conteneurs. Il collecte les événements système et les affiche sur son tableau de bord, vous permettant d'observer directement le type et le volume d'événements dans votre système, ainsi que leur impact sur les performances.

Lorsque vous combinez SkyWalking et Chaos Mesh pendant des expériences de chaos, vous pouvez observer précisément comment différentes pannes impactent les performances de service.

Ce tutoriel vous montre comment configurer SkyWalking et Chaos Mesh. Vous apprendrez aussi à exploiter ces deux systèmes pour surveiller les événements et observer en temps réel l'impact des expériences de chaos sur les performances des applications.

Préparation

Avant d'utiliser SkyWalking et Chaos Mesh, vous devez :

Vous êtes maintenant prêt à passer à l'action.

Étape 1 : Accéder au cluster SkyWalking

Après l'installation du cluster SkyWalking, vous pouvez accéder à son interface utilisateur (UI). Aucun service n'étant actif à ce stade, vous devez en ajouter un et configurer les agents avant de commencer la surveillance.

Dans ce tutoriel, nous utilisons Spring Boot, un framework de microservices léger, pour construire un environnement de démonstration simplifié.

  1. Créez une démonstration SkyWalking dans Spring Boot en vous référant à ce document

  2. Exécutez la commande kubectl apply -f demo-deployment.yaml -n skywalking pour déployer la démonstration

Après le déploiement, vous pouvez observer les résultats de surveillance en temps réel dans l'interface SkyWalking.

Remarque : Spring Boot et SkyWalking utilisent tous deux le port par défaut 8080. Soyez vigilant lors du port forwarding pour éviter les conflits. Par exemple, configurez le port de Spring Boot sur 8079 avec une commande comme kubectl port-forward svc/spring-boot-skywalking-demo 8079:8080 -n skywalking.

Étape 2 : Déployer SkyWalking Kubernetes Event Exporter

L'Exportateur d'Événements Kubernetes SkyWalking permet de surveiller, filtrer et envoyer les événements Kubernetes vers le backend SkyWalking. SkyWalking associe ensuite ces événements aux métriques système et affiche une vue d'ensemble montrant quand et comment les métriques sont impactées par les événements.

Pour déployer l'Exportateur d'Événements Kubernetes SkyWalking en une seule commande, consultez ce document pour créer des fichiers de configuration au format YAML, puis personnalisez les paramètres dans les filtres et exportateurs. Utilisez ensuite la commande kubectl apply pour déployer l'exportateur.

Étape 3 : Utiliser JMeter pour augmenter la charge des services

Pour mieux observer les variations de performance des services, augmentez la charge sur Spring Boot. Dans ce tutoriel, nous utilisons JMeter, un outil de test Java largement adopté, pour simuler cette charge.

Effectuez un test de stress sur localhost:8079 avec JMeter en ajoutant cinq threads pour augmenter continuellement la charge.

Tableau de bord JMeter 1
Tableau de bord JMeter 1

Tableau de bord JMeter 2
Tableau de bord JMeter 2

Ouvrez le tableau de bord SkyWalking. Vous constaterez un taux d'accès de 100% et une charge d'environ 5 300 appels par minute (CPM).

Tableau de bord SkyWalking
Tableau de bord SkyWalking

Étape 4 : Injecter des pannes via Chaos Mesh et observer les résultats

Après ces trois étapes, utilisez le Chaos Dashboard pour simuler des scénarios de stress et observer l'impact sur les performances pendant les expériences de chaos.

StressChaos sur le Chaos Dashboard
StressChaos sur le Chaos Dashboard

Les sections suivantes décrivent l'évolution des performances sous trois conditions de chaos différentes :

  • Charge CPU : 10% ; mémoire : 128 Mo

    La première expérience simule une faible utilisation CPU. Pour visualiser le début et la fin de l'expérience, cliquez sur le bouton d'activation à droite du tableau de bord. Pour vérifier si l'expérience est Applied (appliquée) ou Recovered (récupérée), survolez la ligne verte courte.

    Entre ces deux marqueurs, la charge de service descend à 4 929 CPM mais revient à la normale après l'expérience.

    Test 1
    Test 1

  • Charge CPU : 50% ; mémoire : 128 Mo

    Lorsque la charge CPU atteint 50%, la charge de service chute à 4 307 CPM.

    Test 2
    Test 2

  • Charge CPU : 100% ; mémoire : 128 Mo

    À pleine charge CPU, la charge de service tombe à seulement 40% de sa valeur normale.

    Test 3
    Test 3

    Le système de planification des processus Linux empêchant une monopolisation totale du CPU, le démonstration Spring Boot parvient néanmoins à traiter 40% des requêtes même dans ce scénario extrême.

Conclusion

En combinant SkyWalking et Chaos Mesh, vous visualisez précisément quand et dans quelle mesure les expériences de chaos affectent les performances des applications. Cette intégration vous permet d'observer le comportement des services dans des conditions extrêmes, renforçant ainsi votre confiance dans leur résilience.

Chaos Mesh a considérablement évolué en 2021 grâce aux efforts constants des ingénieurs PingCAP et des contributeurs communautaires. Pour poursuivre notre amélioration et mieux comprendre votre expérience du chaos engineering, nous vous invitons à répondre à cette enquête et partager vos précieux retours.

Si vous souhaitez en savoir plus sur Chaos Mesh, nous vous invitons à rejoindre la communauté Chaos Mesh sur GitHub ou nos discussions Slack (#project-chaos-mesh). Si vous rencontrez des bogues ou des fonctionnalités manquantes lors de l'utilisation de Chaos Mesh, vous pouvez soumettre vos pull requests ou signaler des problèmes sur notre dépôt GitHub.