​蚂蚁集团自动化混沌工程 ChaosMeta 正式开源

news/2025/1/18 10:58:20/

ChaosMeta 介绍

ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本,凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。

经过公司内部多年复杂故障演练场景的驱动,XMonkey 在混沌工程领域沉淀了很多独特经验,是蚂蚁集团研发、测试、质量、SRE 等人员进行历史故障演练和挖掘系统潜在风险的重要平台。我们非常希望能将这些经验和业界进行共同探讨与共同演进,为此我们开源了 ChaosMeta。

ChaosMeta 设计上是包含了完整混沌工程生命周期的一站式演练综合解决方案,以帮忙用户快速挖掘业务应用和系统的潜在风险;除此之外,还内置了浓缩蚂蚁集团在技术风险领域多年沉淀的“风险目录”,这是一份对各技术领域的基础通用风险的汇总。

以混沌工程生命周期的平台能力为技术支撑,“风险目录”作为理论支撑,使 ChaosMeta 得以朝着自动化混沌工程演进。

核心特性

混沌工程生命周期

当前业界主流混沌工程项目主要都是只关注如何制造故障的问题,而经常做演练相关工作的工程师,应该明白每次演练还有以下工作的痛点:检测当前环境是否符合演练预设条件(演练准入)、业务流量是否满足(流量注入)、注入后判断故障效果是否符合预期(故障度量)、是否在预设时间内恢复了业务服务(恢复度量)、复盘分析总结风险点。

基于业界现状和上面的问题分析,结合蚂蚁集团在混沌工程领域的多年经验,ChaosMeta 提出了混沌工程生命周期模型,覆盖“准入检测”、“流量注入”、“故障注入”、“故障度量”、“恢复度量”、“注入恢复”等各个阶段的技术支撑,为自动化混沌工程提供技术依据。

风险目录

蚂蚁集团内部每年都会举行公司级大规模红蓝攻防演练活动,面向公司全体业务,并且也有不少业务进行7X24小时演练以及月度常态演练。

演练对象类型覆盖云产品、Kubernetes、Operator 应用、数据库(OceanBase、Etcd等)、中间件(消息队列、分布式调度、配置中心等)、业务应用(交易系统、营销系统等)等。

对于每种类型的应用,总能抽象出一些最通用的公共风险,比如消息队列,会有消息堆积、消息丢失、消息顺序混乱、依赖方网络不稳定等风险;比如交易系统,会有分布式事务、金额一致性、并发冲突等风险。

而“风险目录”正是蚂蚁集团在大型金融互联网架构环境下,多年打磨出来的一份“风险百科全书”,而我们会将和开源界通用的部分内置到 ChaosMeta 项目中,作为自动化混沌工程的理论依据。

丰富的云原生故障注入能力

大规模高频率的演练活动,也推动了各种各样的故障注入能力建设。除了业界常见的系统资源故障、内核故障、网络故障、JVM注入等,我们还提供了丰富的云原生故障注入能力。

比如:给 Kubernetes 集群堆积大量 pending 状态的 pod,拖垮调度系统;给某个资源对象的创建流程注入动态校验 Webhook,延长校验时间,影响创建效率;注入动态变更 Webhook 使特定字段变异;建立大量 Watch&List 链接,加重 APIServer 回调 Operator 的负担等。

云原生架构

ChaosMeta 的核心平台能力是基于 Operator 开发模式实现的,因此天然支持云原生。ChaosMeta 分为三层设计,详见官方文档:

1. 用户层由 chaosmeta-platform 组件构成,其主要任务是降低用户使用的门槛,提供可视化界面,方便用户使用计划、编排、实验配置、实验记录详情等平台功能;

2. 引擎层包含了 ChaosMeta 的远程注入、编排、度量等核心平台能力以及部分云原生故障能力的实现;

3. 内核层主要包含了单机故障注入能力的实现,主要包含了 chaosmetad 组件,提供了常驻 HTTP 服务的方式以及命令行执行的方式,还封装了对应的 daemonset 组件(chaosmeta-daemonset),可灵活搭配不同需求的演练平台。

规划

ChaosMeta 的规划分为平台能力故障注入能力两个主体路线,当前主要任务是把架构图中的主体能力都完成对外版改造进行开放。

▌平台能力

ChaosMeta 平台能力的未来演进分为三大阶段。

第一阶段-人工配置

此阶段的目标是将架构图中的组件都完成对外开放,此时,即可支撑完整的混沌工程生命周期,进入初级自动化混沌工程领域,以“风险目录”作为理论参考,一次人工配置,多次自动执行。

第二阶段-自动化

此阶段下,“风险目录”会发挥更大的价值,它不仅仅给出一类应用会有什么风险,还有对应的预防以及应急建议,并且每一项的评分是多少,而 ChaosMeta 会将“风险目录”集成为通用组件的风险体检套餐,实现一键“体检”能力,输入目标应用信息,直接输出一个风险评分以及风险分析报告。

第三阶段-智能化

探索结合人工智能的方向,自动生成更多未知的风险场景。

▌故障注入能力

以下仅为故障能力分类,具体提供的原子故障能力详见官方文档(欢迎提交issue,提出新能力需求,需求较高的优先提供):

加入 ChaosMeta 社区

作为一个开放的项目,我们认可开源的研发模式,并致力于将 ChaosMeta 社区打造成一个开放和有创造力的社区。后续,所有的研发、讨论等相关工都会在社区透明运行。

我们欢迎任何形式的参与,包括且不限于提问、代码贡献、技术讨论、需求建议等。期待收到社区想法和反馈,以推动项目往前进一步发展。

项目 GitHub 地址:

https://github.com/traas-stack/chaosmeta

官方文档:

https://chaosmeta.gitbook.io/chaosmeta-cn

微信群:添加负责人好友邀请入群

 钉钉群:21765030887

官方公众号:ChaosMeta混沌工程

首发原文:微信公众号文章


http://www.ppmy.cn/news/238828.html

相关文章

Apifox 发请求时如何自动获取Cookie 和 token

介绍 用户登录到网站或 App 是非常常见的的场景,登录成功后一般会返回登录凭证(一般为 Cookie 或者 token),后续其它接口发起请求时会携带 Cookie 或者 token 到服务器进行校验。校验通过,则返回相关的数据&#xff0…

linux防火墙添加端口 (firewalld版)

新开的云服务器,安全组开放之后还不能访问服务,但是内网127.0.0.1:8787可以访问,有可能是8787端口没开放防火墙端口。 查询已经开放的端口 firewall-cmd --list-port如果没看到8787,那就是8787没开放 查询某个端口是…

NXP IMX8M + Ethercat+Codesys工业实时运动控制解决方案

面向边缘计算应用的全新i.MX 8M Plus异构应用处理器,搭载专用神经网络加速器、独立实时子系统、双摄像头ISP、高性能DSP和GPU。 恩智浦半导体宣布推出i.MX 8M Plus应用处理器,进一步丰富其业界领先的产品组合。这是恩智浦首个集成了专用神经处理引擎&…

法兰规格?

RF DN25 20# JB4726 SH3406 CL300 RF WN SCH80 什么法兰? SH3406-96 中国石油化工部钢制管法兰(执行标准) RF是突面(简称一个台) DN25是规格(配管直径是34MM) 20#是材质(碳钢) CL30…

10月12日

创建三个设备节点分别控制三个LED灯 /dev/led1 /dev/led2 /dev/led3 --------------------------------------------------- myled(驱动) ------------------------------------------------- LED1 LED2 LED3 .h #ifndef __MYLED_H__ #define __MYLED_H__typedef struct…

栓1-------

class Solution { public:bool isPowerOfTwo(int n) {return n > 0 && (n & (n-1))0;} };n&n-10 时 n为2的倍数 class Solution { public:bool isPowerOfTwo(int n) {return n > 0 && (n & -n) n;} };n & -n n 也行n为2的倍数 class…

地脚螺钉直径系列_地脚螺钉的作用,地脚螺钉直径规格!

有些消费者可能不知道地脚螺栓是什么,地脚螺栓其实就是埋设在地面或者基础里面,把大地或者基础和机器设备连接起来的工具。下面就随小编来看看什么是地脚螺栓及地脚螺栓施工方法,以供大家参考。 地脚螺栓可分为固定地脚螺栓、活动地脚螺栓、胀…

63 DOM介绍

文章目录 1、DOM概念2、节点类型 1、DOM概念 DOM:Document Object Model,文档对象模型。 作用:是一套规范文档内容的通用型标准。javascript语言与html标签之间沟通的一个桥梁。DOM可以通过JavaScript语言对html文档进行增、删、改、查操作。…