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_ROUTES | locust 시스템이 로드 테스트를 수행하는 경로는 "/foo/hostname /bar/hostname" 형식이어야 합니다. | "" |
LOCAL_AI_URL | openAi Python 패키지와 호환되는 API의 로컬 인스턴스 URL | "" |
MODEL_NAME | 사용할 모델명 | gpt-3.5-터보-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와 관련이 없습니다.
검은색
MIT 라이센스