AutoChaos est un outil puissant conçu pour injecter le chaos dans divers systèmes (clusters Kubernetes pour l'instant).
L'objectif d'AutoChaos est d'analyser et de simuler le chaos dans les systèmes, aidant ainsi les organisations à identifier les vulnérabilités potentielles, les goulots d'étranglement et les points de défaillance. En soumettant les systèmes à des scénarios de chaos contrôlés, les entreprises peuvent obtenir des informations précieuses sur leur résilience et prendre des décisions d’amélioration éclairées.
AutoChaos utilise LLM pour injecter un chaos contrôlé dans les systèmes. Il peut simuler divers événements chaotiques, tels que des pics soudains d'utilisation, des pannes matérielles, des interruptions de réseau, etc. L'outil mesure la réponse du système à ces événements chaotiques et fournit une analyse détaillée et des visualisations du comportement du système sous contrainte.
sudo apt update
sudo apt install python3.xx python3.xx-dev python3.xx-venv
1 - Cloner ce référentiel
git clone https://github.com/nervousapps/AutoChaos.git
2 - Allez dans le répertoire du repo
cd AutoChaos
3 - Un python venv est recommandé, pour en créer un, dans votre terminal :
python3.xx -m venv autochaos
Et activez-le
source ./autochaos/bin/activate
4 - Installez le package AutoChaos et ses dépendances en exécutant :
pip install -r ./python/requirements.txt
pip install ./python --no-deps
nano ./openai_key.txt
if local_ai_url :
# Change api url to LLM local tool one
openai . base_url = local_ai_url
openai . api_key = "sx-xxx"
else :
# Initialize openai api_key
with open ( "./openai_key.txt" , "r" ) as file :
openai . api_key = ( file . read ()). strip ()
# Systems
k8s_system = K8sSystem ( namespace )
locust_system = LocustSystem ()
# Load system description
initial_state = {
"system_resources" : k8s_system . describe (),
"api_routes" : api_routes ,
"availability_route" : availability_route ,
}
# It is time to do chaos !
chaos = Chaos ([ k8s_system , locust_system ], initial_state )
chaos . chaos ( objective = 10 )
chaos . report ()
# Write the result file
with open (
os . path . join ( f"autochaos.json" ), "w"
) as file :
file . write ( json . dumps ( chaos . messages , indent = 4 ))
nom de l'environnement | description | valeur par défaut |
---|---|---|
K8S_CTX | Contexte K8 | défaut |
FICHIER CLÉ | Chemin d'accès à openai keyfile.txt | ./openai_key.txt |
ESPACE DE NOM | Espace de noms sur lequel le chaos sera appliqué | tous |
AVAILABILITY_ROUTE | Itinéraire pour vérifier la disponibilité du système | Aucun |
API_ROUTES | Les routes sur lesquelles le système Locust effectuera un test de charge doivent être de la forme "/foo/hostname /bar/hostname" | "" |
LOCAL_AI_URL | URL d'une instance locale d'une API compatible avec le package python openAi | "" |
MODEL_NAME | Nom du modèle à utiliser | gpt-3.5-turbo-16k |
NB_ITERATION | Nombre d'itérations du chaos | 5 |
Dans un premier temps, les actions sont définies dans l'invite système (chaos_engineer.txt) comme dans l'exemple suivant :
- DESCRIBE : this action must be used to see the system state during chaos, no arguments required, use it after chaos has begun
- KILL : this action must be used to kill a process, a task, a pod, a node of anything in the system, you have to indicate in this order: the type, the name and the namespace of resource to kill (for example KILL pod kop-123 namespace_1), no talking, no comments
LLM (agissant en tant qu'ingénieur du chaos) choisira une des actions définies et demandera de la faire avec les arguments correspondants, une réponse peut être par exemple :
KILL pod kop-123 namespace_1
Les gestionnaires des actions définies doivent être implémentés dans la classe systèmes qui hérite de auto_chaos.chaos.BaseSystem. Cette classe BaseSytem définit une méthode do_action qui analysera la réponse de l'ingénieur du chaos et appellera le gestionnaire correspondant le cas échéant, sinon elle appellera un gestionnaire par défaut.
L'outil AutoChaos fournit des résultats précis et détaillés sur le comportement du système lors d'événements de chaos. L'analyse inclut des mesures telles que le temps de réponse, les taux d'erreur, l'utilisation des ressources et la stabilité du système. Des visualisations, telles que des tableaux et des graphiques, sont également générées pour aider à visualiser les données et à identifier des modèles ou des anomalies. En analysant les résultats, les entreprises peuvent identifier les faiblesses potentielles et prendre des mesures proactives pour améliorer la résilience et les performances du système.
AutoChaos est un outil puissant pour analyser le chaos dans les systèmes, fournissant aux entreprises des informations précieuses sur leur résilience et leurs vulnérabilités. En simulant des événements de chaos et en analysant la réponse du système, les organisations peuvent prendre des décisions éclairées et prendre des mesures proactives pour améliorer la robustesse de leurs systèmes. Installez AutoChaos dès aujourd'hui et obtenez une compréhension plus approfondie du comportement de vos systèmes sous contrainte.
Ce n'est pas un produit officiel OpenAI. Il s'agit d'un projet personnel et il n'est en aucun cas affilié à OpenAI.
NOIR
Licence MIT