基于SpringCloudAlibaba+Skywalking的全链路监控设计方案
胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号。
基于SpringCloudAlibaba和SkyWalking的全链路监控设计可以从以下几个方面进行。
1.概要设计
1.1 整体架构设计
(1)微服务架构:采用SpringCloudAlibaba作为微服务框架,该框架提供了丰富的微服务开发组件,如配置管理、服务发现、断路器、智能路由等,便于构建和管理微服务应用。
(2)全链路监控:集成SkyWalking作为全链路监控工具,通过其Agent在各个服务实例中采集Trace、Metrics等数据,实现对整个微服务架构的性能监测和追踪。
1.2 监控数据采集
(1)自动探针:SkyWalking的Agent可以自动为Java、.NET等多种语言的应用添加探针,无需修改应用代码,实现无侵入式的监控数据采集。
(2)性能指标采集:采集各个服务的响应时间、吞吐量、错误率等关键性能指标,为后续的性能分析和问题定位提供数据支持。
1.3 监控数据分析与展示
(1)分布式追踪:利用SkyWalking的分布式追踪功能,可以清晰地查看请求在微服务架构中的传播路径和调用关系,帮助开发人员快速定位性能瓶颈和错误。
(2)性能指标分析:对采集到的性能指标进行实时分析,通过图表等方式直观展示系统的运行状态和性能趋势。
(3)服务依赖分析:分析各个服务之间的依赖关系,帮助开发人员了解系统的整体结构和各个组件之间的交互情况。
1.4 告警与通知
(1)自定义告警规则:根据业务需求,设置合适的告警规则,如响应时间超过阈值、错误率过高等情况触发告警。
(2)告警通知:当触发告警规则时,通过邮件、短信等方式及时通知相关人员,以便快速响应和处理问题。
1.5 数据存储与扩展性
(1)数据存储:SkyWalking支持多种数据存储方式,如MySQL、Elasticsearch等,可以根据实际需求选择合适的数据存储方案。
(2)扩展性:随着业务的发展,可以方便地扩展监控范围和增加监控指标,以满足不断变化的监控需求。
综上所述,基于SpringCloudAlibaba和SkyWalking的全链路监控设计可以实现微服务架构下的全面监控和性能分析,帮助开发人员和运维团队更好地管理和维护复杂的分布式应用。
2.详细设计
2.1 SkyWalking如何从SpringCloudAlibaba应用服务中采集监控指标?
SkyWalking从SpringCloudAlibaba应用服务中采集监控指标主要通过以下步骤实现。
2.1.1 Agent部署与配置
(1)首先,需要在目标应用服务中部署SkyWalking的Agent。这个Agent会以字节码注入的方式,将监控代码直接注入到目标应用的代码中,从而实现对程序运行情况的监控和统计。
(2)配置Agent以连接到SkyWalking的后端服务器,确保数据的正确传输。
2.1.2 数据采集
(1)SkyWalking的Agent负责采集服务实例的Trace、Metrics等监控数据。这些数据包括服务调用的链路信息、响应时间、错误率等关键性能指标。
(2)Agent通过字节码技术监控应用的执行情况,例如Java文件运行后,会有一个截断器修改字节码,对应用进行监控。
2.1.3 数据传输与存储
(1)采集到的数据会通过gRPC方式上报给SkyWalking的后端服务器。后端服务器包括OAP(Observability Analysis Platform)和Storage两部分。
(2)OAP负责接收Agent发送的Tracing和Metric的数据信息,然后进行流式分析,将分析得到的结果写入持久化存储。Storage则负责数据的存储,支持多种存储类型,如MySQL、Elasticsearch等。
2.1.4 数据分析与可视化
(1)SkyWalking的Web UI负责提供web控制台,用户可以通过该控制台查看链路信息、各种性能指标以及性能图表等。
(2)通过分析这些数据,开发人员可以快速定位性能瓶颈和问题所在。
总的来说,SkyWalking通过其Agent从SpringCloudAlibaba应用服务中采集监控指标,并通过后端服务器进行数据的传输、存储和分析,最终通过Web UI进行数据的可视化展示。这种全链路监控设计有助于开发人员更好地了解和优化系统的性能。
2.2 SkyWalking是如何清洗监控指标的?
SkyWalking清洗监控指标的过程主要涉及数据保留策略和定时清除过期数据两个方面。以下是清晰的分点表示和归纳。
2.2.1 数据保留策略
(1)SkyWalking提供了数据清理机制,通过配置文件application.yml
中的相关设置,可以定义监控数据的保留时间。
(2)在配置文件中,可以设置不同类型数据的TTL(Time To Live),例如recordDataTTL
、minuteMetricsDataTTL
、hourMetricsDataTTL
、dayMetricsDataTTL
和monthMetricsDataTTL
等,它们分别代表记录数据、分钟度量数据、小时度量数据、天度量数据和月度量数据的存活时间。
(3)当数据超过设定的TTL后,SkyWalking系统会自动清理这些数据,以确保数据库的高效运行和监控数据的实时性。
2.2.2 定时清除过期数据
(1)除了依赖自动TTL清理机制外,SkyWalking还可以通过脚本或定时任务来定期清除过期的监控数据。
(2)例如,可以编写一个清除脚本,连接到SkyWalking使用的存储后端(如Elasticsearch),然后按照日期或其他条件删除旧的数据索引。
(3)定时执行这个清除脚本可以确保过期的监控数据被及时清除,从而释放存储空间并提高查询效率。
2.2.3 SkyWalking是如何处理从微服务中收集过来的监控数据的?
SkyWalking处理从微服务中收集过来的监控数据主要经过以下几个步骤。
1.数据采集
SkyWalking的探针(Agent)与微服务应用集成,无侵入式地收集运行时的各种数据,包括请求响应时间、调用链路、系统资源使用情况等。
2.数据传输
收集到的数据通过HTTP或gRPC等方式发送到SkyWalking的数据收集器(Backend),即SkyWalking的OAP(Observability Analysis Platform)服务器。
3.数据清洗与整合
(1)OAP服务器接收到数据后,会进行数据清洗,去除重复或无效的信息,确保数据的准确性和有效性。
(2)清洗后的数据会被进一步整合,包括将分散的调用链路信息组合成完整的调用链,以及将各个服务的性能指标进行汇总。
4.数据存储
处理后的数据被存储在SkyWalking的数据存储组件中,如Elasticsearch、MySQL等,以供后续分析和查询使用。
5.数据分析和可视化
(1)SkyWalking提供了Web UI用于数据的可视化展示,用户可以通过图形化界面查看和监控应用程序的性能数据。
(2)此外,SkyWalking还支持与其他应用程序性能监控工具集成,如Grafana,以提供更强大的数据分析和可视化能力。
6.告警与通知
(1)SkyWalking可以设置自定义告警规则,当监控数据触发这些规则时(如响应时间超过设定阈值),系统会发送告警通知。
(2)告警通知可以通过邮件、短信等方式及时发送给相关人员,以便快速响应和处理潜在的性能问题。
在整个处理过程中,SkyWalking确保了数据的完整性、准确性和实时性,为开发人员和运维人员提供了全面的微服务性能监控和追踪解决方案。
2.2.4 SkyWalking是如何存储从微服务中收集过来的监控数据的?
SkyWalking存储从微服务中收集过来的监控数据的过程可以归纳为以下几个步骤。
(1)数据收集:SkyWalking通过其agent来收集微服务中的监控数据。这些数据包括指标数据(如请求数量、错误数量、响应时间等)和跟踪数据(用于追踪系统中的请求和调用链路)。
(2)数据传输:收集到的数据会被发送到SkyWalking的后端服务,即Observability Analysis Platform(OAP)。OAP负责接收探针发送的数据。
(3)数据处理:OAP在内存中使用分析引擎对数据进行整合运算。这个分析引擎支持数据聚合、数据分析,并能驱动数据流从探针到用户界面的流程。此外,它还可以分析SkyWalking原生链路跟踪和性能指标,以及第三方来源的数据。
(4)数据存储:处理后的数据会被存储到对应的存储介质上。SkyWalking通过开放的插件化的接口存放数据,目前支持的存储器有Elasticsearch、MySQL、ShardingSphere、TiDB、H2等。由于监控采集的数据量较大,并存在很多的数据检索需求,因此推荐将数据存储到Elasticsearch中。
(5)数据展示:用户界面(UI)负责提供控制台,用于查看链路、服务指标等。UI是一个基于接口高度定制化的Web系统,用户可以可视化查看和管理SkyWalking数据。
到此这篇关于基于SpringCloudAlibaba+Skywalking的全链路监控设计的文章就介绍到这了,更多相关SpringCloudAlibaba Skywalking全链路监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring配置文件解析之BeanDefinitionReader详解
这篇文章主要介绍了Spring配置文件解析之BeanDefinitionReader详解,ApplicationContext.xml配置文件解析成Document对象,真正对xml中元素解析的类是在BeanDefinitionDocumentReader的实现类中来完成的,需要的朋友可以参考下2024-02-02
最新评论