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

news/2024/2/29 2:22:18

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文档进行增、删、改、查操作。…

50-23

50题 第23天 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?链接: 力扣.我的代码如下: class Solution {public int climbStairs(int n) {int [] result new int[n];result[0] …

三十二

java基础7 String Buffer类 意义:对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率 注意:StringBuffer不能听过赋值符号对它进行赋值 创建: StringBuffer s new StringBuffe…

三十一

java基础6 修饰符 static static可以修饰类中的属性和方法,被static修饰的属性我们称之为类变量,被static修饰的方法我们称之为类方法。 使用static修饰的成员变量为静态变量,使用static修饰的成员方法为静态方法,二者都可以直接通…

10/3

您的问题是什么?您想知道 10 除以 3 的结果是多少吗?答案是 3.3333333333333335。

十二

这个作业属于哪个课程C语言程序设计 (第三版)这个作业要求在哪里2019春季第十二周作业我的课程目标学会函数与之的结构利用这个作业在哪个具体方面帮助我实现目标了解了一些函数结构的利用参考文献无 一、2019春第十二周作业(基础题&#xff…

14宽的键槽深度多少_国家标准键槽深度

1。 [JB机械标准] T 形槽铣刀和半圆键槽铣刀 产品质量分等(内部使用) JB/T 54860-1999 [佚名][2009年1月15日][0] T 形槽铣刀和半圆键槽铣刀 产品质量分等(内部使用) JB/T 54860-1999 本标准规定了T 形槽铣刀和半圆键槽铣刀在依据JB/T 54854 进行质量等级评定时的AQL 值、周期…

新型抗凝药被欢迎

研发口服新药可降低心房颤动治疗及脑中风与脑出血的发生率,惟提醒风险族群护心也要自我检测脉搏。 心房颤动是心房内不规则电气活动,使心跳又快又乱,有些会出现心悸、晕眩、胸痛等症状,但有些甚至根本感觉不到任何症状。一旦血液在…

外六角螺栓头部尺寸标准

外六角螺栓头部尺寸标准 尺寸 标准 M6 M8 M10 M12 M14 M16 M18 M20 M22 M24 M27 M30 对边S GB30 10 14 17 19 22 24 27 30 32 36 41 46 GB1228 21 27 34 36 41 46 50 GB5782/5783 10 13 16 18 21 24 27 30 34 3…

50-13

50题 第13天 合并K个有序列表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。(昨天题的衍生)链接: 力扣.我的代码如下: /*** Definition for singly-linked list.* public class ListNode {* int val;* Li…

10-DOM

DOM 概念:文档对象模型 document Object Model 作用:提供操作html文档,html标签元素的能力 方法 1. 获取标签元素的方法 getElementById(title)唯一元素 getElementsByClassName()> 类数组(伪数组)类数组 和 数组Array区别1. 类数组…

1290:采药

【题目描述】 辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子&#xff0…

德标螺纹规格对照表_德标DIN934六角螺母,不锈钢六角螺母DIN934

DIN934六角螺母标准与规格 链接来源 本页面来源于如下商品的介绍链接,如需购买具体商品,请点击: DIN934六角螺母:http://www.luosijie.com/list.html?cat_id=130 DIN934六角螺母简述 DIN934六角螺母,又称六角螺帽,螺纹分公制粗牙和细牙两种,产品等级A级和B级,A级用于规…
最新文章