Chaos Mesh + SkyWalking:为混沌工程提供更佳可观测性
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Chaos Mesh 是一款开源的云原生混沌工程平台。您可以使用 Chaos Mesh 便捷地注入故障并模拟现实环境中可能发生的异常,从而识别系统中的潜在问题。Chaos Mesh 还提供了 Chaos Dashboard 用于监控混沌实验的状态。然而,该仪表板无法让您观察实验中的故障如何影响应用程序的服务性能,这阻碍了我们进一步测试系统并发现潜在问题。
Apache SkyWalking 是一款开源的应用性能监控(APM)工具,专为监控、追踪和诊断云原生容器化分布式系统而设计。它会收集系统中发生的事件并在仪表板上展示,让您直接观察到系统中已发生事件的类型、数量以及不同事件对服务性能的影响。
当您在混沌实验中同时使用 SkyWalking 和 Chaos Mesh 时,就能观察到不同故障如何影响服务性能。
本教程将指导您如何配置 SkyWalking 和 Chaos Mesh,并学习如何利用这两个系统监控事件,实时观察混沌实验对应用程序服务性能的影响。
准备工作
在开始使用 SkyWalking 和 Chaos Mesh 之前,您需要:
-
按照 SkyWalking 配置指南搭建 SkyWalking 集群
-
通过 Helm 部署 Chaos Mesh
-
安装 JMeter 或其他 Java 测试工具(用于增加服务负载)
-
若只需运行演示环境,请按此指南配置 SkyWalking 和 Chaos Mesh
至此准备工作已完成,我们可以进入正题。
步骤 1:访问 SkyWalking 集群
安装 SkyWalking 集群后,您可以访问其用户界面(UI)。但此时尚无服务运行,因此在开始监控前,您需要添加服务并配置代理。
本教程以轻量级微服务框架 Spring Boot 为例,构建一个简化的演示环境。
-
参考此文档创建 Spring Boot 的 SkyWalking 演示项目
-
执行命令
kubectl apply -f demo-deployment.yaml -n skywalking部署演示项目
部署完成后,您即可在 SkyWalking UI 中观察实时监控结果。
注意: Spring Boot 与 SkyWalking 的默认端口号均为 8080。配置端口转发时需格外小心,否则可能发生端口冲突。例如,您可以通过类似 kubectl port-forward svc/spring-boot-skywalking-demo 8079:8080 -n skywalking 的命令将 Spring Boot 端口设为 8079 来避免冲突。
步骤 2:部署 SkyWalking Kubernetes 事件导出器
SkyWalking Kubernetes 事件导出器 能够监控、筛选 Kubernetes 事件并发送至 SkyWalking 后端。SkyWalking 随后将这些事件与系统指标关联,展示事件何时以及如何影响系统指标的概览视图。
如需单行命令部署 SkyWalking Kubernetes Event Explorer,请参考此文档创建 YAML 格式配置文件,然后在过滤器和导出器中自定义参数。执行 kubectl apply 命令即可部署 SkyWalking Kubernetes Event Explorer。
步骤三:使用 JMeter 增加服务负载
为更清晰观察服务性能变化,需对 Spring Boot 施加服务负载压力。本教程使用广泛采用的 Java 测试工具 JMeter 来增加服务负载。
使用 JMeter 对 localhost:8079 进行压力测试,添加五个线程持续增加服务负载。


打开 SkyWalking 仪表盘,可见访问成功率达 100%,服务负载达到约每分钟 5,300 次调用(CPM)。

步骤四:通过 Chaos Mesh 注入故障并观察结果
完成上述三步后,即可通过 Chaos Dashboard 模拟压力场景,观察混沌实验中服务性能变化。

以下展示三种混沌条件下服务性能的变化:
-
CPU 负载:10%;内存负载:128 MB
首个混沌实验模拟低 CPU 使用率。点击仪表盘右侧切换按钮可显示实验起止时间。将鼠标悬停在绿色短线上可查看实验处于"已应用"(Applied)或"已恢复"(Recovered)状态。
在两条绿色短线标识的时间段内,服务负载降至 4,929 CPM,混沌实验结束后恢复正常。

测试 1 -
CPU 负载:50%;内存负载:128 MB
当应用 CPU 负载升至 50% 时,服务负载降至 4,307 CPM。

测试 2 -
CPU 负载:100%;内存负载:128 MB
当 CPU 使用率达 100% 时,服务负载降至无混沌实验条件下的 40%。

测试 3 由于 Linux 系统的进程调度机制不允许进程持续独占 CPU,即使在 CPU 满载的极端情况下,部署的 Spring Boot 演示应用仍能处理 40% 的访问请求。
总结
通过结合 SkyWalking 与 Chaos Mesh,您可以清晰观察混沌实验何时、在何种程度上影响应用服务性能。这套工具组合让您能在各类极端条件下观测服务表现,从而增强对服务可靠性的信心。
Chaos Mesh 在 2021 年取得长足发展,这得益于 PingCAP 工程师与社区贡献者的不懈努力。为持续提升对多元化用户的支持,并深入了解用户在混沌工程领域的实践经验,我们诚邀您参与本次问卷调查,给予宝贵反馈。
若您希望深入了解 Chaos Mesh,欢迎加入 Chaos Mesh 的 GitHub 社区 或参与我们的 Slack 讨论(#project-chaos-mesh)。若您在使用 Chaos Mesh 时发现任何 bug 或功能缺失,欢迎向我们的 GitHub 仓库 提交 pull request 或 issue。