Chaosd simule des pannes pour tester la solidité de vos applications et services.
Sommaire
Cet article fait partie d'une série à propos du Chaos Engineering.
On dit que tester, c'est douter, mais nous on aime tester. N'est-ce pas ?
Okay, let's go.
En quelques mots, le Chaos Engineering est une pratique qui consiste à introduire des perturbations
dans un système pour observer comment il réagit.
L'objectif est de comprendre comment les systèmes se comportent face à des situations imprévues
, comme des pannes de serveur, des latences réseau ou des comportements erratiques.
L'un des outils les plus utilisés pour ce but est Chaos Mesh. Mon préféré, et aussi le plus simple, est l'un de ses composants. Une des fonctionnalités les plus attrayantes vient sous la forme de chaosd, un utilitaire qui permet d'exécuter ces tests sur les machines, plutôt que dans un cluster Kubernetes.
1 - Injection de pannes ⚠️
Chaosd vous permet d'introduire facilement des pannes dans vos machines virtuelles.
Pour injecter certains tester, chaosd utilise quelques executables specific comme stress-ng
pour stresser les machines ou encore Byteman
pour les pannes JVM.
Voici quelques types de tests que vous pouvez réaliser :
2 - Configuration simple ⚙️
Configurez Chaosd rapidement et facilement, sans avoir à passer des heures sur des réglages compliqués.
3 - Rapports clairs et stockage simple 📊
Chaosd génère des rapports simples et compréhensibles après chaque test.
4 - Executable et serveur ✨ Chaosd peut être lancer en tant qu'exécutable ou serveur qu'on peut contacter avec des requêtes HTTP.
Installer chaosd est assez simple, il vous suffit de telecharger le fichier zipper content l'executable, et les executable de test et voila.
Je vous laisse trouver la derniere version disponible au lien suivant https://github.com/chaos-mesh/chaosd/releases
# Installer Chaosd - étape par étape
# 1. Définir la version de Chaosd à télécharger
export CHAOSD_VERSION=v1.4.0
# 2. Télécharger Chaosd
curl -fsSLO "https://mirrors.chaos-mesh.org/chaosd-$CHAOSD_VERSION-linux-amd64.tar.gz"
# 3. Décompresser le fichier téléchargé
tar zxvf chaosd-$CHAOSD_VERSION-linux-amd64.tar.gz && sudo mv chaosd-$CHAOSD_VERSION-linux-amd64 /usr/local/
export PATH=/usr/local/chaosd-$CHAOSD_VERSION-linux-amd64:$PATH
# if ! grep -q "/usr/local/chaosd-$CHAOSD_VERSION-linux-amd64" ~/.bashrc; then
# echo 'export PATH=/usr/local/chaosd-$CHAOSD_VERSION-linux-amd64:$PATH' >> ~/.bashrc
# echo "Exécuter 'source ~/.bashrc'."
# else
# echo "Chaosd est déjà dans votre PATH."
# fi
Vous pouvez tester votre instalation avec
chaosd version
# Chaosd Version: version.Info{GitVersion:"v1.4.0", GitCommit:"19a157239ebc523c9c6e8e3656c4918a1bc83929",
# BuildDate:"2023-02-08T09:04:17Z", GoVersion:"go1.18.2", Compiler:"gc", Platform:"linux/amd64"}
Rien de plus simple que de lancer la commande :
chaosd attack stress cpu --load 80 --uid chaos-stress-80
# Pour plus d'options, utilisez : chaosd attack stress cpu --help
Cette commande lance un test qui mettra un stress de 80 % sur le CPU.
L'option --uid
vous permet d'assigner un identifiant à votre test, que nous utiliserons plus tard pour arrêter le test avec la commande :
chaosd recover chaos-stress-80
Chaosd nous permet également de tuer des processus volontairement pour des tests. On peut effectuer les actions suivantes :
Le plus intéressant, c'est que kill
dispose de l'option --recover-cmd
, qui permet de spécifier une commande à exécuter pour effectuer un rollback.
❯ chaosd attack process kill -h
kill process, default signal 9
Usage:
chaosd attack process kill [flags]
Flags:
-h, --help help for kill
-p, --process string Le nom du processus ou l'ID du processus
-r, --recover-cmd string La commande à exécuter lors de la récupération de l'expérience
-s, --signal int Le numéro du signal à envoyer (par défaut 9)
Global Flags:
--log-level string le niveau de journalisation de chaosd. Les valeurs peuvent être 'debug', 'info', 'warn' et 'error'
--uid string l'identifiant de l'expérience
Essayons avec NGINX :
chaosd attack process kill --process nginx --recover-cmd "sudo systemctl restart nginx" --uid kill-nginx
NGINX sera alors arrêté, et chaosd recover kill-nginx
exécutera la commande passée à --recover-cmd
pour le redémarrer.
Et voilà ! C'est si simple.
Je reviendrai sur d'autres types de tests dans les articles à venir.
See you !