实时监控预警系统的制作方法

文档序号:10572535阅读:803来源:国知局
实时监控预警系统的制作方法
【专利摘要】本发明公开了一种实时监控预警系统,其包括Elasticsearch集群模块、监控休眠模块、预警方式模块、配置模块、动态监控页面加载模块,Elasticsearch集群模块、监控休眠模块和配置模块两两连接,预警方式模块、动态监控页面加载模块分别与配置模块连接。本发明能够给用户提供一整套高质量的服务体系,保证生产环境上,所有程序和机器都能正常运转,同时对整个服务体系中的所有程序进行实时的监控,及时发现线上问题,通知到相关人员,用最快的速度去修复,从而提供给用户一个高可靠高质量的服务。
【专利说明】
实时监控预警系统
技术领域
[0001]本发明涉及一种预警系统,特别是涉及一种实时监控预警系统。
【背景技术】
[0002]随着公司的飞速发展,我们的服务越来越好,同时也意味这我们的业务逻辑越来越复杂,近百个程序运行在上百台的云服务器上,提供了一整套的服务,任何一个程序出错,都会影响我们整个服务的质量,如何去管理监控如此庞大的系统,成为了一个难题。

【发明内容】

[0003]本发明所要解决的技术问题是提供一种实时监控预警系统,其能够给用户提供一整套高质量的服务体系,保证生产环境上,所有程序和机器都能正常运转,同时对整个服务体系中的所有程序进行实时的监控,及时发现线上问题,通知到相关人员,用最快的速度去修复,从而提供给用户一个高可靠高质量的服务。
[0004]本发明是通过下述技术方案来解决上述技术问题的:一种实时监控预警系统,其包括Elasticsearch集群模块、监控休眠模块、预警方式模块、配置模块、动态监控页面加载模块,Elasticsearch集群模块、监控休眠模块和配置模块两两连接,预警方式模块、动态监控页面加载模块分别与配置模块连接。
[0005]优选地,所述Elasticsearch集群模块用来存储和索引日常的监控数据以及做大数据分析和可视化数据展示。
[0006]优选地,所述监控休眠模块在某个监控触发警报后休眠三十分钟,如果存在异常情况,再次警报并休眠三十分钟,循环下去。
[0007]优选地,所述预警方式模块通过短信、语音电话、邮件、音频的方式通知到相关负责人。
[0008]优选地,所述配置模块共九张表,配置了所有监控所需数据,实现了高可配系统。
[0009]优选地,所述动态监控页面加载模块通过访问链接及监控配置数据,动态生成所要显示的动态监控页面返回给用户。
[0010]本发明的积极进步效果在于:本发明具有以下优点:
一、实现可视化;
二、具有预警能力;
三、可配置;
四、具有尚可用、尚可靠、尚效率的优点;
五、可维护性强。
【附图说明】
[0011]图1为本发明的模块图。
【具体实施方式】
[0012]下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0013]如图1所示,本发明实时监控预警系统包括ElasticsearcKElasticSearch是一个基于Lucene的搜索服务器)集群模块1、监控休眠模块2、预警方式模块3、配置模块4、动态监控页面加载模块5,ElastiCSearCh集群模块1、监控休眠模块2和配置模块4两两连接,预警方式模块3、动态监控页面加载模块5分别与配置模块4连接。
[0014]Elasticsearch集群模块I用来存储和索引日常的监控数据,用来做大数据分析和可视化数据展示。
[0015]监控休眠模块2在某个监控触发警报后会休眠三十分钟,如果存在异常情况,再次警报并休眠三十分钟,循环下去。
[0016]预警方式模块3通过短信、语音电话、邮件、音频等方式通知到相关负责人。
[0017]配置模块4共九张表,配置了所有监控所需数据,实现了高可配系统。
[0018]动态监控页面加载模块5通过访问链接及监控配置数据,动态生成所要显示的动态监控页面返回给用户。
[0019]高可配是整个系统的核心部分,能够随着需求的不断增加,实现不停服务,不改代码,在三分钟内完成一个监控的需求,这就需要我们的监控系统的各个模块都足够的通用,配置信息足够的丰富,最终我们实现的是:自己写监控脚本(sql、jira查询语句、es查询语句),支持切换数据源、动态更改脚本中有规律的时间变量、汇总聚合等;监控任务的探测时间间隔自定义,前台某一监控图表加载数据源时间间隔自定义;每个图表的样式加载自定义,采用继承数据结构,减少冗余和增加可维护性(图表的标题、大小、数值刻度、字体等属性);可以通过配置增加监控页面,每个监控页面中的所有监控图表的显示位置等都支持配置;每个监控根据从后台实时请求过来的监控数据,根据配置动态展示不同的样式,正常显示绿色数值,一般是蓝色数值,异常为红色数值;如果监控到异常数据,后台返回音频文件,由前台播放提醒监控人员,每播放一次,休眠三十分钟;如监控到异常数据,可以根据该异常查询到需要通知某些具体的负责人,通知每个人时,从配置中加载通知方式,如电子邮件、短信。语音电话等;通过电子邮件、短信。语音电话等方式通知相关负责人时,通知内容由系统根据监控脚本及监控图表再加上实时的监控数据,自动生成一份精确地警报消息,通知到相关人员,每个相同的错误,触发警报一次后,会休眠三十分钟。
[0020]监控是不断的随着我们系统变化而变化的,要设计的足够的通用,才能适应各种场景,而不至于后期需要不断地改动代码来适应新的需求,也需要考虑到后期的维护问题,监控的需求会越来越多,也就意味着配置也会越来越复杂。所以需要合理的设计整个配置的数据结构,将来变动的时候,维护起来要足够的方便。
[0021]为了减少冗余和易维护性,采用继承的方式设计数据表,通用的样式抽取到上层; 所有可以变化的属性都抽取到配置中,为了应对今后可能的需求;
有些复杂的配置,可以简单定义为字符串,程序来解析特定的含义,减少数据库的设计复杂度。
[0022]简单介绍下,当前的配置设计,主要分为几大类:
仪表盘样式表:通用样式表,特殊样式表;(两张表继承,外键关联);
柱形图样式表:通用样式表,特殊样式表;(两张表继承,外键关联);
监控页面表:监控页面,配置页面的各种属性,比如:名字,动态链接、背景等;
监控图表:仪表盘、柱状图、柱状图中的某个柱;
通知人表:警报人通知表,记录手机号、邮箱等信息;
监控实时任务表:记录了各种脚本,用来实时监控系统的状态。
[0023]监控有很多页面,因为我们的配置做的足够灵活和细腻,走的是同一套逻辑但是加载出来的页面却是不同部门所定制的专属监控页面,这就要求前台页面的所有div和图表都要根据配置去动态的加载,所有的实时监控数据的js函数也要动态的生成,主要分为以下几大部分,分别介绍下设计思路。
[0024]第一部分:监控页面的动态配置实现创建和修改。
创建:我们在监控页面表中增加一条记录,在刷新配置后,监控列表中会动态更具identificat1n去构建一个动态的监控页面的链接,这个就是创建的监控页面了 ;
修改:我们可以修改已经存在的监控页面的各种属性,比如动态的链接、背景、大标题等各种属性;
删除:直接删除该记录,程序会自动从监控列表中移除改页面的信息,所有属于该页面的监控会失效。
[0025]第二部分:仪表盘根据配置动态生成。
[0026]每个监控页面会有几十个监控仪表盘,我们如何自定义去显示这些个性化的监控图表,并且会随着系统状态情况去动态的改变自己的样式,展示给监控人员,主要有以下几个要实现的地方:
第一、首先我们要知道显示哪个监控页面,我们根据加载动态页面的url,去缓存在程序中的配置中心拿到本健康页面的所有监控仪表盘,通过jsp页面动态的将所有属性一一对应给监控仪表盘;
第二、有些复杂的变化样式,需要我们根据具体的仪表盘配置去动态生成js代码来实现,由浏览器根据我们实时加载的监控数据帮我们展示实时的监控表盘样式;
第三、几十个监控表盘,如何个性化的展示出来,也就是显示的位置如何设计,我们通过配置每个仪表盘的大小生成该图表,再根据配置中的图表中心点x,y落在屏幕上的比例来显不改图表。
[0027]第三部分:柱状图根据配置动态生成。
[0028]监控页面中柱状图的动态生成相对麻烦一点,一个柱状图是由多个柱状组合而成的,还有纵横坐标轴,每个柱状还要动态的根据其实时的监控数据来展示不同的样式,纵横坐标轴的数值刻度及多个异步的数据源加载,几乎所有的html和js都是动态生成的,主要有以下几个要实现的地方:
一、每一个柱状图,我们首先要根据它的配置,动态的生成一个div,位置大小都要根据配置生成好;
二、在该div上生成柱状图,根据配置加载纵横坐标的配置; 三、在该柱状图上根据配置加载所有的条形柱,显示到相应的位置;
四、每个条行柱根据配置,动态的生成其特有的js,实现根据实时监控数据动态展示其样式。
[0029]第四部分:异步加载监控数据的函数动态生成。
[0030]实时监控,也就意味着,监控可视化的数据是不断的在后台异步加载过来的,因为监控页面都是动态生成的,所以页面中的js代码,大部分都要动态生成,以适应不同的监控页面,所有监控图表的数据源都是不一样的,要想实现这个功能,我们的设计思路如下:
后台提供一个统一的在加载实时监控数据的接口,需要很多的参数来判断,请求的是哪些具体数据;前台异步加载的时候,需要携带足够的信息来标识自己所需要请求的数据源,加载成功的回调函数,还需要修改图表的数据;所有的图表的动态生成和js的动态生成需要关联上,异步加载函数中需要知道自己服务哪个图表,需要加载哪些数据,需要回调图表的哪些方法,以正确的显示实时的系统数据。
[0031]配置中会有很多的监控脚本,涉及很多的领域,我们通过一定的标识,由程序的来判断切换运行通道,按照配置中的详细规定,去执行该脚本并将数据缓存起来,提供给多个客户端,避免重复执行。
[0032]为了高可用性,我们每个脚本都采用了一个定时器去执行,各个定时器任务间相互独立,按照配置中的要求去执行脚本,具体如下:
我们拿到所有监控任务的脚本,每个脚本分配一个timer,独立的运行;根据配置自动切换到对应的脚本执行接口,定时获取系统的当前状态;提供一个可以执行多中脚本都服务,比如sql、jql、es脚本等;在运行各个timer前,随机休眠一段时间,均衡系统各个时间的压力;按照监控任务中的配置,自动切换到对应的数据源;允许一个监控任务返回多个监控作业的结果(二维表结构)。
[0033]所有的监控脚本按照配置不断的执行,一些脚本返回的结果可能很多,但是我们监控的所用到的数据就几个,我们会通过配置,构造出一个有用的结果集,将没用的数据丢掉,有用的存在一个三层嵌套的map中,方便我们前端来取数据:
有很多用户在使用监控页面,我们将每次最新的监控脚本跑出来的数据,根据有用集,缓存在一个三层嵌套的map集中;前端请求数据直接从缓存的结果集中去拿,这样不管多少用户在使用,也不会增加我们系统的压力,只是拿已经缓存好的数据;前台会根据情况,允许一次请求多个监控的数据。
[0034]监控任务的配置是包含了一些脚本的具体执行方案,监控的敏感值在每一个具体的监控图表中配置的,做到了完全的分离,这样完全面向模块的开发,内部的逻辑比较清晰,我们如何去监控异常情况的警报,需要我们程序去根据正两快的配置去构造一个监控异常状态的模块:
在系统初始话配置时,首先根据所有的监控图表去构造一个监控系统状态的模块;每次有脚本执行出新的数据,我们都要放到监控模块中去跑一遍,是否有异常状况,如有就调用预警模块的接口,通知相关的负责人;这样做及时没有用户在使用我们的监控系统,我们后端会在发现问题的时候通过邮件、短信、语音电话等方式通知到具体的人员。
[0035]系统中每时每刻都有用户在提交订单,实时的订单数据可以直观的反应出当前系统提供的服务的质量,如何监控是否有异常情况出现,我们将这些数据实时的显示在地域分布上,实时监控订单成交数据,确保系统稳定高效的提供服务。
[0036]我们系统中对这些申请订单会做一些复杂的处理,最具代表性的反应当前的流量及推广效应的分为新用户、老用户、黑名单用户提交的订单,我们实时申请监控分别将其显示没绿、蓝、红三种颜色,醒目展示整个系统中实时的用户申请订单的数据分布,我们也根据不同的省份做了统计和排名处理。
[0037]整个系统监控的状态达到上百个,我们平时需要快速的知道系统中是否有异常,具体是哪些状态有异常,在如此多的监控图表中,想要快速的找到异常点,必须做到异常的图表变的非常的显眼,所以我们将系统状态粗略的分为了三类,良好为绿色、一般为蓝色、异常为红色,这样我们就可以在多个监控页面上百的监控图表中快速定位到系统异常位置,从而快速的去解决当前的问题。
[0038]实时监控预警是一个自动化的系统,我们不可能一直有人在盯着整个系统的所有状态,如果系统发生异常情况,仅仅显示出来是不够的,如果当时没有人看到就不能及时的去解决线上问题,从而导致整个公司系统的服务质量下降,我们监控系统内部发现异常后,会通知所有的监控前端去播报一段警报音频来提醒相关人员,系统出现了异常情况,及时关注并解决这些问题。
[0039]作为监控程序,需要全天候监控,一旦有异常情况需要通知到相关的人员,所以只靠醒目的显示和音频警报是远远不够的,晚上没人的时候,系统出现异常情况,我们也是需要及时知道的,所以我们需要通过多种方式通知到具体相关的人员,设计了一个通知模块,如果系统有异常情况,会根据具体的配置情况通过电子邮件、短信、语音电话等方式通知给相关的负责人员。
[0040]监控中每时每刻都在记录着整个系统的所有状态,这些数据不仅仅可以用来实时的监控当前系统是否存在异常情况,我们也可以通过这些数据来分析我们系统的发展状况和查找一些比较复杂和隐蔽的问题,要做到这一点,首先我们需要将所有的监控数据都存储下来,并且可以在使用的时候快速的搜索出来,并且通过可视化的手段将其展示,供开发人员和运维人员分析使用,我们采用elasticsearch集群将实时的监控数据存储起来,也可以通过大数据的手段挖掘一些有用的信息,为公司的未来规划提供数据支持。
[0041]实时监控系统简洁美观的展示出系统中某个监控点的当前状态,实时更新最新数据,做到无感刷新,有动画效果;按照配置智能变化监控颜色,醒目标识系统当前状态,绿色表示正常,蓝色表示压力稍大,红色表示预警;每个监控都有其合适的数值刻度范围,自动适配,合理显示监控指针和数值;监控要分类显示,某些种类放到一块儿,或者放在某些页面。
[0042]实时监控系统所有状态,一旦达到预警值,监控页面中对应图表,标红显示,提醒相关负责人关注这一问题;如果达到预警值,服务端推送给监控页面一段警报音频,实时播报,通知监控人员,每次休眠三十分钟,如还有异常情况,再次播报;某个监控达到预警值后,后端服务器会查询到相关负责人,检查是否符合发送短信的条件,然后根据当前触发预警的监控点和实时的监控数值,编辑一条短信,通过我们的短信发送平台发送出去,每个相同的监控,每次触发短信预警间隔三十分钟;某个监控达到预警值后,后端服务器会查询到相关负责人,检查是否符合发送邮件的条件,根据当前触发预警的监控点和实时的监控数值,编辑一封邮件,通过我们的邮件服务器发送出去,每个相同的监控,每次触发邮件预警间隔三十分钟;某个监控达到预警值后,后端服务器会查询到相关负责人,检查是否符合拨打语音电话的条件,根据当前触发预警的监控点和实时的监控数值,编辑一端语音播报,通过我们的自动外呼系统拨打过去,每个相同的监控,每次触发语音电话预警间隔三十分钟。
[0043]每个图表的大小、颜色、刻度、数值、字体等所有属性都是可配置的;图表的样式继承,可能会有多个图表共用同一样式,那么需要做到继承机制,后期维护比较方便,改变一个地方,所有涉及到的图表都会发生变化;某个图表显示在某个监控页面的某个地方,也可以通过配置改变;新增加监控页面,新增加某些监控,不用修改代码,直接改配置实现;一键触发更新配置,不用重启服务,做到高可用无感更新配置;监控管理页面会动态加载当前所有的监控配置,实时展示所有监控列表,方便管理整个监控预警系统。
[0044]有新的需求后,修改配置,支持一键触发刷新配置,无需重启服务,做到不停服务增加需求;每个监控必须保证原子性,某个出现错误,不能影响其他监控;一个监控任务可以返回多个监控点的数据,尽量少占用数据库压力;均衡前后台的压力,将后端的监控任务,均衡分配到各个时间点,前端的实时刷新也散布到不用的时间点,减缓前后端压力。
[0045]新加一个监控,在准备好监控脚本后,必须做到三分钟可以配置上线;修改一个监控数据,考虑好需求后,必须做到一分钟修改配置上线;配置修改后,一键触发所有客户端强制刷新,不同通知使用监控系统的用户,直接强制更新到最新配置,提供用户使用体验;采用继承机制,无冗余配置,修改一处,涉及到的所有监控随之改变。
[0046]实时监控预警系统足够的灵活可配,没有修改过代码,实现了不停服务增加新的需求。越来越多的监控增加后,我们开发和运维人员省心了很多,不用一直去通过一些复杂的查询来判断系统是否有异常,只需通过简单的浏览当前监控图表,就可以掌握系统的当前状态,平时系统一旦有异常情况,我们会及时收到通知,用最快的速度解决线上问题,为用户提供了更加可靠地服务。
[0047]以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
【主权项】
1.一种实时监控预警系统,其特征在于,其包括Elasticsearch集群模块、监控休眠模块、预警方式模块、配置模块、动态监控页面加载模块,Elasticsearch集群模块、监控休眠模块和配置模块两两连接,预警方式模块、动态监控页面加载模块分别与配置模块连接。2.如权利要求1所述的实时监控预警系统,其特征在于,所述Elasticsearch集群模块用来存储和索引日常的监控数据以及做大数据分析和可视化数据展示。3.如权利要求1所述的实时监控预警系统,其特征在于,所述监控休眠模块在某个监控触发警报后休眠三十分钟,如果存在异常情况,再次警报并休眠三十分钟,循环下去。4.如权利要求1所述的实时监控预警系统,其特征在于,所述预警方式模块通过短信、语音电话、邮件、音频的方式通知到相关负责人。5.如权利要求1所述的实时监控预警系统,其特征在于,所述配置模块共九张表,配置了所有监控所需数据,实现了高可配系统。6.如权利要求1所述的实时监控预警系统,其特征在于,所述动态监控页面加载模块通过访问链接及监控配置数据,动态生成所要显示的动态监控页面返回给用户。
【文档编号】H04L12/26GK105933175SQ201610551575
【公开日】2016年9月7日
【申请日】2016年7月14日
【发明人】郭田森, 李琦
【申请人】微额速达(上海)金融信息服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1