AutoChaos 是一个强大的工具,旨在向各种系统(目前是 kubernetes 集群)注入混乱。
AutoChaos 的目的是分析和模拟系统中的混沌,帮助组织识别潜在的漏洞、瓶颈和故障点。通过将系统置于受控的混乱场景中,企业可以获得对其弹性的宝贵见解,并做出明智的改进决策。
AutoChaos 利用 LLM 将受控混沌注入系统。它可以模拟各种混乱事件,例如使用量突然激增、硬件故障、网络中断等。该工具测量系统对这些混沌事件的响应,并提供压力下系统行为的详细分析和可视化。
sudo apt update
sudo apt install python3.xx python3.xx-dev python3.xx-venv
1 - 克隆此存储库
git clone https://github.com/nervousapps/AutoChaos.git
2 - 进入 repo 目录
cd AutoChaos
3 - 建议使用 python venv 在终端中创建一个:
python3.xx -m venv autochaos
并启用它
source ./autochaos/bin/activate
4 - 通过执行以下命令安装 AutoChaos 包和依赖项:
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 ))
环境名称 | 描述 | 默认值 |
---|---|---|
K8S_CTX | K8s上下文 | 默认 |
密钥文件 | openai keyfile.txt 的路径 | ./openai_key.txt |
命名空间 | 将应用混沌的命名空间 | 全部 |
AVAILABILITY_ROUTE | 检查系统可用性的路线 | 没有任何 |
API_路由 | Locust 系统将执行负载测试的路由必须采用“/foo/hostname /bar/hostname”形式 | ”” |
LOCAL_AI_URL | 与 openAi python 包兼容的 api 本地实例的 URL | ”” |
型号_名称 | 使用的型号名称 | gpt-3.5-turbo-16k |
NB_迭代 | 混沌迭代次数 | 5 |
首先,在系统提示符(chaos_engineer.txt)中定义操作,如下例所示:
- 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(充当混沌工程师)将选择定义的操作之一并要求使用相应的参数来执行此操作,响应可以是例如:
KILL pod kop-123 namespace_1
已定义操作的处理程序必须在继承自 auto_chaos.chaos.BaseSystem 的系统类中实现。这个 BaseSytem 类定义了一个 do_action 方法,该方法将分析混沌工程师的响应并调用相应的处理程序(如果有),否则它将调用默认处理程序。
AutoChaos 工具可提供有关混沌事件期间系统行为的准确且详细的结果。分析包括响应时间、错误率、资源利用率和系统稳定性等指标。还生成图表和图形等可视化效果,以帮助可视化数据并识别模式或异常。通过分析结果,企业可以识别潜在的弱点并采取主动措施来提高系统的弹性和性能。
AutoChaos 是一个强大的工具,用于分析系统中的混乱情况,为企业提供有关其弹性和漏洞的宝贵见解。通过模拟混沌事件并分析系统的响应,组织可以做出明智的决策并采取主动措施来提高系统的稳健性。立即安装 AutoChaos,更深入地了解系统在压力下的行为。
这不是 OpenAI 官方产品。这是一个个人项目,与 OpenAI 没有任何关联。
黑色的
许可麻省理工学院