一种基于Skywalking的应用性能指标告警系统的制作方法

文档序号:30607427发布日期:2022-07-01 22:46阅读:290来源:国知局
一种基于Skywalking的应用性能指标告警系统的制作方法
一种基于skywalking的应用性能指标告警系统
技术领域
1.本发明涉及云计算领域,尤其涉及一种基于skywalking的应用性能指标告警系统。


背景技术:

2.随着云计算技术的发展以及微服务架构的兴起,为了满足日益增长的业务量,系统服务根据不同的维度进行拆分,使得服务不仅能抵挡流量的冲击,又能根据业务进行灵活的扩展。分布式系统在复杂业务中的架构较为复杂,众多服务支撑系统应用的运行,因此一次请求往往需要涉及到多个服务。当请求出现异常时,准确理解系统行为、获取请求链路,以便快速定位故障节点、分析系统性能问题。
3.为了保证系统能提供稳定高效的服务,就需要对应用性能进行告警监控,对服务的各种维度的指标数据进行监控,现有系统对告警规则配置不够灵活,当告警问题来临时,缺少有效通知手段,如何及时、灵活的提供性能告警服务就是需要解决的问题。


技术实现要素:

4.为了解决以上技术问题,本发明提供了一种基于skywalking的应用性能指标告警系统。灵活的自定义告警规则,将各种维度指标数据的告警规则进行统一管理,且支持多种告警通知方式,保证用户准确获取其关注资源的性能监控告警数据。
5.本发明采集端获取应用程序性能指标数据,并将性能指标数据推送到skywalking的观测分析平台,观测分析平台将性能指标数据存储于时序数据库中。通过kapacitor告警引擎处理时序数据库中的性能指标数据,告警引擎根据定义的告警规则进行实时数据处理,对异常状态数据进行告警。本发明的基于skywalking的应用性能指标告警系统,将应用性能监控工具与告警引擎集成,既保证了实时数据的动态监控,又具备可视化配置优点,实现了对性能监控指标数据的高效处理,并及时发出告警通知。
6.本发明的技术方案是:
7.一种基于skywalking的应用性能指标告警系统,包括:
8.(1)管理控制模块,负责应用性能指标告警系统所有子模块的统一任务调度,统一处理应用性能指标数据的上报、分析聚合、查询;应用性能指标告警规则的管理,告警通知任务的调度以及任务查询;
9.(2)消息通知模块,负责将告警消息推送给用户;
10.(3)告警引擎模块,负责应用性能指标数据的告警监控;
11.(4)观测分析平台,负责性能指标的数据转存分析处理。
12.进一步的,
13.消息通知模块提供回调接口供告警引擎调用,告警引擎模块与消息通知模块之间通过api的方式交互,当预设告警规则被触发时由告警引擎模块调用该回调接口;
14.消息通知模块提供数种通知渠道,包括短信、邮件、api;消息通知模块使用多级队
列缓存发送请求,保证通知可靠性和数据完整性。
15.任务队列分为三级队列,根据重试次数的累积依次降级;消息通知最大重试次数为3次,当重试次数超过3次之后,当前告警通知任务将会被持久化到数据库中,并标明的发送状态;用户可以通过管理控制模块查询任务执行情况,清楚的列出成功执行的任务与发送失败的任务,并可针对失败的任务再次开启重试流程,重试发送流程与正常发送流程相同。
16.进一步的,
17.告警引擎模块引入kapacitor作为性能指标数据处理引擎,kapacitor是一个开源框架,用来处理、监控和警告时间序列数据;
18.提供web界面,通过可视化的方式,选取监控资源以及告警规则、规则阈值,完成自定义告警规则的设定,最终通过告警引擎模块生成可被kapacitor处理的tickscript脚本,将tickscript脚本导入kapacitor中,并启用该脚本,由kapacitor执行脚本并实时监控性能指标数据,待时序数据库中数据符合预设告警规则时,则会触发该规则。
19.进一步的,
20.采集端获取应用程序性能指标数据,并将性能指标数据推送到skywalking的观测分析平台,观测分析平台将性能指标数据存储于时序数据库中;
21.通过kapacitor告警引擎处理时序数据库中的性能指标数据,告警引擎根据定义的告警规则进行实时数据处理,对异常状态数据进行告警。
22.管理控制模块通过可视化的操作,配置kapacitor的tick脚本,在脚本中写入告警阈值及规则定义,脚本配置完成后,将脚本推送至告警引擎模块,告警引擎默认开启该脚本,告警引擎实时监控时序数据库中的性能指标数据。若性能指标数据符合告警规则中定义的阈值,则将会触发告警规则,并按照脚本配置的回调接口,将该告警消息通知管理控制模块。
23.管理控制模块收到告警引擎的告警通知后,将会按照规则配置的通知方式,将告警通知用户。消息依次进入队列,一级队列中的消息按照每30秒发送一次的间隔执行,若消息发送失败,则将会进入二级队列,二级队列按照每5分钟发送一次的间隔执行,若消息依旧发送失败,则将会进入三级队列,三级队列按照每30分钟发送一次的间隔执行,最终将消息发送结果及消息内容进行持久化处理。对于失败的消息发送,用户可通过管理控制模块的任务视角查询,并可手动重启任务。
24.再进一步的,
25.具体步骤如下:
26.(1)由采集端获取应用程序性能指标数据;采集端可通过加载探针方式,采集业务系统的链路数据,将链路数据通过grpc的方式推送到skywalking的观测分析平台,由观测分析平台经过分析聚合后,把性能指标数据经分析存储于时序数据库中,将业务数据存储于关系型数据库中;
27.(2)在告警系统中选取监控资源以及告警规则,资源可选择的范围有服务维度、实例维度、接口维度,并针对以上资源选择预设的告警规则,定义其告警阈值,经告警引擎后台处理为可被kapacitor告警引擎处理的tickscript脚本,改脚本中定义了告警的触发规则以及告警触发后的通知api;
28.(3)将tickscript脚本发送到kapacitor告警引擎中,并基于脚本生成任务,并将此任务处于开启状态,开启对应用系统性能指标数据的实时监控,告警引擎定时查询时序数据库中的指标数据;
29.(4)当告警引擎中的预设告警规则被触发后,kapacitor调用告警系统的webhook接口发送该告警;
30.(5)告警系统建立告警通知多级队列,多级根据告警发送时的重试次数区分使用,重试次数越多,队列级别越低;
31.(6)当webhook接口被调用后,告警数据默认被加入一级队列,按照30秒时间间隔,告警系统依次轮询队列中待执行任务,从队列中选取未执行的任务,开启执行状态,将执行的任务数据固化到关系型数据库汇总保存,状态修改为执行中,告警系统调用通知模块,将告警通过邮件、短信方式通知用户;
32.(7)告警通知若出现失败,将告警通知任务加入二级队列,按照5分钟时间间隔,从队列中选取未执行的任务,修改关系型数据库中的任务列表中任务状态,状态修改为执行中,告警系统调用通知模块,将告警通过邮件、短信方式通知用户;
33.(8)告警通知若出现失败,将任务加入三级队列,按照30分钟时间间隔,从队列中选取未执行的任务,修改关系型数据库中的任务列表中任务状态,状态修改为执行中,告警系统调用通知模块,将告警通过邮件、短信方式通知用户;
34.(9)经过多级队列重试后,仍未成功发送的任务将在数据库中进行持久化;用户可以通过任务列表查询到任务的执行结果,可以手动开启失败任务的重试操作,重试发送流程与正常发送流程相同。
35.本发明的有益效果是
36.与传统的告警系统相比,将性能监控指标数据与告警引擎相结合,灵活配置告警规则,动态输出告警通知,支持丰富的通知方式。告警规则支持页面可视化配置,且支持动态启用和停止,可以灵活设置阈值。
37.该系统对维护应用的稳定运行,具有有益效果。当请求出现异常时,准确理解系统行为、获取请求链路,以便可以快速定位出现故障的节点,并且系统性能问题进行深度分析。并将出现的性能问题,通过多种通知方式,及时告知用户,使用户可以及时处理。
附图说明
38.图1是本发明的架构示意图;
39.图2是告警触发通知的流程示意图。
具体实施方式
40.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.在实际的业务环境中,为降低运维成本,提高监控的便利性,通过预先针对性能指标定义告警规则,使大量监控操作交由系统完成,基于告警规则系统产生的告警需要及时
通知到用户,才能保证告警的时效性。告警通知用户的方式需支持多种,可以适应用户在各种情况下的通知需求。
42.为解决上述问题,本发明提供了一种基于skywalking的应用性能指标告警系统,由告警引擎模块、管理控制模块、消息通知模块、观测分析平台组成。实现性能指标数据处理、告警规则阈值配置、任务管理调度、消息推送通知功能。分布式链路系统对准确理解系统行为,降低运维复杂度,带来了诸多益处。
43.如附图1所示,应用性能指标告警系统由以下几个模块组成:
44.(1)管理控制模块
45.(2)消息通知模块
46.(3)告警引擎模块
47.(4)观测分析平台
48.应用性能指标告警系统使用时序数据库和关系型数据库,使用时序数据库存储性能指标数据,使用关系型数据库存储业务数据,观测分析平台负责性能指标的数据转存分析处理。在观测分析平台上有告警引擎模块、消息通知模块,分别负责应用性能指标数据的告警监控以及告警消息的推送给用户。以上所有功能模块均由管理控制模块统一调度执行,各自模块负责任务处理。
49.告警引擎模块,引入kapacitor作为性能指标数据处理引擎,kapacitor是一个开源框架,用来处理、监控和警告时间序列数据。应用性能指标告警系统提供web界面,通过可视化的方式,选取监控资源以及告警规则、规则阈值,完成自定义告警规则的设定,最终通过告警引擎模块生成可被kapacitor处理的tickscript脚本,将tickscript脚本导入kapacitor中,并启用该脚本,由kapacitor执行脚本并实时监控性能指标数据,待时序数据库中数据符合预设告警规则时,则会触发该规则。
50.消息通知模块,提供回调接口供告警引擎调用,告警引擎模块与消息通知模块之间通过api的方式交互,当预设告警规则被触发时由告警引擎模块调用该回调接口。消息通知模块提供多种通知渠道,如短信、邮件、api等通知方式。消息通知模块使用多级队列缓存发送请求,保证通知可靠性和数据完整性。任务队列分为三级队列,根据重试次数的累积依次降级。消息通知最大重试次数为3次,当重试次数超过3次之后,当前告警通知任务将会被持久化到数据库中,并标明的发送状态。用户可以通过管理控制模块查询任务执行情况,清楚的列出成功执行的任务与发送失败的任务,并可针对失败的任务再次开启重试流程,重试发送流程与正常发送流程相同。
51.管理控制模块,负责应用性能指标告警系统所有子模块的统一任务调度,统一处理应用性能指标数据的上报、分析聚合、查询;应用性能指标告警规则的管理,告警通知任务的调度以及任务查询。
52.如附图2所示,本发明的工作步骤如下:
53.(1)由采集端获取应用程序性能指标数据;采集端可通过加载探针等方式,采集业务系统的链路数据,将链路数据通过grpc的方式推送到skywalking的观测分析平台,由观测分析平台经过分析聚合后,把性能指标数据经分析存储于时序数据库中,将业务数据存储于关系型数据库中。
54.(2)在告警系统中选取监控资源以及告警规则,资源可选择的范围有服务维度、实
例维度、接口维度,并针对以上资源选择预设的告警规则,定义其告警阈值,经告警引擎后台处理为可被kapacitor告警引擎处理的tickscript脚本,改脚本中定义了告警的触发规则以及告警触发后的通知api。
55.(3)将tickscript脚本发送到kapacitor告警引擎中,并基于脚本生成任务,并将此任务处于开启状态,开启对应用系统性能指标数据的实时监控,告警引擎定时查询时序数据库中的指标数据。
56.(4)当告警引擎中的预设告警规则被触发后,kapacitor调用告警系统的webhook接口发送该告警。
57.(5)告警系统建立告警通知多级队列,多级根据告警发送时的重试次数区分使用,重试次数越多,队列级别越低。
58.(6)当webhook接口被调用后,告警数据默认被加入一级队列,按照30秒时间间隔,告警系统依次轮询队列中待执行任务,从队列中选取未执行的任务,开启执行状态,将执行的任务数据固化到关系型数据库汇总保存,状态修改为执行中,告警系统调用通知模块,将告警通过邮件、短信等方式通知用户。
59.(7)告警通知若出现失败,将告警通知任务加入二级队列,按照5分钟时间间隔,从队列中选取未执行的任务,修改关系型数据库中的任务列表中任务状态,状态修改为执行中,告警系统调用通知模块,将告警通过邮件、短信等方式通知用户。
60.(8)告警通知若出现失败,将任务加入三级队列,按照30分钟时间间隔,从队列中选取未执行的任务,修改关系型数据库中的任务列表中任务状态,状态修改为执行中,告警系统调用通知模块,将告警通过邮件、短信等方式通知用户。
61.(9)经过多级队列重试后,仍未成功发送的任务将在数据库中进行持久化。用户可以通过任务列表查询到任务的执行结果,可以手动开启失败任务的重试操作,重试发送流程与正常发送流程相同。
62.以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1