欢迎参加开源软件供应链点亮计划 - 暑期 2021(以下简称 暑期 2021)是由 中国科学院软件研究所 与 openEuler 社区 共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。我们将联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名。
目录
任务背景
将 ChaosBlade 事件导出到 SkyWalking & Prometheus
通常,系统在运行过程中会发生很多事件,如进程异常、重启、混沌实验等。事件的发生可能会影响系统的稳定性。因此,我们需要输出混沌实验的事件,然后我们可以将事件导入到 SkyWalking 和 Prometheus ,用于后续系统分析统计等场景的使用。
chaosblade-box 支持演练工具 chaos-mesh
chaosblade-box 是一个场景丰富的混沌工程平台,chaosblade-box 的出生就包含了工具市场和拓展演练工具的能力,目前包含演练工具 chaosblade 和 litmuschaos,本次任务我们需要拓展对 chaos-mesh 演练工具的支持。
任务清单
本次“暑期2021”总共有两个任务,分别是:
在上一节已经介绍了任务的背景,下面小节中我们将以“任务一”和“任务二”来区分任务。
任务一
本次任务主要在 chaosblade 和 chaosblade-operator 项目编码即可,Github 地址:
- chaosblade: https://github.com/chaosblade-io/chaosblade
- chaosblade-operator: https://github.com/chaosblade-io/chaosblade-operator
要求的技能
- Golang, Kubernetes
参考资料
任务内容
- 在 chaosblade cli 执行器上下文埋点,将演练创建、演练恢复、Java Agent 挂载等事件导出到 SkyWalking
- 在 chaosblade cli 执行器上下文埋点,将演练创建、演练恢复、Java Agent 挂载等事件导出到 Prometheus
- 在 chaosblade-operator 对 crd 监听器埋点,将 crd 状态的变更事件导出到 SkyWalking 和 Prometheus
实现步骤
- 在 chaosblade exec 包下面分别包含很多执行器有 os、jvm、docker 等,需要对执行器的添加事件监听,来演练执行、演练恢复等事件
- 在 chaosblade-operator 项目下监听了 blade 自定义资源状态的变更,需要将 blade 状态的变更事件导出。
工作量
任务 | 工作量 |
---|---|
了解混沌工程和 ChaosBlade,能够使用 ChaosBlade 对主机和 K8S 注入故障 | 5 |
可以尝试搭建 minikube ,安装 chaosblade-operator,了解 Operator 实现 | 3 |
了解 SkyWalking 和 Prometheus | 5 |
熟悉 Prometheus 的 exporter | 5 |
了解 SkyWalking 的事件导入方式,可自行选择一种方案,参考 ISSUE | 5 |
熟悉 chaosblade 执行器的模型定义 | 3 |
在 chaosblade cli 执行器上下文埋点,将演练创建、演练恢复、Java Agent 挂载等事件导出到 SkyWalking | 5 |
在 chaosblade cli 执行器上下文埋点,将演练创建、演练恢复、Java Agent 挂载等事件导出到 Prometheus | 5 |
在 chaosblade operator 对 crd 监听器埋点,将 crd 状态的变更事件导出到 SkyWalking 和 Prometheus | 5 |
单元测试 | 3 |
集成测试 | 5 |
PR 交付 | 2 |
任务二
本次任务主要在 chaosblade-box 编码即可,Github 地址:https://github.com/chaosblade-io/chaosblade-box ,可以 litmuschaos 是如何接入到 chaosblade-box 的。
要求的技能
- java
参考资料
任务内容
- 添加 chaos-mesh 场景解析
- 添加 chaos-mesh 演练执行器
实现步骤
- 在模块 chaosblade-box-scenario下添加一个 chaosblade-box-scenario-chaosmesh 的实现。
- 在模块 chaosblade-box-invoker 下添加一个 chaosblade-box-invoker-chaosmesh-kubeapi 实现。
工作量
任务 | 工作量 |
---|---|
了解 chaosblade-box,并且能部署和使用 | 5 |
了解 chaos-mesh,能使用 chaos-mesh 注入故障 | 5 |
了解 chaosblade-box 的工具市场设计,考虑如何接入 chaos-mesh | 3 |
熟悉 chaos-mesh 的混沌实验模型和 CRD 定义 | 5 |
在 chaosblade-box 解析 chaos-mesh 的混沌实验模型和 CRD | 5 |
熟悉 chaos-mesh 的演练创建的流程 | 5 |
在 chaosblade-box 创建 chaos-mesh 的演练 | 5 |
单元测试 | 3 |
集成测试 | 5 |
PR 交付 | 2 |
联系方式
- ChaosBlade 钉钉讨论群号:23177705
- 邮箱:chaosblade.io.01@gmail.com