系统异常告警方法、系统、电子设备及存储介质与流程

文档序号:26748470发布日期:2021-09-25 01:39阅读:145来源:国知局
系统异常告警方法、系统、电子设备及存储介质与流程

1.本发明涉及系统安全监控技术领域,尤其涉及一种系统异常告警方法、系统、电子设备及计算机可读存储介质。


背景技术:

2.在智慧农业

数字乡村一体化平台应用系统的开发过程中,随着智慧农业

数字乡村项目的发展,平台应用系统中所包含的微服务模块越来越多,而且需要多节点部署生产环境,服务实例数量一般是服务数量的两倍或者更多,从而使得在这些实例中排查问题变得非常困难。而且在应用系统的运行过程中,经常会出现开发和测试阶段没有发现的问题而导致平台应用系统运行异常。此时,如果仅靠人工去通过排查日志处理异常,系统异常处理则具有严重的滞后性。而且这种异常处理的效率往往依赖开发人员的责任心、主动性,经常会导致问题反馈上来时已经过去许久,造成问题排查困难,给智慧农业

数字乡村的运营发展带来较大影响或损失。
3.对于上述问题,现有的解决方案是在应用系统中增加异常告警通知服务,应用系统一旦产生运行异常即产生告警信息,通过该告警信息通知相关人员处理。但是,已有的告警通知服务需要购买,或者需要复杂的日志收集系统支持,成本较高,学习曲线较陡;或者成本低,却功能不足,往往不能灵活的处理异常,甚至仅能处理部分异常。同时,如果应用系统并发量较大,产生的异常有可能会在瞬间产生大批量的告警邮件,从而导致邮件服务商将当前账户判定为病毒账户、进行封禁,使发生异常的客户端无法及时完整的发出邮件通知,不能形成有效的异常告警。
4.基于此,亟需一种能够解决现有的异常告警滞后、告警通知容易阻塞问题的技术。


技术实现要素:

5.本发明提供一种系统异常告警方法、系统、电子设备及存储介质,其主要目的在于解决现有的异常告警滞后、告警通知容易阻塞问题。
6.为实现上述目的,本发明提供的一种系统异常告警方法,应用于电子装置,包括:
7.创建用于进行系统异常告警的告警工具,所述告警工具被配置为启动时自动注入异常拦截器;
8.通过所述异常拦截器捕获系统异常信息,并将所捕获的系统异常信息放入异常阻塞队列;
9.通过预设的异常处理定时任务定时处理所述异常阻塞队列中的系统异常信息,形成告警信息;
10.通过所述告警工具发送所述告警信息,进行系统异常告警。
11.为了解决上述问题,本发明还提供一种系统异常告警系统,所述系统包括:
12.告警工具创建单元,用于创建进行系统异常告警的告警工具,所述告警工具被配置为启动时自动注入异常拦截器;
13.异常拦截单元,用于通过异常拦截器捕获系统异常信息,并将所捕获的系统异常信息放入异常阻塞队列;
14.告警信息形成单元,用于通过预设的异常处理定时任务定时处理所述异常阻塞队列中的系统异常信息,形成告警信息;
15.告警发送单元,用于通过所述告警工具发送所述告警信息,进行系统异常告警。
16.为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述的系统异常告警方法中的步骤。
17.为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述所述的系统异常告警方法。
18.本发明提供的上述系统异常告警方案,通过集成告警工具,为微服务应用添加异常捕获和异常组测处理机制。与现有的异常告警方式相比,具有成本低、灵活性高的特点,可有效提高开发人员发现异常的时效性。同时,本方案中的告警工具,通过异常阻塞队列实现了告警信息的缓冲,可以有效解决告警通知服务商拒绝发送告警信息的问题。
附图说明
19.图1为根据本发明实施例的系统异常告警方法的流程示意图;
20.图2为根据本发明实施例的系统异常告警系统的逻辑结构框图;
21.图3为根据本发明实施例的实现系统异常告警方法的电子设备的内部结构示意图;
22.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
23.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
24.本发明提供一种系统异常告警方法。参照图1所示,为本发明一实施例提供的系统异常告警方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
25.在本实施例中,系统异常告警方法包括:
26.s110:创建用于进行系统异常告警的告警工具,所述告警工具被配置为启动时自动注入异常拦截器;
27.s120:通过所述异常拦截器捕获系统异常信息,并将所捕获的系统异常信息放入异常阻塞队列;
28.s130:通过预设的异常处理定时任务定时处理所述异常阻塞队列中的系统异常信息,形成告警信息;
29.s140:通过所述告警工具发送所述告警信息,进行系统异常告警。
30.下面将通过具体的实施示例对上述系统异常告警方法中的各个步骤做进一步详细的表述。
31.在步骤s110中,所创建的告警工具是一个能够主动发送的告警工具,该告警工具在系统启动时自动注入异常拦截器,告警工具的通知告警形式可以包括邮件、qq、短信、微信、钉钉等有效的通知方式,通过相应的告警工具配置即可有效监控系统中出现的非受检异常;同时,该告警工具也能够提供api(应用程序接口)给开发人员以进行系统异常告警的上报,一遍提高系统开发人员的异常发现时效,从而能够及时根据异常告警及时对系统进行修复、升级处理,为系统的长期稳定运行提供有力的基础。
32.具体的,作为示例,在微服务应用启动时,告警工具随着微服务应用的启动而注入异常拦截器,同时初始化异常阻塞队列和异常处理定时任务,使得异常阻塞队列按照约定顺序存储异常信息,并且通过异常处理定时任务从所述异常阻塞队列中提取异常信息进行告警处理。
33.可见,本技术提供的系统异常告警方法,通过捕获、存储、消费三个阶段进行系统异常的处理,其中,异常拦截器负责捕获系统异常信息,异常阻塞队列负责存储异常拦截器捕获的系统异常信息,而异常处理定时任务则负责消费异常阻塞队列中存储的系统异常信息,其消费形式则是通过发出告警信息的方式进行。
34.为了表述的方便,下面以邮件告警作为告警工具示例对本实施例做更详细的说明。
35.应用邮件告警工具后,微服务应用启动时,邮件告警工具自动注入异常拦截器,同时初始化阻塞队列(存储异常信息),启动异常处理定时任务;
36.在本技术的一个具体实现示例中,邮件告警工具还可以为开发人员提供api,通过自行向阻塞队列中添加告警内容,然后通过定时任务发送该内容至开发人员,以便系统开发人员第一时间掌握系统异常。具体的,开发人员在系统开发过程中可以主动在一些位置设置异常处理方式以及发送异常告警的触发条件,比如,拦截所有的用户请求,由开发过程中的部分开发人员是自己捕获异常,而且不抛出,把异常粗暴的忽略了。本实施例中的api,此时可以异常告警的设置,把这种系统异常信息也发送出来。
37.在本技术的一个具体方案中,邮件告警工具提供了诸多人性化的可配置项,其中包括邮件发送服务器地址、发送端口、发件人账户、密码、收件人邮箱地址列表、告警级别、邮件模版、定时任务执行频率的配置等。
38.对于其他形式的告警工具,如微信、qq等,也可以进行告警通知的配置,如配置告警信息发送人信息、告警信息接收人信息、告警级别、微信/qq模板、定时任务执行频率等。
39.在在本技术一个告警邮件配置的示例中,依次配置了邮件发送服务器地址、用户名、密码、发送地址、接收地址、认证及协议端口信息等邮件服务参数。
40.邮件的展示格式可以包括通常的告警抬头、任务id、发件人、发件时间、收件人信息以及按照时间顺序排列的告警内容,告警内容主要包括抛出的异常的堆栈信息,其中主要包括出现异常的时间、出现异常的代码位置、出现异常的原因。此外,也可以通过配置邮件模板使邮件的展示更好看或者迎合发件人的编辑习惯、收件人的阅读习惯。
41.在微服务应用启动后,异常拦截器会捕获所有用户请求执行过程中出现的异常。本技术中,异常拦截器通过@controlleradvice和@exceptionhandler注解扩展当前应用的所有控制器,通过try

catch包装当前业务的所有业务逻辑,并捕获所有可能抛出的异常。
42.其中,@controlleradvice注解是一个增强的@controller注解,使用这个注解可
以实现全局异常处理、全局数据绑定以及全局数据预处理三个方面的功能,本技术中主要应用其全局异常处理功能。使用@controlleradvice实现全局异常处理,只需要定义类,在该类中,可以定义多个方法,不同的方法处理不同的异常,例如专门处理空指针的方法、专门处理数组越界的方法等,也可以直接在一个方法中处理所有的异常信息。
43.@exceptionhandler注解用来指明异常的处理类型,即如果这里指定为nullpointerexception,则数组越界异常就不会进到这个方法中来。
44.try

catch为javascript中处理异常的一种标准方式,如果try块中的任何代码发生了错误,就会立即退出代码执行过程,然后接着执行catch块。此时,catch块会接收到一个包含错误信息的对象,该对象中包含一个保存着错误消息的message属性和一个保存错误类型的name属性,以用于对于所捕获异常的标注。
45.异常拦截器增强了控制器层,使用try

catch包含了控制器的业务逻辑,但控制器执行完毕后,若抛出异常,都由异常拦截器进行拦截处理。
46.本技术中,异常拦截器是在微服务运行过程中独立出来的一个可以用来处理所有可能发生的异常的类,应用异常拦截器,在其他代码运行的而过程中,但凡遇到运行问题,直接统一抛出带有对应信息的异常就行,由异常拦截器拦截之后统一处理,这样可以使整个系统的运行架构更有条理。以下为一个拦截器实现示例:
47.首先通过@controlleradvice注解该拦截器覆盖整个controller层;
48.然后通过@responsebody注解将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回json数据或者是xml数据;
49.该@controlleradvice注解实现全局异常处理的功能,其中通过@exceptionhandler注解指明拦截器所拦截的异常类型为处理参数校验异常。
50.具体的,作为示例,在微服务应用接收到用户请求后,若执行过程中抛出系统异常信息,将被异常拦截器捕获;异常拦截器捕获系统异常信息后,将所捕获的系统异常信息放入异常阻塞队列(blockingqueue)等待后续处理。
51.除了向异常阻塞队列添加系统异常信息,异常拦截器在捕获到系统异常信息后,还可以根据预设配置执行其他措施,比如根据系统异常信息向用户返回标准化提示信息,或者记录系统异常日志,或者直接向开发人员发送系统异常通知等。
52.其中,作为示例,根据系统异常信息向用户返回标准化提示信息包括:
53.首先,根据系统异常信息确定系统异常的类别、对应的处理方式、用户地址等识别信息;然后,根据所确定的用户地址将系统异常的类别、对应的处理方式反馈至用户。
54.记录异常日志包括:
55.首先,根据系统异常信息确定系统异常的类别、产生时间、具体异常内容、用户地址等异常日志信息;然后,将所确定的异常日志信息记录至系统异常日志。
56.向开发人员发送异常通知包括:
57.首先,根据系统异常信息确定系统异常的类别、产生时间、具体异常内容、用户地址、报修地址等异常报修信息;其中,所述报修地址为负责修复所述系统异常的开发人员的通知地址;然后,通过系统应用接口将所述异常报修信息发送至所述报修地址。
58.该向开发人员发送异常通知也就是前述开发人员通过api获取系统异常告警的方
式。系统开发人员可以在编写的处理用户逻辑的代码代码中,通过在其认为需要告警的地方通过api的方式添加告警,从而捕获已知的异常,并通过api将该异常放入阻塞队列。
59.阻塞队列是java util.concurrent包下重要的数据结构,它能够提供线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。常用的阻塞队列具体类有arrayblockingqueue、linkedblockingqueue、priorityblockingqueue、linkedblockingdeque等。本技术中采用阻塞队列用来缓存异常信息,能够有效避免高并发情况下,瞬间发送大量邮件,导致邮件、微信等通知服务商拒绝发送告警信息。
60.在本实施例中,异常拦截器向异常阻塞队列添加系统异常信息的方式包括如下三种:
61.add:添加系统异常信息到异常阻塞队列里,添加成功返回true,如果由于容量满了添加失败会抛出illegalstateexception异常;
62.offer:添加系统异常信息到异常阻塞队列里,如果添加成功返回true,如果添加失败返回false;
63.put:添加系统异常信息到异常阻塞队列里,如果容量满了会阻塞直到容量不满。
64.此外,如果添加系统异常信息到异常阻塞队列里的操作无法立即执行,则视为异常阻塞队列调用发生阻塞,此时可以持续进行添加操作直到能够执行系统异常信息的添加,但等待时间不会超过给定值。如果不超过给定值则返回一个特定值(如true)以告知该添加操作成功,如果超过给定值则返回一个特定值(如falsee)以告知该添加操作失败。
65.此外,还需要说明的是,在微服务系统运行过程中,不能向异常阻塞队列中插入null。如果试图插入null,异常阻塞队列将会抛出一个nullpointerexception提示信息,提示该空信息插入操作的无效。
66.在本技术的一个具体实施例中,采用java.util.concurrent包下的阻塞队列(blockingqueue)接口来作为异常阻塞队列的实现类,具体包括如下五种阻塞队列:
67.1、arrayblockingqueue:arrayblockingqueue是一个有界的阻塞队列,其内部实现是将对象放到一个数组里。由于它是基于数组实现的,也就具有数组的特性,即有界,也即意味着它一旦初始化,大小就无法修改,不能够存储无限多数量的元素。arrayblockingqueue有一个同一时间能够存储元素数量的上限。具体应用过程中,可以在对其初始化的时候设定这个上限,但之后无法对这个上限进行修改。
68.2、delayqueue:delayqueue对元素进行持有直到一个特定的延迟到期,注入其中的元素必须实现java.util.concurrent.delayed接口。
69.3、linkedblockingqueue:linkedblockingqueue内部以一个链式结构(链接节点)对其元素进行存储。如果需要的话,这一链式结构可以选择一个上限;如果没有定义上限,将使用integer.max_value作为上限。
70.4、priorityblockingqueue:priorityblockingqueue,这是一个无界的并发队列,它使用了和类java.util.priorityqueue一样的排序规则,无法向这个队列中插入null值。所有插入到priorityblockingqueue的元素必须实现java.lang.comparable接口,因此该队列中元素的排序就取决于其所属系统的comparable实现。
71.5、synchronousqueue:synchronousqueue,这是一个特殊的队列,它的内部同时只
能够容纳单个元素。如果该队列已有一元素的话,试图向队列中插入一个新元素的线程将会阻塞,直到另一个线程将该元素从队列中抽走。同样,如果该队列为空,试图向队列中抽取一个元素的线程将会阻塞,直到另一个线程向队列中插入了一条新的元素。
72.在本技术的一个实施例中,异常阻塞队列按照先进先出的方式存储、消费系统异常信息。
73.但是,由于concurrent包下双端阻塞队列(blockingdeque)的存在,因此,本技术采用的异常阻塞队列也可以从队列的任意一端存储或者消费系统异常信息。
74.其中,异常处理定时任务按照预先配置的频率消费异常阻塞队列中的系统异常信息,每次处理的系统异常信息数量也可以根据微服务系统的运行环境进行预先配置。比如,将消费频率设定为每小时一次,将每次处理的系统异常信息的数量设定为50条。
75.在处理系统异常信息的过程中,可以将当前待处理的所有系统异常信息的堆栈按照顺序拼装成邮件主体内容,每个系统异常信息间可添加分割线,便于阅读;处理完成后,按照预先配置的邮件标题、邮件发送服务器、账户、密码、收件人等信息发送邮件。
76.为了更好的区分拦截器捕获的异常和开发人员通过api上报的异常,可以使用不同的阻塞队列和定时任务处理,也可以在异常阻塞队列中添加系统异常信息的包装对象,在包装对象里指定系统异常信息的类型。系统异常信息可以包括服务异常(serviceexception)、业务异常(bussinessexception),分类可根据实际需要自由分类。处理分类时,根据系统异常信息属于serviceexception还是bussinessexception,把对应的系统异常信息放入指定的阻塞队列。
77.以下为系统异常信息的分类处理示例:如果系统异常信息是服务异常,则将该系统异常信息放入服务异常阻塞队列;如果系统异常信息是业务异常,则将该系统异常信息放入业务异常阻塞队列;如果系统异常信息是其他分类异常,则将该系统异常信息放入其他分类异常阻塞队列;如果系统异常信息是未分类异常,则将该系统异常信息放入未分类异常阻塞队列。
78.针对上述分类的系统异常信息,异常阻塞队列进行先进先出的消费处理示例如下,其中,队列范型指定为exception:arrayblockingqueue<exception>,excetion即存入队列中的对象,实际过程中的serviceexception、bussinessexception是excetion的子类runtimeexception的子类。
79.本实施例中,可以将@scheduled注解作为一个触发源添加到一个系统异常告警方法中,以实现异常处理定时任务,比如@scheduled(fixeddelay=1000*60*10)//表示当前方法执行完毕10分钟后,下一个开始执行。
80.在步骤s130形成告警信息之后,即可以通过告警工具发送告警信息,进行系统异常告警。在具体的实现过程中,即为:邮件服务商按照配置,将系统异常告警邮件发送到收件人信箱;或者微信/qq服务商按照配置,将系统异常告警发送到收信人微信/qq等。
81.通过上述实施例可以看出,本发明提出的系统异常告警方法,通过集成告警工具,为微服务应用添加异常捕获和异常阻塞处理机制,其中的异常捕获拦截器通过controlleradvice和exceptionhandler注解扩展当前应用所有控制器,通过try

catch包装当前业务的所有业务逻辑,并捕获所有可能抛出的异常,避免了系统异常的遗漏;异常阻塞队列则用来缓存异常信息,避免高并发情况下,瞬间发送大量告警,导致通知服务商拒绝
发送,也有效提高了异常发现的时效性。
82.与上述系统异常告警方法相对应,本发明还提供一种系统异常告警系统。图2示出了根据本发明实施例的系统异常告警系统的功能模块。
83.如图2所示,本发明提供的系统异常告警系统200可以安装于电子设备中。根据实现的功能,所述系统异常告警系统可以包括告警工具创建单元210、异常拦截单元220、告警信息形成单元230和告警发送单元单元240。本发所述单元也可以称之为模块,指的是一种能够被电子设备的处理器所执行,并且能够完成某一固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
84.在本实施例中,关于各模块/单元的功能如下:
85.告警工具创建单元210,用于创建进行系统异常告警的告警工具,所述告警工具被配置为启动时自动注入异常拦截器;
86.异常拦截单元220,用于通过异常拦截器捕获系统异常信息,并将所捕获的系统异常信息放入异常阻塞队列;
87.告警信息形成单元230,用于通过预设的异常处理定时任务定时处理所述异常阻塞队列中的系统异常信息,形成告警信息;
88.告警发送单元240,用于通过所述告警工具发送所述告警信息,进行系统异常告警。
89.其中,告警工具创建单元210所创建的告警工具是一个能够主动发送的告警工具,该告警工具在系统启动时自动注入异常拦截器,告警工具的通知告警形式可以包括邮件、qq、短信、微信、钉钉等有效的通知方式,通过相应的告警工具配置即可有效监控系统中出现的非受检异常;同时,该告警工具也能够提供api(应用程序接口)给开发人员以进行系统异常告警的上报,一遍提高系统开发人员的异常发现时效,从而能够及时根据异常告警及时对系统进行修复、升级处理,为系统的长期稳定运行提供有力的基础。
90.此外,告警工具创建单元210所创建的告警工具提供了诸多人性化的可配置项,以邮件告警为例,其中包括邮件发送服务器地址、发送端口、发件人账户、密码、收件人邮箱地址列表、告警级别、邮件模版、定时任务执行频率的配置等。
91.邮件的展示格式可以包括通常的告警抬头、任务id、发件人、发件时间、收件人信息以及按照时间顺序排列的告警内容,告警内容主要包括抛出的异常的堆栈信息,其中主要包括出现异常的时间、出现异常的代码位置、出现异常的原因。此外,也可以通过配置邮件模板使邮件的展示更好看或者迎合发件人的编辑习惯、收件人的阅读习惯。
92.在微服务应用启动后,异常拦截单元220会通过异常拦截器捕获所有用户请求执行过程中出现的异常。本技术中,异常拦截器通过controlleradvice和exceptionhandler注解扩展当前应用的所有控制器,通过try

catch包装当前业务的所有业务逻辑,并捕获所有可能抛出的异常。异常拦截器增强了控制器层,使用try

catch包含了控制器的业务逻辑,但控制器执行完毕后,若抛出异常,都由异常拦截器进行拦截处理。
93.在本技术的另一实施例中,系统异常告警系统200还可以包括异常信息反馈单元(图中未示出),用于在异常拦截单元220捕获系统异常信息之后,根据所捕获的系统异常信息向系统用户反馈标准化提示信息,和/或,记录系统异常日志,和/或,发送异常通知至系统开发人员。
94.其中,作为示例,异常信息反馈单元根据系统异常信息向系统用户反馈标准化提示信息的方式为:根据系统异常信息确定包括系统异常的类别、对应的处理方式、用户地址的系统异常识别信息;根据所述用户地址将所述系统异常的类别、对应的处理方式反馈至用户。异常信息反馈单元记录系统异常日志的方式为:根据系统异常信息确定包括系统异常的类别、产生时间、具体异常内容、用户地址的系统异常日志信息;将所述系统异常日志信息记录至系统异常日志。异常信息反馈单元发送异常通知至系统开发人员的方式为:根据系统异常信息确定包括系统异常的类别、产生时间、具体异常内容、用户地址、报修地址的常报修信息;其中,所述报修地址为负责修复所述系统异常的开发人员的通知地址;通过系统应用接口将所述异常报修信息发送至所述报修地址。
95.在本技术的一个实施例中,异常拦截单元220向异常阻塞队列添加系统异常信息的方式包括如下三种:
96.add:添加系统异常信息到异常阻塞队列里,添加成功返回true,如果由于容量满了添加失败会抛出illegalstateexception异常;
97.offer:添加系统异常信息到异常阻塞队列里,如果添加成功返回true,如果添加失败返回false;
98.put:添加系统异常信息到异常阻塞队列里,如果容量满了会阻塞直到容量不满。
99.此外,在本技术的一个实施例中,如果添加系统异常信息到异常阻塞队列里的操作无法立即执行,则视为异常阻塞队列调用发生阻塞,此时可以持续进行添加操作直到能够执行系统异常信息的添加,但等待时间不会超过给定值。如果不超过给定值则返回一个特定值(如true)以告知该添加操作成功,如果超过给定值则返回一个特定值(如falsee)以告知该添加操作失败。
100.此外,还需要说明的是,在微服务系统运行过程中,不能向异常阻塞队列中插入null。如果试图插入null,异常阻塞队列将会抛出一个nullpointerexception提示信息,提示该空信息插入操作的无效。
101.在本技术的一个具体实施例中,采用java.util.concurrent包下的阻塞队列(blockingqueue)接口来作为异常阻塞队列的实现类,具体包括的阻塞队列如前所示,在此不再一一赘述。本技术中的异常阻塞队列可以按照先进先出的方式存储、消费所述系统异常信息;也可以从其任意一端存储、消费所述系统异常信息。
102.在本技术的另一实现例中,告警信息形成单元230可以进一步包括:
103.告警信息提取单元231,用于根据所述预设的异常处理定时任务,定时定量从所述异常阻塞队列中获取系统异常信息,形成待告警异常信息;以及,
104.告警信息拼装单元232,用于基于所述待告警异常信息,按照预设格式拼装告警信息主体内容,形成所述告警信息。
105.告警发送单元240通过所述告警工具发送所述告警信息,进行系统异常告警的具体实现形式可以包括但不限于如下几种:
106.1、邮件告警:邮件服务商按照配置,将系统异常告警邮件发送到所有收件人信箱;
107.2、微信告警:微信服务商按照配置,将系统异常告警发送到所有收信人微信;
108.3、qq告警:qq服务商按照配置,将系统异常告警发送到所有收信人qq。
109.从本技术实现的另一角度而言,系统异常告警系统可以包括以下结构:告警工具、
异常拦截器、异常阻塞队列以及异常处理定时处理器。其中,告警工具用于进行系统异常告警,被配置为启动时自动注入异常拦截器;异常拦截器用于捕获系统异常信息,并将所捕获的系统异常信息放入异常阻塞队列;异常阻塞队列用于存储异常拦截器捕获的系统异常信息;异常处理定时处理器用于定时处理所述异常阻塞队列中的系统异常信息,形成告警信息供告警工具发送。
110.本技术所提供的上述系统异常告警系统的更为具体的实现方式,均可以参照上述对系统异常告警方法的实施例表述。
111.通过上述实施例可以看出,本技术提出的系统异常告警系统,通过集成告警工具,为微服务应用添加异常捕获和异常阻塞处理机制,其中的异常捕获拦截器通过controlleradvice和exceptionhandler注解扩展当前应用所有控制器,通过try

catch包装当前业务的所有业务逻辑,并捕获所有可能抛出的异常,避免了系统异常的遗漏;异常阻塞队列则用来缓存异常信息,避免高并发情况下,瞬间发送大量告警,导致通知服务商拒绝发送,也有效提高了异常发现的时效性。
112.如图3所示,是本发明实现系统异常告警方法的电子设备的结构示意图。
113.所述电子设备1可以包括处理器10、存储器11和总线,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如系统异常告警程序12。
114.其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如系统异常告警程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
115.所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如系统异常告警程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
116.总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
117.图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
118.例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、wi

fi模块等,在此不再赘述。
119.进一步地,所述电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如wi

fi接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。
120.可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light

emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
121.应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
122.所述电子设备1中的所述存储器11为计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述所述的系统异常告警方法。具体的,作为示例,存储器11中存储的系统异常告警程序12是多个指令的组合,在所述处理器10中运行时,可以实现:
123.创建用于进行系统异常告警的告警工具,所述告警工具被配置为启动时自动注入异常拦截器;
124.通过所述异常拦截器捕获系统异常信息,并将所捕获的系统异常信息放入异常阻塞队列;
125.通过预设的异常处理定时任务定时处理所述异常阻塞队列中的系统异常信息,形成告警信息;
126.通过所述告警工具发送所述告警信息,进行系统异常告警。
127.可选地,所述异常拦截器捕获系统异常信息之后,还包括:
128.所述异常拦截器根据所捕获的系统异常信息向系统用户反馈标准化提示信息,和/或,记录系统异常日志,和/或,发送异常通知至系统开发人员。
129.可选地,根据系统异常信息向系统用户反馈标准化提示信息包括:
130.根据系统异常信息确定包括系统异常的类别、对应的处理方式、用户地址的系统异常识别信息;
131.根据所述用户地址将所述系统异常的类别、对应的处理方式反馈至用户;
132.记录系统异常日志包括:
133.根据系统异常信息确定包括系统异常的类别、产生时间、具体异常内容、用户地址的系统异常日志信息;
134.将所述系统异常日志信息记录至系统异常日志。
135.发送异常通知至系统开发人员包括:
136.根据系统异常信息确定包括系统异常的类别、产生时间、具体异常内容、用户地址、报修地址的常报修信息;其中,所述报修地址为负责修复所述系统异常的开发人员的通知地址;
137.通过系统应用接口将所述异常报修信息发送至所述报修地址。
138.可选地,异常阻塞队列按照先进先出的方式存储、消费所述系统异常信息;或者,异常阻塞队列从其任意一端存储、消费所述系统异常信息。
139.可选地,所述通过预设的异常处理定时任务定时处理所述异常阻塞队列中的系统异常信息,形成告警信息,包括:
140.根据所述预设的异常处理定时任务,定时定量从所述异常阻塞队列中获取系统异常信息,形成待告警异常信息;基于所述待告警异常信息,按照预设格式拼装告警信息主体内容,形成所述告警信息。
141.可选地,所述告警工具包括可配置参数,所述可配置参数包括告警信息发送地址、发送端口、告警级别、告警信息接收地址列表、告警信息模版、定时任务执行频率。
142.可选地,异常拦截器通过controlleradvice和exceptionhandler注解扩展当前应用的所有控制器,通过try

catch包装当前业务的所有业务逻辑,并捕获所有可能抛出的异常。
143.进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)。
144.在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
145.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
146.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
147.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
148.因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
149.此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
150.最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1