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

news2024/12/22 17:39:28

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.coloradmin.cn/o/614573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黄仁勋台北演讲分享 不论是为了追逐食物而跑,或不被他人当作食物而跑,都要尽量保持奔跑,别缓步前进。

不论是为了追逐食物而跑,或不被他人当作食物而跑,都要尽量保持奔跑,别缓步前进。 2023年5 月 27 日,美国英伟达(Nvidia)公司创始人黄仁勋先生受邀到位于中国台北的台湾大学参加2023年的毕业典礼&#xff0…

天津的每个早点摊儿,都是与清心寡欲对抗的战场

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 粒粒 封面 / 姝琦midjourney 产品统筹 / bobo 录音间 / 声湃轩北京站 作为一个天津人创建的美(健)食(康)播客&#xff0c…

CSS 颜色设置透明度的新姿势

在 CSS 中,我们有很多种方式为元素设置透明度,常见的是给元素设置透明度和给颜色设置透明度,不同的方式将会带来不一样的效果。那么今天,我们就一起来聊聊 CSS 中的不透明度。感兴趣的同学,请继续往下阅读。 设计中的透…

尺度悖论:数据分析必须警惕的坑

I. 尺度悖论的概述 尺度悖论是指在某些系统或现象中,尺度的大小或范围会对其性质、行为或理解产生矛盾或困难的现象。尺度悖论常出现在自然科学、社会科学和哲学等领域中,引发了一系列有关尺度和尺度变化对系统行为的影响的研究。 II. 举3个简单的例子…

Qt编写视频监控系统78-视频推流到流媒体服务器

一、前言 视频推流作为独立的模块,目前并没有集成到视频监控系统中,目前是可以搭配监控系统一起使用,一般是将添加好的摄像头通道视频流地址打开后,读取视频流重新推到流媒体服务器,然后第三方可以从流媒体服务器拉取…

接口幂等性——防止并发重复插入数据

接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。…

chatgpt赋能python:Python如何变为列表

Python如何变为列表 Python是一种高级编程语言,用于快速、轻松地编写软件。它的语法简洁、易于学习,可以用于各种领域,包括Web开发、机器学习和数据科学等。其中,列表是Python的一种基本数据类型,它用于存储一系列相关…

聚观早报 | 皮克斯十年来首次大规模裁员;OpenAI网站访问量大增

今日要闻:皮克斯十年来首次大规模裁员;OpenAI网站访问量大增;华为版ChatGPT将于7月初发布;苹果Siri或将迎来重大调整;罗斯柴尔德减持英伟达 皮克斯十年来首次大规模裁员 迪士尼公司旗下皮克斯动画工作室已裁员 75 人&…

西门子PLC与IO模块之间无线PROFINET通信

在实际系统中,一个车间内PLC与多个IO信号点需要建立通讯,从而提高工作效率,通常距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大且不美观,这种情况下比较适合采用无线通信方式。本方…

百城巡展 | 人大金仓5月联合伙伴释放数字活力奏响发展强音

5月下旬,人大金仓“百城巡展”走过贵阳、苏州、南宁,吸引线上线下逾4400人参与,得到用户和伙伴的高度认可;并携手东软集团股份有限公司、云上比格(贵州)大数据有限公司、数字广西集团有限公司、用友网络科技…

推荐 5 个好玩儿的小项目

近期,每日的开源项目热榜都是 ChatGPT 相关、AI 相关的。说实话,老逛看的也头疼,本期推荐几个不一样的,好玩的小项目。 本期推荐开源项目目录: 1. 在你的 Windows 养小猫 2. 把你的图片生成 ASCII 3. 中国制霸生成器 4…

初始JavaScript

JavaScript 的作用 表单动态验证(密码强度检测)(js产生的最初的目的)网页特效服务端开发(Node.js)桌面程序(Electron)App (Cordova)控制硬件-物联网(Ruff)游戏开发(coco…

chatgpt赋能python:Python如何将字符串首字母大写

Python 如何将字符串首字母大写 在编程中,字符串操作是不可避免的,而往往需要将字符串的首字母大写,例如在处理用户名、标题等信息时,这样做可以提高可读性和美观性。Python作为一种高效、易学易用的编程语言,有很多内…

webpack零基础入门

一、什么是webpack Webpack 是一个现代的 JavaScript 应用程序静态模块打包器 (module bundler)。 它是一个开源的前端工具,可以将各种资源文件(JS、CSS、图片、字体等)打包成一个或多个包,并且能够通过配置选项来实现各种构建需…

基于SpringBoot+Vue的招聘信息管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

Final-v2

算法的定义和特征 什么是算法? 算法是求解某一特定问题的一组有穷规则的集合,它是由若干条指令组成的有穷符号串。 算法的五个重要特性: 确定性:每一条指令都必须有确切的含义。不存在二义性,只有一个入口和出口。可…

基于SpringBoot+Vue的考研资讯平台设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

2023智源大会议程公开丨视觉与多模态大模型论坛

6月9日,2023北京智源大会,将邀请AI领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,你准备好了吗?与会知名嘉宾包括,图灵奖得主Yann LeCun、OpenAI创始人Sam Altman、图灵奖得主Ge…

元组的学习笔记

列表 [] 单身什么是字典 {} 二人世界 python内置的数据结构之一,与列表一样是一个可变序列(可以增删改操作的) 以键值对的方式存储数据,字典是一个无序的序列 -> hash(key) 通过哈希函数来计算存储位置,key一定是不可变的字典的创建 使用花…

国内免费的ChatGPT镜像网址(ChatGPT国内镜像网站大盘点)

ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人的能力。这么强大的工具我们都想体验一下,那么今天就分享几个ChatGPT国内的镜像网址,大家可以直接使用! 1.AiChat 网址入口 多角色多功能可玩性高…