基于气象大数据云平台的自动化告警应用研究
2022-01-23王添男李新庆徐晓庆黄艳红王艳萍任柏帆
王添男,李新庆,徐晓庆,黄艳红,王艳萍,任柏帆
(1.中国气象局旱区特色农业气象灾害监测预警与风险管理重点实验室,宁夏银川 750021;2.宁夏气象防灾减灾重点实验室,宁夏 银川 750021;3.中国电信股份有限公司 宁夏分公司,宁夏 银川 750002)
近年来,国家以及各省级气象专家纷纷开展了气象数据传输监控的研究、建设工作。国家气象信息中心建立了全国气象综合业务实时监控系统(天镜),初步实现了“全流程、一体化、可视化”的监控流程[1]。向筱铭等[2]、李志鹏等[3]、赵冰等[4]等开发了数据传输监控系统,在解决本省气象数据监控问题的基础上为专业人员有效监控数据带来诸多方便[4]。随着气象业务在社会各行各业地位和作用的提升,社会各界对气象预报的服务需求也越来越高,一些学者[5-7]认为精细化是气象工作发展的重要趋势。张晓冬等[8]、邵明轩等[9]、王海宾等[10]设计开发了精细化城市天气预报系统。上述学者中,有些是在气象领域研究开发出一些产品,但是这些产品大多来自于不同的课题、项目,并且分散在不同的单位系统中[11];有些是基于为全国气象部门提供统一数据环境的综合气象信息共享平台(CIMISS)开展的研究[12]。这些研究没有充分利用气象大数据云平台实现资源的有效整合,让资源利用率达到最大化。
目前,基于气象大数据云平台的研究工作还处于探索阶段。本文结合气象业务技术体制重点改革方案和信息化工程发展方向,对气象大数据云平台省级自动化运维开发进行了研究,主要工作包括:梳理省级气象大数据云平台数据传输流程,为自动化告警技术奠定数据基础;设计数据监控和告警模块,对体系架构和核心功能模块进行详细阐述;设计全流程监控告警数据库,给出系统的实验结果。
1 气象大数据云平台数据传输流程
气象大数据云平台作为全国气象部门的核心信息化平台,主要围绕大数据资源进行技术构建,具备海量数据存储、全业务贯通、数据高效应用的能力,可提供“数算一体”的平台化服务,对天气预报的精细化起到基础数据支撑作用[13]。
在大数据云平台中,数据的全生命周期包括数据汇聚与分发、数据存储与加工、大数据应用与服务3 个阶段,主要覆盖数据收集、数据解码、质控清洗、产品加工、存储管理、挖掘分析、访问服务、预报和服务支撑等环节。数据全流程由省级气象综合业务实时监控系统(天镜)进行统一监控运行,气象大数据云平台数据流程如图1 所示。
图1 气象大数据云平台数据流程图
1.1 数据汇聚与分发
数据收集的方式有多种,主要包括:利用本省以及外省观测系统进行气象数据的收集;从政务信息共享平台中获取部委共享数据;采用交换、众创等多种渠道收集行业和社会用户中与气象相关的数据。数据分发过程以省级观测系统为其中一个节点按需进行共享分发,对获取的数据进行快速解码和质控清洗,存入大数据资源库,并同步到大数据云平台备份中心和公共云节点。
1.2 数据存储与加工
本阶段基于加工流水线和算法库,对收集到的大量基础数据进行深加工,形成高质量的数据产品,回存到大数据资源库。存储管理模块对数据产品按策略进行管理,包括多库副本同步、分级存储迁移、备份归档等。挖掘分析模块由大数据资源库提供数据支撑,可进行挖掘训练和建模。访问服务模块对所有数据资源提供统一的访问服务,包括数据检索、计算、可视化和回写,当本地资源无法满足时,自动导航到大数据云平台的其他节点提供服务。
1.3 大数据应用与服务
本阶段的数据流程包括两个部分:后端产品加工和前端应用服务。后端产品加工是指用户按需将模型注册到云平台的算法库中调度运行,产品直接回写到大数据云平台中。前端应用服务基于大数据云平台服务接口,提供交互分析、数据检索、数据汇交、可视化等应用和服务功能。
1.4 监控流程
数据全流程由省级气象综合业务实时监控系统(天镜)进行统一监控,采用两横两纵一体化监控布局,实现“全流程、一体化、可视化”的监控流程[1]。监控系统对每时次上传的数据实现数据收集(省级、国家局)、分发、入库处理、专有云同步、数据访问时效以及历史数据查询等模块监控,在气象大数据云平台中为数据生命周期提供全流程监控。
2 数据监控及告警模块的整体设计
在定时任务调度领域中,Quartz 是一个功能丰富的轻量级开源作业调度库[14],可单独成为任务调度的应用,也可以集成到任何Java 应用中,支持JTA事务和集群,可以帮助用户执行任何想要执行的规律性任务。Quartz 框架中核心概念包括:任务(Job)、触发器(Trigger)、调度器(Scheduler)。Job 是任务实体,是用户需要具体实现的任务类。JobDetail 用来描述Job 的实现类及其他相关的静态信息。Trigger 是执行任务的触发器,会根据触发规则去启停任务或执行任务实体设定的操作。Scheduler 是执行任务调度的调度器,负责整合绑定Job 和Trigger[15]。
2.1 数据监控及告警模块体系结构
Quartz 工作流程针对定期执行的规律性任务设定触发器,由调度器将任务和触发器关联之后决定任务的开启、终止、等待或重启。三要素各部分之间的体系结构关系如图2 所示。
图2 三要素体系图
天气预报的精细化是现代天气业务发展的标志,是天气预报技术发展到相对成熟阶段的必然趋势[16]。以精细化产品资料为例,在本系统中Job 的职责是查询数据库中的产品资料是否写入,预判不同的情况并向用户做出相应的反馈。精细化预报产品在每日的多个时次都需要上传数据,其中对于到报时间成规律性的节点可设定相同的触发条件执行任务,其他时次也可设定单独的触发器。Quartz 框架中存在4 种触发器(图2),系统采用相对比较灵活的CornTrigger 触发器。Quartz 框架在调度器中封装了多种方法,可决定任务执行状态。
2.2 任务实体
在任务实体Job 中预先定义希望在未来能被调度程序执行的任务,过程中需要编写和任务实体Job 对应的接口实现类,实现接口中execute 方法[17]。自定义任务的业务逻辑是在execute 方法中具体实现的。以具体项目为例,可预先定义的Job 任务类指需要实现查询城镇天气预报数据RFFC 是否在有效时间内上传,并给出对应的反馈让用户周知。Job 只定义任务内容(本项目中定义为RffcJob),而无关任务的触发和调度。
JobDetail 中可以为Job 实现类提供许多属性设置,其中一些主要的静态信息可在其中完成定义,主要包括JobDetail 的名称、隶属的组、JobClass 等,前提是首先需要创建JobDetail 实例,并与RffcJob 进行绑定。
其中RffcJob 需要实现Job 接口。withIdentity 中参数1 是设置任务的名称,也是唯一的实例;参数2是设置任务组的名称。
2.3 触发器
Job 中包含了要执行的任务逻辑,但是并不涉及如何执行。系统中任务实体RffcJob 需要设计具体的触发器Trigger 去触发执行指定的任务实体。在TriggerBuilder 中可以设置该触发器一些最基本的功能,包括指定任务RffcJob 执行时间、运行的总次数、任务之间的执行间隔、开始触发时间、结束触发时间等。4 类触发器中最常用的有SimpleTrigger、CornTrigger。对需要在规定的时间内仅执行一次或需要以一定的规律重复执行的简单任务,SimpleTrigger 就可以实现。CornTrigger 的触发条件基于Corn 表达式之上,可以支持更具体、更复杂的调度。本平台会根据Corn 表达式执行任务并生成日志,值班员可查看日志判断任务执行情况和故障。
在Quartz 框架的核心三要素中,Trigger 相对于Job 起到触发驱动的作用,否则作业将无法运行。Job和Trigger 之间存在一对多的关系,即项目中一个任务实体可以对应多个Trigger,但是一个Trigger 只能服务于一个Job。本系统中一个CornTrigger 触发器不能满足任务的触发条件,这种情况下可采用创建多个Trigger 并指派给同一个Job 的方式。
2.4 调度节点
调度器创建的方式有多种,系统中采用默认实例化调度器的方式创建了工厂获取调度的实例scheduler 作为与调度程序交互的主程序接口。在调度节点创建完成后,系统一直处于“待命”模式,它包含启动、暂停、关联Job 与Trigger、恢复、删除等方法,会随着start 和shutdown 方法的调用而启停。Scheduler 通过调用scheduleJob 方法关联任务实例和触发器,保证按照触发器定义的条件去执行任务。具体指令为:scheduler.scheduleJob(jobDetail,trigger),其中第1 个参数是创建的任务实例,第2个参数是触发器的名称。
3 数据库设计及实验测试
3.1 数据库设计及实现
在系统中省级气象数据传输过程处于枢纽位置,承担连接国家局和台站以及各省级之间数据交流的任务。除此之外,气象数据在气象预报、公众服务、气候预测等方面的研究中起到基础支撑作用。为了能够提供更准确和更全面的服务,系统对数据传输的时效性要求比较高。在数据表的设计中需要考虑收集和分发两个方面的问题,具体设计见图3。
图3 数据表设计
气象数据存在很多不同的种类,文中在上行传输的13 类数据中选择城镇天气预报数据资料说明数据收集情况。图3 显示的数据表中字段较多,不同字段名的释义可详见表1。
表1 数据表字段说明
设计过程中选取表1 中WATCH_TIME 字段获取当前时次,赋值给查询语句查询当日数据的到报情况。整体的查询结果存在两种情况:如果数据并未到报,COUNT_REALCOLL(实收数)字段为0,则调用执行pm.music_fail 方法,提醒值班员报文未到;如果RFFC 数据已经在合理时间内到报,数据表中COUNT_REALCOLL 字段会显示具体的到报数目。以宁夏回族自治区为例,每日精细化预报数据资料上传过程中,不同时次上传的台站数目不同。经过判断,符合上传台站的数据则调用执行对应的方法,告知值班员数据收集正常。
3.2 实验测试
实验测试所采用的数据均来自于气象大数据云平台(宁夏分系统)实时监控系统。每日数据量级可达到38 GB,数据均存储在分布式数据库Elasticsearch 中,监控元数据存储在MySQL 数据库中,为平台运行提供基础数据支撑。平台的功能性、可用性、稳定性、可维护性对系统的运行至关重要,因此为确保系统能够正常稳定运行,通过压力测试和执行测试两个方面进行性能评估。平台部署在DELL 服务器上,并配置英特尔8 核64 位处理器,4.01 GHz、2 条8 GB 的内存,该配置可满足系统日常业务的读写操作需求。通过使用Jmeter 模拟多线程进行压力测试,初始化线程组相关信息如图4 所示。
图4 Jmeter 初始化线程组
图5 为模拟测试聚合报告。测试表明:在高并发状态下,压测结果可满足实际需求。
图5 模拟聚合报告
目前系统试运行6 个月且运行稳定。业务试运行过程中,平台能够按照Corn 表达式设定的触发条件调度执行任务,未出现差错。在报文收集异常的情况下,系统能够自动执行对应程序,播放音频提示值班员数据收集异常情况;到报正常的情况下,系统执行数据收集正常的方法。
4 结论
监控气象数据传输过程是保证气象数据质量的基础,其在气象预报、公众服务、气候预测等多方面的研究中起到支撑作用。气象大数据云平台能够围绕大数据资源进行技术构建,实现数据资源的有效整合。本文提出在气象大数据云平台中云化融入Quartz 定时任务框架实现数据资料传输监控和自动化告警功能的设计,能够提升综合气象信息系统运维监控保障能力,增强本地自动化告警水平,为业务全流程的自动化监控工作奠定了基础,同时为后续自动化运维工作提供了一种解决思路和攻关方向。