蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布
混沌工程 ChaosMeta 的全新版本 V0.5 现已正式发布!该版本包含了许多新特性和增强功能,为用户提供了支撑混沌工程各个阶段的平台能力,以及降低使用门槛的用户界面。
ChaosMeta V0.5 核心新特性介绍
当前版本主要是发布了平台界面组件(chaosmeta-platform)、度量组件(chaosmeta-measure-operator)以及流量注入组件(chaosmeta-flow-operator)。
▌平台界面
提供产品层操作界面方便用户更友好地使用 ChaosMeta 产品功能,当前产品层功能主要有:
1.空间管理:根据组织或活动隔离数据,确保数据的安全性和隐私性。

2.用户权限管理:为不同角色提供访问权限的控制,可有效管理混沌工程实验的使用。

3.编排实验:通过拖拉拽可视化操作,使实验编排更加友好和灵活,提高用户的工作效率。

4.实验结果:提供实验执行详情的追溯功能,让用户随时了解实验的执行情况和结果,方便用户进行数据分析和决策。

▌度量引擎
当前包括 4 种度量能力:
- monitor:对监控项的值进行预期判断,比如某个机器的 cpu 使用率监控值是否大于90%,默认支持prometheus
- pod:对 pod 相关数据进行预期判断,比如某个应用的 pod 实例数是否大于3
- http:对 http 请求进行预期判断,比如进行指定的 http 请求时,返回状态码是否为200
- tcp:对 tcp 请求进行预期判断,比如测试某个服务器的 8080 端口是否能通
▌流量引擎
当前流量注入的能力只实现了 HTTP 流量类型的注入,后续会逐步补充 RPC、DB client、redis client 等其他类型的流量注入能力。底层实现是基于开源组件 jmeter 实现的,每个流量注入任务启动一个 jmeter 的 job 执行。

ChaosMeta 核心设计理念
ChaosMeta 设计上主要是想要解决下面几个业界内普遍存在的问题:
混沌工程演练各个阶段的能力整合
当前业界主流混沌工程项目主要都是只关注如何制造故障的问题,而经常做演练相关工作的工程师,应该明白每次演练还有以下重复性工作的痛点:检测当前环境是否符合演练预设条件(演练准入)、业务流量是否满足(流量注入)、注入后判断故障效果是否符合预期(故障度量)、是否在预设时间内恢复了业务服务(恢复度量)、复盘分析总结风险点。
基于业界现状和上面的问题分析,结合蚂蚁集团在混沌工程领域的多年经验,ChaosMeta 平台从设计上覆盖了“准入检测”、“流量注入”、“故障注入”、“故障度量”、“恢复度量”、“注入恢复”等各个阶段的技术支撑,解放各阶段的人力。

故障实验设计的经验可复用性
我们在做混沌工程演练前,还有一个会消耗大量人力的工作,那就是在演练实验的设计上。这一部分当前主要还是得依靠人的设计能力,目前很难完全依赖机器去自动设计。但是我们可以把其中的可复用经验系统化抽象出来,整理成册,在对同一类组件进行混沌工程演练的时候,就可以快速复用起来,这个就是风险目录的设计初衷。
风险目录前期主要是以理论的方式开源,后期会以平台能力的方式内置到 ChaosMeta 项目中。

云原生基础设施的环境复杂性
当前大部分公司的基础设施环境都是在 Kubernetes 上的,无论是云自身还是云原生应用的稳定性都是至关重要的,传统的故障注入手段可能难以解决问题。为此我们希望 ChaosMeta 能从设计上解决以下问题:
对 Kubernetes 自身稳定性的故障注入能力
主要是围绕 Kubernetes 自身的稳定性,比如 APIServer、Scheduler 等核心组件,各类资源的状态异常处理流程,Operator 应用的异常等- 平台支持云原生部署ChaosMeta 设计上是基于 operator 开发的云原生架构(详见用户文档),因此天然支持云原生环境的部署

平台支持管理云上容器并进行故障注入
如果使用传统的方式对容器进行故障注入,需要把单机故障注入工具传输到目标容器内并执行命令,但是一般的业务容器的基础镜像都是极简版的,很多命令工具比如 tc、fallocate等都不支持,导致容器故障注入被环境因素受限过大。ChaosMeta 使用“容器化注入”的方式对集群内的 Pod 以及 Node 进行故障注入,单机故障注入工具chaosmetad 支持对宿主机上的容器进行故障注入,而不需要把 chaosmetad 拷贝到容器内,通过在宿主机上选择性进入目标容器的目标 linux namespace,达到使用宿主机的工具对容器的相应 namespace 产生异常的效果

平台支持管理云下容器并进行故障注入
每个公司都还有很多还没上云的业务,这类业务要么是在普通的物理机/虚拟机上部署,要么是在此基础上裸容器启动的(比如 docker 容器)。这个时候也需要平台能支持管理这部分集群外的目标,ChaosMeta 的单机故障注入工具 chaosmetad 支持以 agent 模式启动,定时上报机器的容器信息到平台中,平台可以直接选择集群外的目标下发故障注入任务。

多集群管理
虽然我们推荐每个集群部署一个管控平台,但是仍然有很多用户换机是希望能集中式管理的,ChaosMeta 的平台能力设计上也是支持管理不同集群的 kubeconfig 以及跨集群进行故障注入的。
可自动化的道路
平台技术的最后目标都是希望能解放人力,往自动化、智能化的方向演进的,或许当前还没能完全做到,但是至少需要走在正确的道路上。
ChaosMeta 的自动化混沌工程思想主要是以混沌工程演练的各阶段平台能力为技术支撑,“风险目录”作为理论支撑,使 ChaosMeta 朝着自动化混沌工程的方向逐步演进。
2023 年 roadmap
今年的目标主要是把平台能力进行完善,并且各阶段的基本能力都补全,还会跟其他开源社区(比如 OceanBase、SOFA 等)进行进一步的合作,争取达到 1.0 完整版。
平台能力
- 支持全部编排节点类型的能力
- 内置一些开源组件的通用实验模板
- 提供 Agent 管理界面,管理云上以及云下的物理机以及容器
- 支持跨集群管理
各阶段基本能力
- 流量注入能力,基于 jmeter 提供更多的流量注入能力
- 度量能力,提供更多云原生方向的状态度量能力
- 故障注入能力,主要往组件级别的故障注入能力上演进,比如集成对 OceanBase、MySQL、Redis、Etcd 等开源组件的故障注入能力
- 风险目录正式对外开源理论版本,内置到 ChaosMeta 平台中的能力主要以上述的“通用实验模版”以及“组件级别的故障注入能力”两种方式。
加入我们
作为一个开放的项目,我们认可开源的研发模式,并致力于将 ChaosMeta 社区打造成一个开放和有创造力的社区。后续,所有的研发、讨论等相关工都会在社区透明运行。
我们欢迎任何形式的参与,包括且不限于提问、代码贡献、技术讨论、需求建议等。期待收到社区想法和反馈,以推动项目往前进一步发展。
如果对我们的项目或者设计理念感兴趣,请 star 我们的项目给予支持。
项目 GitHub 地址:https://github.com/traas-stack/chaosmeta
官方文档:https://chaosmeta.gitbook.io/chaosmeta-cn
微信群:请添加负责人好友(微信号:KingsonKai)邀请入群

钉钉群:21765030887

也欢迎大家关注 ChaosMeta 公众号(ChaosMeta混沌工程),项目最新动态我们都会在这里发布。

蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布的更多相关文章
- COMCMS v0.9 版本发布,带前后端的一个响应式企业站
前言:踏入十二月,人生也即将进入下一个阶段. 最近忙于其他,代码也是偶尔更新.目前算是0.9的版本,就是基本上可以完成一个简单的企业站/博客的功能. 主要特点:前台完整演示:文章.产品.留言.界面响应 ...
- 好玩又实用,阿里巴巴开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让问题经常性的发生.在可控范围或环境下,通过不断重复失败过程,持续提升系统的容错和弹性能力. 那么,实施一次高效的混沌工程实验,需要几步呢? 答案:2 步. ① 登陆 Chaos ...
- 在 Ali Kubernetes 系统中,我们这样实践混沌工程
在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定.而混沌工程,是通过注入一些“不确定”因素,象放进了一群淘气的猴子,在系统资 ...
- 一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战.在可控范围或环境下,使用 ChaosBlade 工具,对系统注入各种故障, ...
- [UE4]把工程升级到最新版本
右键UE4工程文件,选择“Switch Unreal Engine version...” 确定后,再次双击打开工程升级到最新版本了.
- 面向云原生的混沌工程工具-ChaosBlade
作者 | 肖长军(穹谷)阿里云智能事业群技术专家 导读:随着云原生系统的演进,如何保障系统的稳定性受到很大的挑战,混沌工程通过反脆弱思想,对系统注入故障,提前发现系统问题,提升系统的容错能力.Ch ...
- China .NET Conf 2019-.NET技术架构下的混沌工程实践
这个月的8号.9号,个人很荣幸参加了China.NET Conf 2019 , 中国.NET开发者峰会,同时分享了技术专题<.NET技术架构下的混沌工程实践>,给广大的.NET开发小伙伴介 ...
- STM32F429的新版用户手册更新记录, 改进、交流(2019-08-18发布V0.9版本)
2019-06-16 发布首版V0.1 2019-06-23 发布V0.2版本 新增章节: 第3章 STM32F429 整体把控 第4章 STM32F429 工程模板建立(MDK5) 第5章 STM3 ...
- [译][ABP vNext]ABP CLI,v0.18版本的新模板和其他功能
ABP CLI,v0.18版本的新模板和其他功能 ABP v0.18已发布, 包含解决的70+个issue,500+次提交 网站更改 abp.io网站完全更新以突出ABP框架的目标和重要功能.文档和博 ...
- Chaos Engineering 混沌工程 Chaos Monkey vs Chaos xxx vs Chaos Blade
Chaos Engineering的历史.原则以及实践https://www.infoq.cn/article/chaos-engineering-the-history-principles-and ...
随机推荐
- 通过nc获取靶机的反弹Shell [靶机实战]
1.环境 Kali:172.30.1.3/24 靶机(Funbox9):172.30.1.129/24 2.信息收集 通过nmap扫描此主机,我们需要获取到开放的端口以及服务的Banner 1 nma ...
- Python日期带时区转换工具类总结
目录 1.背景 2. 遇到的坑 3. 一些小案例 3.1 当前日期.日期时间.UTC日期时间 3.2 昨天.昨天UTC日期.昨天现在这个时间点的时间戳 3.3 日期转时间戳 3.4 时间戳转日期 3. ...
- Docker安装MS SQL Server并使用Navicat远程连接
MS SQL Server简介 Microsoft SQL Server(简称SQL Server)是由微软公司开发的关系数据库管理系统,它是一个功能强大.性能卓越的企业级数据库平台,用于存储和处理大 ...
- 看看Angular有啥新玩法!手把手教你在Angular15中集成报表插件
摘要:本文由葡萄城技术团队于博客园原创并首发.葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. Angular15新特性 Angular框架(以下简称"Angular" ...
- 解决org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource **/**/dao/**Mapper.xml问题
1. 问题分析 出现此问题的原因是资源过滤的问题,编写在DAO包中的XML文件没有被打包. 2. 解决方案 在pom.xml文件中加入如下资源过滤: <!-- 静态资源导出问题 --> & ...
- 怎么利用大厂的API将大段音频转成文本
日常办公中,我们经常要开会和写会议纪要.传统模式下,我们需要非常认真地听会议中每一句话,记下自己认为的核心的话,并在会后经过多次修改形成会议纪要.现在,聪明人已 经不那么干了,借助几百块的讯飞录音笔, ...
- 关于linq Where中的”或者“运算只查询出来满足一种条件的数据的问题,本质是IEnumerable和IQuerable之间的区别
如下代码所示,其中的"query"返回值类型为IQuerable var query = _deviceRepository.GetAll().AsNoTracking() .Wh ...
- Web网页音视频通话之基于sipjs功能扩展
在上一篇开发基础上,已经实现了音视频通话.本文是在此基础上继续完成以下内容 关闭/开启音频 开启/关闭视频 屏幕共享 开启/关闭音频 javaScript /** * 静音 */ mute() { i ...
- Tauri-Admin通用后台管理系统|tauri+vue3+pinia桌面端后台EXE
基于tauri+vite4+pinia2跨端后台管理系统应用实例TauriAdmin. tauri-admin 基于最新跨端技术 Tauri Rust webview2 整合 Vite4 构建桌面端通 ...
- Hexo博客Next主题配置加载优化性能提升
主题源加载优化 把在NexT主题的_config.yml里面的: # Uri of fonts host. E.g. //fonts.googleapis.com (Default) host: 改为 ...