本文主要是介绍Chaos Mesh + SkyWalking:混沌工程更好的可观测性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Chaos Mesh是一个开源的云原生混沌工程平台。您可以使用 Chaos Mesh 方便地注入故障并模拟现实中可能发生的异常,从而识别系统中的潜在问题。Chaos Mesh 还提供了一个 Chaos Dashboard,允许您监控混沌实验的状态。但是,此仪表板无法让您观察实验中的故障如何影响应用程序的服务性能。这阻碍了我们进一步测试我们的系统和发现潜在问题。
Apache SkyWalking是一款开源应用程序性能监控器 (APM),专门设计用于监控、跟踪和诊断云原生、基于容器的分布式系统。它收集发生的事件,然后将它们显示在其仪表板上,使您可以直接观察系统中发生的事件的类型和数量以及不同的事件如何影响服务性能。
在混沌实验中同时使用 SkyWalking 和 Chaos Mesh,可以观察到不同的故障对服务性能的影响。
本教程将向您展示如何配置 SkyWalking 和 Chaos Mesh。您还将学习如何利用这两个系统来监控事件并实时观察混沌实验如何影响应用程序的服务性能。
先决条件
在开始使用 SkyWalking 和 Chaos Mesh 之前,您必须:
- 设置 SkyWalking 集群。
- 使用Helm部署 Chao Mesh 。
- 安装JMeter或其他 Java 测试工具(以增加服务负载)。
第 1 步:访问 SkyWalking 集群
安装 SkyWalking 集群后,您可以访问其用户界面。但是,此时没有服务正在运行,因此在开始监控之前,您必须添加一个并设置代理。
在本教程中,我们以轻量级微服务框架 Spring Boot 为例,构建一个简化的演示环境。
- 在 Spring Boot 中创建 SkyWalking 演示。
- 执行命令
kubectl apply -f demo-deployment.yaml -n skywalking
部署演示。
完成部署后,您可以在 SkyWalking UI 中观察实时监控结果。
注意: Spring Boot 和 SkyWalking 的默认端口号相同:8080。配置端口转发时要小心;否则,您可能会遇到端口冲突。例如,您可以使用类似的命令将 Spring Boot 的端口设置为 8079,kubectl port-forward svc/spring-boot-skywalking-demo 8079:8080 -n skywalking
以避免冲突。
第 2 步:部署 SkyWalking Kubernetes 事件导出器
SkyWalking Kubernetes Event Exports能够观察、过滤和发送 Kubernetes 事件到 SkyWalking 后端。SkyWalking 然后将事件与系统指标相关联,并显示指标何时以及如何受事件影响的概览。
如果您想通过一行命令部署 SkyWalking Kubernetes Event Explorer,请参考此文档创建 YAML 格式的配置文件,然后自定义过滤器和导出器中的参数。现在,您可以使用该命令kubectl apply
部署 SkyWalking Kubernetes Event Explorer。
第 3 步:使用 JMeter 增加服务负载
为了更好地观察服务性能的变化,需要增加 Spring Boot 上的服务负载。在本教程中,我们使用广泛采用的 Java 测试工具 JMeter 来增加服务负载。
使用JMeter进行压力测试localhost:8079
,增加5个线程不断增加服务负载。
Apache JMeter 的用户界面
打开 SkyWalking 仪表板。可以看到访问率为100%,服务负载达到每分钟5300次左右(CPM)。
第 4 步:通过混沌网格注入故障并观察结果
完成以上三个步骤后,您可以使用 Chaos Dashboard 模拟压力场景,观察混沌实验期间服务性能的变化。
混沌网格用户界面
CPU负载:10%;内存负载:128 MB
第一个混沌实验模拟了低 CPU 使用率。要显示混沌实验的开始和结束时间,请单击仪表板右侧的切换按钮。要确定实验是Applied
针对系统还是Recovered
来自系统,请将光标移动到短的绿线上。
在两条短绿线之间的时间段内,服务负载下降到 4,929 CPM,但在混沌实验结束后恢复正常。
第一混沌条件下的服务负载变化
CPU负载:50%;内存负载:128 MB
当应用程序的 CPU 负载增加到 50% 时,服务负载降低到 4,307 CPM。
第二混沌条件下的服务负载变化
这篇关于Chaos Mesh + SkyWalking:混沌工程更好的可观测性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!