发明内容
针对现有技术中的缺陷,本发明的目的是提供一种流式任务自动化监控告警重启系统及方法。
根据本发明提供的一种流式任务自动化监控告警重启系统,包括
注册服务模块:对流式任务进行注册;
发现服务模块:监听正常的任务,发现了异常情况时,进行预设的操作处理并在注册中心对应异常任务的状态修改;
告警重启系统:轮询注册中心的非RUNNING状态的任务。
优选地,所述注册服务模块包括两种部署和执行模式:
单个部署执行模式:工程师完成相应的流式任务的开发并按照规定的注册参数将自己的job注册到注册中心;
批量部署执行模式:运维工程师将所有现有的流式任务进行统一管理统一注册。
优选地,所述对流式任务进行注册包括以下步骤:
步骤一:重写注册服务中的一个开放api主程序将相关参数传入到接口中,相关参数包括:任务名称,任务负责人信息以及任务启动命令信息;
步骤二:将重写的api主程序加入批量注册管道,以使服务器或者CDH集群重启能够直接批量注册;
步骤三:将重写的api主程序执行注册。
优选地,所述发现服务模块:
模块S1:定期去查询注册中心中所有的状态显示正常的任务名;
模块S2:将查到的任务名,逐个进行在服务器上此任务是否在资源管理器系统yarn上存在进程的判断,如果不存在进程,表示此任务已经不存在,则将注册中心中此任务的状态修改为失败,如果存在进程,调用模块S3;
模块S2:资源管理器系统yarn上存在相应的进程时,表示有此任务的运行空间,进一步查看这个任务是否是在运行状态,可直接调用flink提供的API接口查看对应任务的实际运行状态;
模块S4:调用接口,可得到一个json格式字符串,解析获得key为state的value值,即为任务的实际状态,如果是RUNNING,表示正常运行,则此任务是正常状态,不作处理,如果是RESTARTING,表示此任务已经结束,此时需要先用命令杀死掉资源管理器系统上的对应进程,再进行注册中心状态的修改,将状态改为失败;
模块S5:如果状态为其他的状态,表示任务目前处于异常状态,但任务仍然在运行,此时需要在注册中心进行状态的修改,将状态改为其他的状态。
优选地,所述轮询注册中心的非RUNNING状态的任务包括以下步骤:
步骤一:轮询监控注册中心的非RUNNING状态的任务到一个列表;
步骤二:列表中短期任务和非失败的任务只需要告警出来;
步骤三:将长期类型的失败状态的任务需要告警另外需要重写执行注册服务中的开发api主程序重新注册任务到注册中心。
根据本发明提供的一种流式任务自动化监控告警重启方法,包括
注册服务步骤:对流式任务进行注册;
发现服务步骤:监听正常的任务,发现了异常情况时,进行预设的操作处理并在注册中心对应异常任务的状态修改;
告警重启步骤:轮询注册中心的非RUNNING状态的任务。
优选地,所述注册服务步骤包括两种部署和执行模式:
单个部署执行模式:工程师完成相应的流式任务的开发并按照规定的注册参数将自己的job注册到注册中心;
批量部署执行模式:运维工程师将所有现有的流式任务进行统一管理统一注册。
优选地,所述对流式任务进行注册包括以下步骤:
步骤一:重写注册服务中的一个开放api主程序将相关参数传入到接口中,相关参数包括:任务名称,任务负责人信息以及任务启动命令信息;
步骤二:将重写的api主程序加入批量注册管道,以使服务器或者CDH集群重启能够直接批量注册;
步骤三:将重写的api主程序执行注册。
优选地,所述发现服务步骤:
步骤S1:定期去查询注册中心中所有的状态显示正常的任务名;
步骤S2:将查到的任务名,逐个进行在服务器上此任务是否在资源管理器系统yarn上存在进程的判断,如果不存在进程,表示此任务已经不存在,则将注册中心中此任务的状态修改为失败,如果存在进程,进入步骤S3;
步骤S3:资源管理器系统yarn上存在相应的进程时,表示有此任务的运行空间,进一步查看这个任务是否是在运行状态,可直接调用flink提供的API接口查看对应任务的实际运行状态;
步骤S4:调用接口,可得到一个json格式字符串,解析获得key为state的value值,即为任务的实际状态,如果是RUNNING,表示正常运行,则此任务是正常状态,不作处理,如果是RESTARTING,表示此任务已经结束,此时需要先用命令杀死掉资源管理器系统上的对应进程,再进行注册中心状态的修改,将状态改为失败;
步骤S5:如果状态为其他的状态,表示任务目前处于异常状态,但任务仍然在运行,此时需要在注册中心进行状态的修改,将状态改为其他的状态。
优选地,所述轮询注册中心的非RUNNING状态的任务包括以下步骤:
步骤一:轮询监控注册中心的非RUNNING状态的任务到一个列表;
步骤二:列表中短期任务和非失败的任务只需要告警出来;
步骤三:将长期类型的失败状态的任务需要告警另外需要重写执行注册服务中的开发api主程序重新注册任务到注册中心。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过采用单一部署执行和批量部署执行的双重模式,不但可以对单个任务进行注册也可以对现有的流式job进行批量部署注册可以有效的减少运维工程师的工作量和操作复杂度。
2、本发明通过采用架构分离模块,各个模块之间解耦有效的增加对流式任务的异常检测和预警。
3、本发明通过采用fl ink框架webui接口返回参数的实时异步解析和对yarn上的session的进程的定时获取从而快速精准的得到流式任务的心跳判断是否存活和决策是否自动重启从而减少因流式job死亡发现缓慢而产生不必要的损失。
4、当前的监控主要在flink的UI界面上查看任务的状态信息及运行状况,然而本发明是可以通过脚本的方式在后台实时的将任务状态更新到数据库中,从而监控到任务的状态,同时对出现异常的任务及时告警和重启。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种流式任务自动化监控告警重启系统,包括
注册服务模块:对流式任务进行注册;
发现服务模块:监听正常的任务,发现了异常情况时,进行预设的操作处理并在注册中心对应异常任务的状态修改;
告警重启系统:轮询注册中心的非RUNNING状态的任务。
具体地,所述注册服务模块包括两种部署和执行模式:
单个部署执行模式:工程师完成相应的流式任务的开发并按照规定的注册参数将自己的job注册到注册中心;
批量部署执行模式:运维工程师将所有现有的流式任务进行统一管理统一注册。
具体地,所述对流式任务进行注册包括以下步骤:
步骤一:重写注册服务中的一个开放api主程序将相关参数传入到接口中,相关参数包括:任务名称,任务负责人信息以及任务启动命令信息;
步骤二:将重写的api主程序加入批量注册管道,以使服务器或者CDH集群重启能够直接批量注册;
步骤三:将重写的api主程序执行注册。
具体地,所述发现服务模块:
模块S1:定期去查询注册中心中所有的状态显示正常的任务名;
模块S2:将查到的任务名,逐个进行在服务器上此任务是否在资源管理器系统yarn上存在进程的判断,如果不存在进程,表示此任务已经不存在,则将注册中心中此任务的状态修改为失败,如果存在进程,调用模块S3;
模块S2:资源管理器系统yarn上存在相应的进程时,表示有此任务的运行空间,进一步查看这个任务是否是在运行状态,可直接调用flink提供的API接口查看对应任务的实际运行状态;
模块S4:调用接口,可得到一个json格式字符串,解析获得key为state的value值,即为任务的实际状态,如果是RUNNING,表示正常运行,则此任务是正常状态,不作处理,如果是RESTARTING,表示此任务已经结束,此时需要先用命令杀死掉资源管理器系统上的对应进程,再进行注册中心状态的修改,将状态改为失败;
模块S5:如果状态为其他的状态,表示任务目前处于异常状态,但任务仍然在运行,此时需要在注册中心进行状态的修改,将状态改为其他的状态。
具体地,所述轮询注册中心的非RUNNING状态的任务包括以下步骤:
步骤一:轮询监控注册中心的非RUNNING状态的任务到一个列表;
步骤二:列表中短期任务和非失败的任务只需要告警出来;
步骤三:将长期类型的失败状态的任务需要告警另外需要重写执行注册服务中的开发api主程序重新注册任务到注册中心。
根据本发明提供的一种流式任务自动化监控告警重启方法,包括
注册服务步骤:对流式任务进行注册;
发现服务步骤:监听正常的任务,发现了异常情况时,进行预设的操作处理并在注册中心对应异常任务的状态修改;
告警重启步骤:轮询注册中心的非RUNNING状态的任务。
具体地,所述注册服务步骤包括两种部署和执行模式:
单个部署执行模式:工程师完成相应的流式任务的开发并按照规定的注册参数将自己的job注册到注册中心;
批量部署执行模式:运维工程师将所有现有的流式任务进行统一管理统一注册。
具体地,所述对流式任务进行注册包括以下步骤:
步骤一:重写注册服务中的一个开放api主程序将相关参数传入到接口中,相关参数包括:任务名称,任务负责人信息以及任务启动命令信息;
步骤二:将重写的api主程序加入批量注册管道,以使服务器或者CDH集群重启能够直接批量注册;
步骤三:将重写的api主程序执行注册。
具体地,所述发现服务步骤:
步骤S1:定期去查询注册中心中所有的状态显示正常的任务名;
步骤S2:将查到的任务名,逐个进行在服务器上此任务是否在资源管理器系统yarn上存在进程的判断,如果不存在进程,表示此任务已经不存在,则将注册中心中此任务的状态修改为失败,如果存在进程,进入步骤S3;
步骤S3:资源管理器系统yarn上存在相应的进程时,表示有此任务的运行空间,进一步查看这个任务是否是在运行状态,可直接调用flink提供的API接口查看对应任务的实际运行状态;
步骤S4:调用接口,可得到一个json格式字符串,解析获得key为state的value值,即为任务的实际状态,如果是RUNNING,表示正常运行,则此任务是正常状态,不作处理,如果是RESTARTING,表示此任务已经结束,此时需要先用命令杀死掉资源管理器系统上的对应进程,再进行注册中心状态的修改,将状态改为失败;
步骤S5:如果状态为其他的状态,表示任务目前处于异常状态,但任务仍然在运行,此时需要在注册中心进行状态的修改,将状态改为其他的状态。
具体地,所述轮询注册中心的非RUNNING状态的任务包括以下步骤:
步骤一:轮询监控注册中心的非RUNNING状态的任务到一个列表;
步骤二:列表中短期任务和非失败的任务只需要告警出来;
步骤三:将长期类型的失败状态的任务需要告警另外需要重写执行注册服务中的开发api主程序重新注册任务到注册中心。
下面通过优选例,对本发明进行更为具体地说明。
优选例1:
本发明采用集群架构,对于系统的扩展性、健壮性有着明显优势。工业发展非常快速,智能化信息程度越来越高,使用到的机器设备占比也越来越大,同时会产生大量的数据需要通过大数据的实时技术来做到数据秒级响应,MAFJ则是针对工业级大数据流式任务注册监控重启一体化的智能架构系统,能做到批量注册,单个注册,异常自动发现,异常任务告警,以及异常任务自动重启等。
如图1所示,MAFJ主要通过三个服务模块对flink job的生命周期的注册中心的信息进行注册,监控并实现自动告警重启功能,具体包括注册服务,发现服务以及告警重启服务:
注册服务:
注册服务模块分两种部署和执行的方式,第一则是单个部署执行模式即工程师完成相应的流式job的开发并按照规定的注册参数将自己的job注册到注册中心以用于发现服务和告警重启服务的使用,第二则是批量部署执行模式即运维工程师将所有现有的流式job进行统一管理统一注册。注册服务具体包含以下步骤:
步骤一:工程师重写注册服务中的一个开放api主程序将自己的相关参数比如job名称,job负责人,job启动命令等信息传入到接口中即可
步骤二:将自己重写的api主程序加入批量注册管道以方便服务器或者CDH集群重启可以直接批量注册
步骤三:将重写的api主程序执行注册
发现服务:
如图2所示,监听正常的任务,发现了异常情况时,进行对应的操作处理并在注册中心对应异常任务的状态修改,为告警和重启服务提供发现异常的服务,包含以下步骤:
步骤一:定期去查询注册中心中所有的状态显示正常的任务名
步骤二:将查到的任务名,逐个进行在服务器上此任务是否在yarn(一种通用的资源管理器系统,任务的运行环境由此系统进行调度)上存在进程的判断,如果不存在进程,表示此任务已经不存在,则将注册中心中此任务的状态修改为失败,如果存在进程,进行下一步判断
步骤三:yarn上存在相应的进程时,表示有此任务的运行空间,进一步查看这个任务是否是在运行状态,可直接调用flink提供的API接口查看对应任务的实际运行状态
步骤四:调用接口,可得到一个json格式字符串,解析获得key为state的value值,即为任务的实际状态,如果是RUNNING,表示正常运行,则此任务是正常状态,不作处理,如果是RESTARTING,表示此任务已经dead,此时需要先用命令kill掉yarn的对应进程,再进行注册中心状态的修改,将状态改为失败
步骤五:如果状态为其他的状态,表示任务目前处于异常状态,但任务仍然在运行,此时需要在注册中心进行状态的修改,将状态改为其他的状态。所述其他的状态指正常状态和失败状态意外的状态。
告警重启服务:
告警重启服务是MAFJ的核心部分,相当于大脑,承担着观察和发声和奔跑的作用。轮询注册中心的非RUNNING状态的job。具体包含以下步骤:
步骤一:轮询监控注册中心的非RUNNING状态的job等到一个列表
步骤二:列表中短期job和非失败的任务只需要告警出来
步骤三:将长期类型的失败状态的任务需要告警另外需要重写执行注册服务中的开发api主程序重新提交job重新注册job到注册中心
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。