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 沒有任何關聯。
黑色的
許可麻省理工學院