一种链路监控系统技术方案

技术编号:20750700 阅读:23 留言:0更新日期:2019-04-03 11:22
本发明专利技术公开了一种链路监控系统,包括:客户端,服务端和监控平台,其中,客户端包括用于从应用的请求中获取链路数据的Sleuth组件;服务端包括用于解析链路数据以获取度量指标数据的Spark组件,用于将链路数据整合成一个完整的链路并将分析后的数据存入数据库的Zipkin组件,用于存储解析后的数据的Cassandra组件和用于存储链路数据的Mysql组件,用于管理推送信息的RabbitMQ组件;监控平台包括用于设置处理规则的输入组件,用于输出数据处理结果的输出组件。本发明专利技术通过Sleuth组件获取链路数据,Spark组件解析链路数据,Zipkin组件整合链路数据,能够快速的处理数据,通过RabbitMQ组件管理推送信息能够实现信息的推送以实现对系统情况的掌控。

【技术实现步骤摘要】
一种链路监控系统
本专利技术涉及互联网系统管理
,尤其是一种链路监控系统。
技术介绍
随着公司的发展壮大,公司开发的应用程序越来越多,各应用程序之间的调用也越来越多;同时,公司的系统建设转向了分布式部署和微服务化,部署的复杂性越来越高,随之而来了一些新问题,典型问题有:1)调用链路变长;2)出现问题的节点定位难度增加;3)服务可用性监控难度增加;4)服务性能监控难度增加;没有合适管理工具和平台贯通连接所有服务,使得查找问题根源需要在多个系统之间切换,宝贵的资源被大量耗费在排查问题的泥潭之中。
技术实现思路
本专利技术旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本专利技术的一个目的是提供一种链路监控系统。本专利技术所采用的技术方案是:第一方面,一种链路监控系统,包括:客户端,服务端和监控平台,其中,客户端包括用于从应用的请求中获取链路数据的Sleuth组件;服务端包括用于解析链路数据以获取度量指标数据的Spark组件,用于将链路数据整合成一个完整的链路并将分析后的数据存入数据库的Zipkin组件,用于存储解析后的数据的Cassandra组件和用于存储链路数据的Mysql组件,用于管理推送信息的RabbitMQ组件;监控平台包括用于设置处理规则的输入组件,用于输出数据处理结果的输出组件。优选地,所述Sleuth组件获取链路数据的具体步骤包括:目标应用获取从浏览器发出的访问请求,记录目标应用的server端的记录点spanA的接收时间;目标应用调用第三方应用的接口以创建记录点spanB并记录第三方应用的Client端的请求发起时间;第三方应用记录Server端接收时间,执行业务代码,记录第三方应用的Server端响应时间,返回响应信息,异步将Server端响应时间推送至服务端;目标应用获取第三方应用的响应信息,记录并将第三方应用的Client端响应时间异步推送至服务端;目标应用完成自身的业务逻辑,记录并将目标应用的server端响应时间异步推送至服务端;整合第三方应用的Server端响应时间、Client端响应时间和目标应用的server端响应时间为链路数据。优选地,所述服务端解析链路数据的具体步骤包括:在一定时间范围内,以父节点为空的条件分析出全部根节点的数据集,以根节点名称作为分组以得到某链路中最长节点的名称、ID和耗时的结果集;分别通过去子节点的方式解析结果集中的每一条链路数据以得到节点的代码运行时间,汇集链路数据、代码运行时间以获取分析后的数据;当链路的总耗时超过阈值则触发预警并通过RabbitMQ组件输出信息。优选地,所述服务端解析链路数据的具体步骤包括:在一定时间范围内,通过把每个节点处理时间减去它的所有子节点处理时间的总和,从此得到每个节点自身代码运行时间;以节点名为组,分析出每一个节点的请求次数,平均处理时间;遍历每组节点来找到每组中的中位值;以分组中节点的处理时间排名来判断节点处理时间是否触发预警。优选地,所述服务端基于Kafka技术,用于根据处理规则处理链路数据和被解析的数据以生成对应数据列表;输出组件将所述数据列表输出。优选地,所述客户端包括还包括用于实现动态采样的采样组件,所述采样组件实现动态采样的步骤包括:通过采样率和蓄水池抽样算法得到一个采样列表,基于AtomicInteger计数器标记待处理的链路数据,当计数器的数据属于采样列表则采用该链路数据。优选地,所述输入组件还用于变更采样率。本专利技术的有益效果是:本专利技术通过Sleuth组件获取链路数据,Spark组件解析链路数据,Zipkin组件整合链路数据,能够快速的处理数据,通过RabbitMQ组件管理推送信息能够实现信息的推送以实现对系统情况的掌控。附图说明图1是本专利技术的一种链路监控系统示意图;图2是本专利技术的链路数据获取流程。具体实施方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例1本实施例提供如图1所示的一种链路监控系统,包括:客户端1,服务端2和监控平台3,其中,客户端1包括用于从应用的请求中获取链路数据的Sleuth组件11;服务端2包括用于解析链路数据以获取度量指标数据的Spark组件21,用于将链路数据整合成一个完整的链路并将分析后的数据存入数据库的Zipkin组件22,用于存储解析后的数据的Cassandra组件23和用于存储链路数据的Mysql组件24,用于管理推送信息的RabbitMQ组件25;监控平台包括用于设置处理规则的输入组件31,用于输出数据处理结果的输出组件32。系统中各个组件:Sleuth(即SpringCloudSleuth):作为客户端的核心,用来收集各类请求的链路信息,能收集Http请求、Dubbo请求、、RabbitMQ、MySQL请求的链路数据。Kafka:作为采集到的链路原始数据处理的消息中间件(即服务端),来管理大批量链路数据的生产和消费(即分析和利用)。Consul(为google开源的一个使用go语言开发的服务发现、配置管理中心服务):作为采样率、分析间隔、超时阈值配置的配置中心,用来储存和动态修改配置。Spark(即ApacheSpark):大数据流式计算组件,用来分析计算链路的原始数据,得到一些最长链路、最耗时链路等度量指标数据;从Kafka获取链路原始数据,并将计算后的数据存入MySQL;同时,若发现链路耗时超过超时阈值时,则会将数据发送到RabbitMQ。Zipkin:是分布式跟踪系统的数据处理组件;它从Kafka获取链路原始数据,并将数据整合成一个完整的链路,具备链路展示和数据分析的功能,并将分析后的数据存入Cassandra。Cassandra:分布式NoSQL数据库,Zipkin能兼容的数据库之一,用来存储链路数据。MySQL:关系型数据库,用来存储Spark分析后的(链路)数据。RabbitMQ:消息中间件,用来管理超时预警通知消息的生产和消费。输入组件包括一般的键盘鼠标等输入器材,也包括数据接口;输出组件包括显示器、数据输出接口等。其中,客户端的设计,主要分为三个部分:链路数据采集、采样率重置、数据推送。(1)链路数据采集:通过Sleuth的核心包,自定义扩展对Dubbo、MySQL采集的支持的扩展包,当项目需要采集某个组件的链路数据时,引入对应的扩展包,使项目做到最低的侵入和提供最灵活的支持。(2)采样率重置:客户端中开启一个定时线程去监控服务端的组件Consul中采样率值的变化,通过Consul的api来获取采样率;当值变化后,不重启项目而重置Sleuth采样率类的配置,以修改采样率。(3)数据推送:当采集到链路数据后,通过使用Kafka的api,建立专用topic,将数据推送给Kafka。应用程序通过引入项目的jar包,集成链路数据采集和发送功能;项目通过Sleuth组件获取到各类请求的链路数据,推送到Kafka,以供消费使用;同时可以从服务端控制的Consul中获取采集的配置信息,进而调整采集率。其中,监控平台的设计,主要是按照项目任务书中,需要展现的各个维度计算后结果,来设计项目结构的,主要分为链路管理和监控管理两个部分:1)链路管理:根据项目任务书,对单位时间内URL请求次数统计、单位时间内节点耗时中位值等本文档来自技高网...

【技术保护点】
1.一种链路监控系统,其特征在于,包括:客户端,服务端和监控平台,其中,客户端包括用于从应用的请求中获取链路数据的Sleuth组件;服务端包括用于解析链路数据以获取度量指标数据的Spark组件,用于将链路数据整合成一个完整的链路并将分析后的数据存入数据库的Zipkin组件,用于存储解析后的数据的Cassandra组件和用于存储链路数据的Mysql组件,用于管理推送信息的RabbitMQ组件;监控平台包括用于设置处理规则的输入组件,用于输出数据处理结果的输出组件。

【技术特征摘要】
1.一种链路监控系统,其特征在于,包括:客户端,服务端和监控平台,其中,客户端包括用于从应用的请求中获取链路数据的Sleuth组件;服务端包括用于解析链路数据以获取度量指标数据的Spark组件,用于将链路数据整合成一个完整的链路并将分析后的数据存入数据库的Zipkin组件,用于存储解析后的数据的Cassandra组件和用于存储链路数据的Mysql组件,用于管理推送信息的RabbitMQ组件;监控平台包括用于设置处理规则的输入组件,用于输出数据处理结果的输出组件。2.根据权利要求1所述的一种链路监控系统,其特征在于,所述Sleuth组件获取链路数据的具体步骤包括:目标应用获取从浏览器发出的访问请求,记录目标应用的server端的记录点spanA的接收时间;目标应用调用第三方应用的接口以创建记录点spanB并记录第三方应用的Client端的请求发起时间;第三方应用记录Server端接收时间,执行业务代码,记录第三方应用的Server端响应时间,返回响应信息,异步将Server端响应时间推送至服务端;目标应用获取第三方应用的响应信息,记录并将第三方应用的Client端响应时间异步推送至服务端;目标应用完成自身的业务逻辑,记录并将目标应用的server端响应时间异步推送至服务端;整合第三方应用的Server端响应时间、Client端响应时间和目标应用的server端响应时间为链路数据。3.根据权利要求1所述的一种链路监控系统,其特征在于,...

【专利技术属性】
技术研发人员:黄崇显张施鹏黄冬冬彭程
申请(专利权)人:深圳市递四方信息科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1