乐趣区

关于数据库:Chaos-Mesh-SkyWalking打造可观测的混沌工程


title: Chaos Mesh X SkyWalking: 可观测的混沌工程
author:王宁暄
date: 2021-11-29
summary: 本篇文章将分享如何通过将 SkyWalking 和 Chaos Mesh 联合,使用 Event 信息监控,实时理解混沌试验对应用服务性能造成的影响。

tags: [‘Chaos Mesh’]

Chaos Mesh 是一个开源的云原生混沌工程平台,借助 Chaos Mesh,用户能够很不便地对服务注入异样故障,并配合 Chaos Dashboard 实现对整个混沌试验运行状况的监测。然而,对混沌试验运行状况的监控并不能通知咱们应用服务性能的变动。从零碎可观测性的角度来说,咱们可能无奈单纯通过混沌试验的动静理解故障的全貌,这也妨碍了咱们对系统和故障的进一步理解,调试。

Apache SkyWalking 是一个开源的 APM (Application Performance Monitor) 零碎,能够对云原生服务提供监控、跟踪、诊断等性能。SkyWalking 反对收集 Event(事件),可在 Dashboard 中查看分布式系统中产生了哪些事件,并能够直观地观测到不同 Event 对服务性能造成的影响,和 Chaos Mesh 联合应用,便可为混沌试验造成的服务影响提供监控。

本教程将分享如何通过将 SkyWalking 和 Chaos Mesh 联合,使用 Event 信息监控,实时理解混沌试验对应用服务性能造成的影响。

筹备工作

  • 创立 Skywalking 集群,具体能够参考 SkyWalking Readme。
  • 部署 Chaos Mesh,举荐应用 helm 装置。
  • 装置 Java 测试工具 JMeter(其余工具亦可,仅用于减少服务负载)
  • 如果仅作为 Demo 应用,能够参考 chaos-mesh-on-skywalking 这个仓库进行配置

Step 1 – 拜访 SkyWalking 集群

装置 SkyWalking 后,就能够拜访它的 UI 了,但因为还没有服务进行监控,这里还须要增加服务并进行 Agent 埋点设置。本文选用轻量级微服务框架 Spring Boot 作为埋点对象搭建一个繁难 Demo 环境。

能够参考 chaos-mesh-on-skywalking 仓库中的 demo-deployment.yaml 文件创建。之后应用 kubectl apply -f demo-deployment.yaml -n skywalking 进行部署。部署胜利后即可在 SkyWalking-UI 中看到实时监控的服务信息。

留神: 因为 Spring Boot 的端口也是 8080,在端口转发时要防止和 SkyWalking 的端口抵触,比方应用 kubectl port-forward svc/spring-boot-skywalking-demo 8079:8080 -n skywalking

Step 2 – 部署 SkyWalking Kubernetes Event Exporter

SkyWalking Kubernetes Event Exporter 能够用来监控和过滤 Kubernetes 集群中的 Event,通过设置过滤条件筛选出须要的 Event,并将这些 Event 发送到 SkyWalking 后盾,这样就能够通过 SkyWalking 察看到你的 Kubernetes 集群中的 Event 何时影响到服务的各项指标了。如果想要一条命令部署,能够参考此配置创立 yaml 文件,设置 filters 和 exporters 的参数后,应用 kubectl apply 进行部署。

Step 3 – 应用 JMeter 对服务加压

为了达到更好的察看成果,须要先对 Spring Boot 减少服务负载,本文抉择应用 JMeter 这一应用宽泛的 Java 压力测试工具来对服务加压。
通过 JMeter 对 host:8079 进行压测,增加 5 个线程继续进行加压。


通过 SkyWalking Dashboard 能够看到,目前拜访成功率为 100%,服务负载大概在 5300 CPM (Calls Per Minute)。

Step 4 – Chaos Mesh 注入故障,察看成果

做好了这些筹备工便能够应用 Chaos Dashboard 进行压力场景模仿,并在试验过程中察看服务性能的变动。

以下应用不同 Stress Chaos 配置,观测对应服务性能变动:

  • CPU 负载 10%,内存负载 128 MB。

混沌试验开始和完结的工夫点标记能够通过右侧开关显示在在图表中,将鼠标移至短线处能够看到是试验的 Applied 或 Recovered。能够看到两个绿色短线之间的时间段里,服务解决调用的的性能升高,为 4929 CPM,在试验完结后,性能恢复正常。

  • CPU load 减少到 50%,发现服务负载进一步升高至 4307 CPM。

  • 极其状况下 CPU 负载达到 100%,服务负载降至无混沌试验时的 40%。

因为 Linux 零碎下的过程调度并不会让某个过程始终占据 CPU,所以即便是在 CPU 满载的极其状况下,该部署的 Spring Boot Demo 仍能够解决 40% 的拜访申请。

小结

通过 SkyWalking 与 Chaos Mesh 的联合,咱们能够清晰的察看到服务在何时受到混沌试验的影响,在注入混沌后服务的体现性能又将如何。SkyWalking 与 Chaos Mesh 的联合使得咱们轻松地察看到了服务在各种极其状况下的体现,加强了咱们对服务的信念。

Chaos Mesh 在 2021 年成长了许多。为了更多地理解用户在实际混沌工程方面的教训,以便继续欠缺和晋升对用户的反对,社区发动了 Chaos Mesh 用户问卷调查,点击链接即可参加考察,谢谢!
https://www.surveymonkey.com/r/X78WQPC

欢送大家退出 Chaos Mesh 社区,退出 CNCF Slack (slack.cncf.io) 底下的 Chaos Mesh 频道: project-chaos-mesh,一起参加到我的项目的探讨与开发中来!大家在应用过程发现 Bug 或缺失什么性能,也能够间接在 GitHub (https://github.com/chaos-mesh) 上提 Issue 或 PR。

退出移动版