云计算中基于微服务监控系统的自动性能分析方法

发布日期:2022年6月30日
云计算中基于微服务监控系统的自动性能分析方法 云计算中基于微服务监控系统的自动性能分析方法

本内容试读结束

下载后可阅读完整内容,立即下载

随着云计算技术在各个领域的不断深入与发展,众多微服务之间复杂的调用关系以及相互影响也给微服务的数据监控,运行维护带来了新的挑战。目前针对多服务应用的自动伸缩方法一次只能伸缩一个瓶颈微服务,会导致瓶颈转移问题;或者依赖于服务调用图谱的静态性,不能解决动态负载下多服务应用的自动伸缩问题。本文提出了一种云计算环境下基于微服务监控系统的多服务应用自动性能分析方法,均衡地将入口服务的SLA分解为每个服务的响应时间SLO,精准获得每个服务在不超过响应时间SLO的条件下能够服务的最大流量负载和对应资源利用率,为多微服务应用集群伸缩提供了精确性能指标。

用户在部署采用微服务架构的多服务应用[1]之后,会指定一个服务作为入口服务,并为该入口服务的响应时间指定上界作为SLA。为了满足该SLA,在流量高峰期通常需要扩大服务该接口的所有服务的服务实例数量以提高服务处理流量负载的能力,但是水平自动伸缩器仅能考虑到单个服务的RPS 和资源利用率指标(即SLO)来进行对应服务的自动伸缩,而不能考虑到多服务应用中不同服务之间的相互关联性。其面临的问题是,难以确定微服务的性能瓶颈以及目前针对多服务应用的自动伸缩方法[2]一次只能伸缩一个瓶颈微服务,会导致瓶颈转移问题,一些基于测试和性能分析的伸缩算法[3]能够更为准确地把握到负载、SLO 和服务SLA 之间的关系,从而更好地提高资源利用率。然而这些伸缩算法通常需要离线分析和侵入式改造,无法在线分析服务的性能。本文的研究重点就是在构建微服务监控系统的基础上, 将用户为入口服务指定的SLA 分解成为多服务应用中不同服务的SLO,使得自动伸缩器可以根据SLO进行自动伸缩。

2. 微服务监控系统方案设计 为了实时获得多服务应用的相关指标,本文采用Prometheus 来监控多服务应用和Kubernetes 集群状态,搭建了如图1 所示的监控系统。

Prometheus 从不同的Exporter 拉取指标数据,支持不同场景下对应目标的指标暴露。Node Exporter暴露节点的CPU 和内存利用量相关的指标;Kubelet 负责暴露Pod 的CPU 和内存资源利用量相关的指标;Kube-State-Metrics 负责暴露Kubernetes 定义的如Pod、Deployment、StatefulSet 等工作负载计算资源相关的指标。在Istio 服务网格中,服务实例的边车容器便是服务实例流量相关指标的Exporter,通过收集、整理这些数据可以得到不同时间段服务之间的调用关系图谱、服务的流量负载、服务的响应时间等指标。

Kiali 从Prometheus 拉取服务网格中的服务实例的流量指标,梳理出服务调用图谱;Prometheus Adapter 通过API 聚合的方式,从Prometheus 拉取数据来实现Kubernetes 定义的Metrics API,让集群内



相关标签