跳至主内容

Chaos Mesh + SkyWalking:为混沌工程提供更佳可观测性

· 1 分钟阅读
Ningxuan Wang
Contributor of Chaos Mesh
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Chaos Mesh + SkyWalking:为混沌工程提供更佳可观测性
Chaos Mesh + SkyWalking:为混沌工程提供更佳可观测性

Chaos Mesh 是一款开源的云原生混沌工程平台。您可以使用 Chaos Mesh 便捷地注入故障并模拟现实环境中可能发生的异常,从而识别系统中的潜在问题。Chaos Mesh 还提供了 Chaos Dashboard 用于监控混沌实验的状态。然而,该仪表板无法让您观察实验中的故障如何影响应用程序的服务性能,这阻碍了我们进一步测试系统并发现潜在问题。

Apache SkyWalking 是一款开源的应用性能监控(APM)工具,专为监控、追踪和诊断云原生容器化分布式系统而设计。它会收集系统中发生的事件并在仪表板上展示,让您直接观察到系统中已发生事件的类型、数量以及不同事件对服务性能的影响。

当您在混沌实验中同时使用 SkyWalking 和 Chaos Mesh 时,就能观察到不同故障如何影响服务性能。

本教程将指导您如何配置 SkyWalking 和 Chaos Mesh,并学习如何利用这两个系统监控事件,实时观察混沌实验对应用程序服务性能的影响。

准备工作

在开始使用 SkyWalking 和 Chaos Mesh 之前,您需要:

至此准备工作已完成,我们可以进入正题。

步骤 1:访问 SkyWalking 集群

安装 SkyWalking 集群后,您可以访问其用户界面(UI)。但此时尚无服务运行,因此在开始监控前,您需要添加服务并配置代理。

本教程以轻量级微服务框架 Spring Boot 为例,构建一个简化的演示环境。

  1. 参考此文档创建 Spring Boot 的 SkyWalking 演示项目

  2. 执行命令 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 进行压力测试,添加五个线程持续增加服务负载。

JMeter 仪表盘 1
JMeter 仪表盘 1

JMeter 仪表盘 2
JMeter 仪表盘 2

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

SkyWalking 仪表盘
SkyWalking 仪表盘

步骤四:通过 Chaos Mesh 注入故障并观察结果

完成上述三步后,即可通过 Chaos Dashboard 模拟压力场景,观察混沌实验中服务性能变化。

Chaos Dashboard 中的 StressChaos
Chaos Dashboard 中的 StressChaos

以下展示三种混沌条件下服务性能的变化:

  • CPU 负载:10%;内存负载:128 MB

    首个混沌实验模拟低 CPU 使用率。点击仪表盘右侧切换按钮可显示实验起止时间。将鼠标悬停在绿色短线上可查看实验处于"已应用"(Applied)或"已恢复"(Recovered)状态。

    在两条绿色短线标识的时间段内,服务负载降至 4,929 CPM,混沌实验结束后恢复正常。

    测试 1
    测试 1

  • CPU 负载:50%;内存负载:128 MB

    当应用 CPU 负载升至 50% 时,服务负载降至 4,307 CPM。

    测试 2
    测试 2

  • CPU 负载:100%;内存负载:128 MB

    当 CPU 使用率达 100% 时,服务负载降至无混沌实验条件下的 40%。

    测试 3
    测试 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。