自动化混沌工程 ChaosMeta V0.6 版本发布

2023-11-01 19:28

本文主要是介绍自动化混沌工程 ChaosMeta V0.6 版本发布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

混沌工程 ChaosMeta 的全新版本 V0.6.0 现已正式发布!该版本包含了许多新特性和增强功能,在编排界面提供了包括流量注入、度量等各类节点的支持,可视化支撑演练全流程。解决混沌工程原则中“持续自动化运行实验”的最后一公里问题。

简介

ChaosMeta 是一款面向自动化演练而设计的云原生混沌工程平台。提供了可视化编排调度、数据隔离、多云管理等平台功能,以及丰富的故障注入能力,覆盖演练全生命周期。凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。

新版本特性

新版本中,新增了DNS异常、日志注入等故障能力,并且在可视化编排界面中提供了对流量注入、度量等各类节点的支持,提供自动化混沌工程的支撑能力。

▌无损注入

日志注入是一个简单的故障能力,本质上就是对文件追加文本内容。但是由此延伸的无损注入思想是比较重要的。

顾名思义,无损注入就是希望能在不真正影响业务的情况下进行演练,挖掘出应用的监控告警、止血、自愈等应急流程的不足,是一种风险最小化、非常适合在生产环境进行的演练方式。

无损注入的实现方案一般有两种:

  1. 如果某个应用的监控指标是依赖日志内容而来的,那么通过对应用的日志文件注入相应内容,即可无损验证目标应用的相关应急流程的完善与否;
  2. 直接篡改目标监控项的监控数据(比如CPU使用率),验证后续应急流程是否完善。

下面是两个日志注入的演练场景:

(1)Common Error

平时我们会监控日志文件中的"Error"、"Exception"等组合关键词的数量,以此来判断一个应用状态是否有异常,如果发生了突增,大概率说明应用出现了故障。因此,可以使用日志注入(文件追加)的能力模拟这类故障

image.png

(2)接口请求耗时

出于对监控采集上报的性能影响考虑,有些应用使用的是异步采集的方案,RPC框架把每个接口的请求耗时、返回码输出到日志中,然后由采集Agent从日志文件中异步采集数据上报。

下面是一个消息推送接口的耗时监控采集样例,从日志文件中收集每次接口的耗时数据上报到监控平台:

image.png

image.png

在这种情况下也可以使用日志注入(文件追加)的故障能力模拟请求耗时过大的故障场景,而不用真正对应用注入网络故障。

无损注入在一些只需要快速验证大量应用的监控告警、定位、预案等标准化应急能力的场景上非常高效。

▌自动化运行实验

业界的混沌工程原则为:

  1. 建立一个围绕稳定状态行为的假说
  2. 多样化真实世界的事件
  3. 在生产环境中运行实验
  4. 最小化爆炸半径
  5. 持续自动化运行实验

而其中前四条在行业中都总有办法实现,但是最后这个“持续自动化运行实验”却始终没有较好的落地方案。

当然很多出名的混沌工程项目都有尝试解决,大部分都提供了定时调度执行的产品能力,但是这个定时执行能力是否敢在生产环境中真正大规模使用起来是存疑的。

原因一方面是故障注入是个高危动作,没有足够的前置准入等检查操作,就没有足够的安全感去自动触发;另一方面是一次演练并不仅仅只有“故障注入”,我们往往还需要做很多的“人工分析”的其他工作,比如注入故障前检查目标应用状态、当前环境等是否符合预设条件、流量是否满足,注入故障后,发现定位恢复耗时多少、分析应急效率等。

ChaosMeta 将这类“人工分析”的工作拆解成了不同类型的原子执行任务,分为“故障注入”、“度量执行”、“流量注入”、“等待”等多种类型的节点,然后根据灵活的编排能力组合成各种业务语义的自动化演练场景,下面展示几个简单的样例:

服务高可用常态保鲜

我们对线上应用都有服务高可用的要求,比如要求具备多副本+服务自动负载均衡的能力,定时进行常态演练就是高可用能力持续保鲜的一种保障方式

由于是生产环境,那么我们就不能随随便便就直接自动发起,因为你无法保证某个应用是不是时时刻刻都是多副本可用状态,比如在演练前刚好只有一个副本可用,并且有大量用户流量访问的情况下,你配置的演练自动发起了,那么就会酿成不可估量的后果。

那么这个例子中,就有几个操作,可以增加你自动化演练的信心:确认应用多副本、服务用户流量在可接受范围内、演练后应用能回复到多副本状态

而我们这次演练的目的就是要校验服务的高可用性,所以对应的服务可用性度量也是必须的。

那么只要把所有担忧的因素都配置到编排中了,只要运行结果是成功的,这次演练就是一次符合预期的演练。反之执行失败了再通过告警通知相关负责人介入。就能大大解放在演练中的人力投入

image.png

红蓝攻防自动化

在进行红蓝攻防演练的时候,蓝军一般负责设计场景进行演练,并且最后对红军的应急效率(人员、平台)做出一个尽量客观的评测,以此来牵引红军的防御能力建设方向。

image.png

评判标准常见的一种方式是,判断一场故障中,红军应急的发现、定位、恢复耗时是否分别满足1、5、10分钟内的要求,否则就扣分。既然涉及到“耗时”,那么必然需要一个准确的起始时间点(故障生效)和目标时间点(发现、定位、恢复时刻)。

起始时间点就是达到红军认为形成了故障标准的时刻,而这并不一定是传统意义上故障注入的时刻,比如目标服务承诺保障服务延迟3000ms以下,那么只有网络延时在3000ms以上才会被认为是故障,红军才应该去应急,业务恢复目标同理也是3000ms以下。而如果直接以故障注入操作时刻来算,就会造成很大的误差,甚至这个“故障注入”未必就能真正造成红军认为的故障,所以故障生效度量也是非常必要的一个环节。

image.png

蓝军为了对每次故障的红军应急效率进行评价,需要收集各个应急平台(监控平台、定位平台、自愈平台等)的数据,人工收集分析是一项十分繁重的工作。而在传统的混沌工程平台上只有故障模拟能力,同样一个演练场景,这些“人工操作”的工作都要一次次重复的执行。而 ChaosMeta 正是希望能把这些“人工操作”都配置到平台中,提升演练效率。

网络故障攻防演练

这是一个简单的红蓝攻防演练样例,针对应用在网络延迟过大的场景

既然涉及到网络流量类监控,那么服务流量是一个必要条件,没有服务流量,注入了网络延迟,也不会触发服务延迟过高的告警,因此需要配置一个Mock流量的节点;

而准入检测,度量当前流量水位是否满足预期也是需要的,否则接下来的流程都大概率是不被红军认可的;

image.png

然后剩下的就是度量故障生效点以及业务恢复时间点的了,用来收集数据以便分析应急效率

image.png

未来方向

接下来我们会继续完善各方面的能力

  1. 支持多云、非云管理,即管理跨集群的pod/node以及非k8s机器/裸容器;
  2. 完善度量能力的数据分析能力,当前只能度量出故障生效、定位、恢复等单一时刻,还不具备联合多节点的时刻进行分析(比如:恢复时刻-生效时刻 < 目标耗时);
  3. 支持更多各类节点的原子能力,比如支持mysql、oceanbase、redis等主流开源项目的业务级别故障能力;
  4. 支持一些跟大模型训练稳定性以及推理架构风险相关的故障能力以及度量能力,比如GPU高负载注入。

加入我们

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

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

如果对我们的项目或者设计理念感兴趣,请 star 我们的项目给予支持。

项目 GitHub 地址:https://github.com/traas-stack/chaosmeta

官方文档:https://chaosmeta.gitbook.io/chaosmeta-cn

微信群:请添加负责人(微信号:KingsonKai)邀请入1群,或者扫码入2群

image.pngimage.png

钉钉群:21765030887

image.png

公众号:ChaosMeta混沌工程

公众号.png

这篇关于自动化混沌工程 ChaosMeta V0.6 版本发布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325200

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、