ChaosEater: Fully Automating Chaos Engineering with Large Language Models

📄 arXiv: 2501.11107v2 📥 PDF

作者: Daisuke Kikuta, Hiroki Ikeuchi, Kengo Tajiri

分类: cs.SE, cs.AI, cs.CL, cs.DC, cs.NI

发布日期: 2025-01-19 (更新: 2025-04-16)

备注: 114 pages (7 main), 11 figures. Project page: https://ntt-dkiku.github.io/chaos-eater


💡 一句话要点

ChaosEater:利用大语言模型全自动执行混沌工程

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 混沌工程 大型语言模型 自动化 Kubernetes 分布式系统

📋 核心要点

  1. 现有混沌工程工具依赖手动定义实验和改进系统,成本高昂且效率低下。
  2. ChaosEater利用大语言模型自动化整个混沌工程流程,降低人工干预需求。
  3. 实验表明,ChaosEater能以较低的时间和金钱成本稳定完成混沌工程循环,并得到人工验证。

📝 摘要(中文)

混沌工程(CE)是一种旨在提高分布式系统韧性的工程技术。它通过人为地向分布式系统中注入特定的故障,并观察其响应行为来实现。基于观察结果,可以主动改进系统以应对这些故障。现有的CE工具实现了预定义CE实验的自动执行。然而,定义这些实验以及根据实验结果改进系统仍然是手动操作。为了降低手动操作的成本,我们提出了ChaosEater,一个利用大型语言模型(LLM)自动执行整个CE操作的系统。它根据系统的CE循环预定义了代理工作流,并将工作流中的细分操作分配给LLM。ChaosEater的目标是Kubernetes系统的CE,这些系统通过代码(即基础设施即代码)进行管理。因此,ChaosEater中的LLM执行软件工程任务来完成CE循环,包括需求定义、代码生成、调试和测试。我们通过对小型和大型Kubernetes系统的案例研究来评估ChaosEater。结果表明,它可以稳定地完成合理的单个CE循环,且时间和金钱成本显著降低。CE循环也通过人工工程师和LLM进行了定性验证。

🔬 方法详解

问题定义:论文旨在解决混沌工程中实验定义和系统改进过程高度依赖手动操作的问题。现有方法的痛点在于需要人工专家花费大量时间和精力来设计故障注入策略、分析实验结果并提出改进建议,这限制了混沌工程的普及和应用。

核心思路:论文的核心思路是利用大型语言模型(LLM)的强大能力,构建一个自动化混沌工程系统。通过将混沌工程流程分解为一系列可执行的任务,并分配给LLM驱动的智能体,实现混沌工程的自动化执行和优化。这样可以显著降低人工成本,提高混沌工程的效率和可扩展性。

技术框架:ChaosEater系统采用代理工作流,按照系统的混沌工程循环预定义。该工作流包含多个阶段,例如需求定义、代码生成、调试和测试。每个阶段都分配给一个或多个LLM驱动的智能体,负责执行特定的任务。例如,一个智能体可能负责根据系统描述生成故障注入代码,另一个智能体负责分析实验结果并提出改进建议。

关键创新:该论文的关键创新在于将大型语言模型应用于混沌工程的自动化。通过将混沌工程流程分解为一系列软件工程任务,并利用LLM的自然语言处理和代码生成能力,实现了混沌工程的自动化执行和优化。这与传统的混沌工程工具依赖预定义实验和人工分析有本质区别。

关键设计:论文中没有详细描述具体的参数设置、损失函数或网络结构等技术细节,因为其核心在于利用现有的LLM能力来完成混沌工程任务。关键设计在于如何有效地将混沌工程流程分解为可执行的任务,并设计合适的提示工程(prompt engineering)来引导LLM完成这些任务。此外,如何验证LLM生成的代码和建议的有效性也是一个关键的设计考虑。

🖼️ 关键图片

img_0

📊 实验亮点

案例研究表明,ChaosEater能够稳定地完成合理的混沌工程循环,并显著降低时间和金钱成本。虽然论文中没有提供具体的性能数据,但强调了其在小型和大型Kubernetes系统上的有效性,并通过人工工程师和LLM对CE循环进行了定性验证,证明了其可行性和合理性。

🎯 应用场景

ChaosEater具有广泛的应用前景,可用于自动化测试、持续集成/持续部署(CI/CD)流程以及云原生应用的韧性提升。通过自动化混沌工程,可以帮助企业更有效地发现和修复系统中的潜在问题,提高系统的可靠性和可用性,降低运维成本。未来,该技术有望应用于更复杂的分布式系统和微服务架构。

📄 摘要(原文)

Chaos Engineering (CE) is an engineering technique aimed at improving the resiliency of distributed systems. It involves artificially injecting specific failures into a distributed system and observing its behavior in response. Based on the observation, the system can be proactively improved to handle those failures. Recent CE tools implement the automated execution of predefined CE experiments. However, defining these experiments and improving the system based on the experimental results still remain manual. To reduce the costs of the manual operations, we propose ChaosEater, a system for automating the entire CE operations with Large Language Models (LLMs). It predefines the agentic workflow according to a systematic CE cycle and assigns subdivided operations within the workflow to LLMs. ChaosEater targets CE for Kubernetes systems, which are managed through code (i.e., Infrastructure as Code). Therefore, the LLMs in ChaosEater perform software engineering tasks to complete CE cycles, including requirement definition, code generation, debugging, and testing. We evaluate ChaosEater through case studies on both small and large Kubernetes systems. The results demonstrate that it stably completes reasonable single CE cycles with significantly low time and monetary costs. The CE cycles are also qualitatively validated by human engineers and LLMs.