面向气象信息业务的自动化运维设计应用
2023-08-27李新庆陈文琴王艳萍王添男
李新庆,孙 超,陈文琴,王艳萍,王添男
(1.中国气象局旱区特色农业气象灾害监测预警与风险管理重点实验室,宁夏银川 750002;2.宁夏气象防灾减灾重点实验室,宁夏银川 750002;3.国家气象信息中心,北京 100081)
随着气象业务逐步向信息化、智能化、数智化时代迈进,以气象大数据云平台(天擎)、气象综合业务实时监控系统(天镜)等为代表的气象信息系统虽然可完成云原生底层系统重构和功能统筹集约[1-2],但是也造成日益凸显的运维服务问题。传统气象信息系统运维主要依赖业务人员对系统的主观经验,造成运维故障处置工作的效率低下。为此,开展自动化运维技术应用研究,对气象信息业务系统稳定、有序运行具有十分重要的意义。
DevOps将开发和运维两个领域进行统筹合并,促进开发、运维和保障部门之间沟通、协作和整合[3]。同时,以SaltStack、Ansible 等自动化工具[4]促使开发运维一体化成为可能。目前,部分学者已将DevOps和自动化工具在不同行业进行应用[5-7],提升运维管理水平。因此,文中采用DevOps和自动化工具构建气象信息业务系统自动化运维应用,解决国省气象信息运维难点、痛点问题,并将全部功能融入“天镜”系统中进行全国推广,在实际业务应用中获得一定效益。
1 目标和架构设计
1.1 目标设计
自动化运维开发目标采用基于DevOps 架构设计思想,覆盖DevOps 对软件生命周期中需求设计、开发、测试、发布、部署和交付等环节,规范国省气象信息业务运维场景的自动化开发流程,具体开发目标设计如图1 所示。
图1 基于DevOps的自动化运维开发目标设计
以开源性、便捷性和扩展性为原则,同时兼顾气象业务用户的实际操作性[8],对自动化运维开发进行目标设计,包含:①环境准备,针对自动化运维开发所依赖的环境进行配置、授权,提供基础平台支撑;②需求设计,采用QXKB 进行需求设计和知识共享,并提供Git、SVN 等方式的代码管理功能;③开发,提供在线脚本开发编辑器,支持Python、Shell 等开发语言;④测试验证,系统提供Jmeter 等压力测试工具,对开发代码执行过程进行测试验证,并将关键结果回写到CMDB(Configuration Management Database)中存储;⑤发布,对测试通过的代码进行编排、场景发布,打包成tar文件格式;⑥自动化部署,通过SaltStack等开源DevOps 自动化工具,对自动化脚本进行自动化部署;⑦监控,采用Nagios、Zabbix 等工具,对自动化运维目标主机进行监控和日志记录,满足气象信息系统的持续运维需求。
1.2 平台架构设计
平台架构主要包括自动化运维平台、监控平台、CMDB 和自动化辅助工具四大部分。其中,自动化辅助工具是自动化运维开发的一系列工具集合,包括告警台(Alert)、服务流程管理(ITSM)、报表分析(Report)、云监控(Monitor)等功能模块。自动化运维平台主要以CMDB 为中心,通过CMDB 与ITSM、Alert、Monitor、Report 等模块进行对接和集成,达到各个模块功能无缝衔接,最终实现气象业务的自动化运维目的。平台架构如图2 所示。
图2 自动化运维平台架构图
CMDB 在自动化运维平台设计中承担最基础的角色,定义自动化运维平台需要管理的元数据,用于存储、管理、映射气象行业部门中的基础资源、业务应用、运维管理等配置信息。CMDB 除了作为资产管理和ITSM 流程数据存储以外,还承担自动化运维流程和工具集成的角色,实现自动化运维场景中统一数据的消费、执行、回写和闭环流程等功能[9]。
2 CMDB设计
2.1 CMDB模型构建
CMDB 模型构建定义统一的元素描述模板,使其具备云计算环境下的云服务新特征。CMDB 模型通过配置项(Configure Item,CI)对全部关联细节进行抽象,形成CI、属性和关系(Configure Relationship,CR)三个核心要素[10],组成有效的CMDB 模型对象,实现自动化运维中各类配置数据的统一管理。
按照CMDB 信息模型所描述的结构,对CI 模型中CI 层级(深度)和范围(广度)作出定义[11],将CMDB 配置域定义为业务应用域、平台资源域、虚拟资源域、基础设施域和管理资源域五类。每个配置项域内可根据关联紧密关系,将配置项再细划为二级配置项组和三级配置项类。其中,业务应用域根据“天擎”系统的技术特征,将经过云原生改造的气象核心业务系统进行二级分类定义,主要包含智能网格预报系统、公共气象服务发布系统、气象业务内网、气候监测报警系统等气象部门重要信息系统;管理资源域包含项目合同、单位机构、单位人员、设备厂商等管理信息。
2.2 CMDB配置项关系设计
配置项关系(CR)的设计是自动化运维故障诊断定位、告警关联分析和性能监控等问题处置的关键[12],通过明确CR 关系,就能勾画出较为清晰的气象信息业务自动化运维场景。由于自动化运维技术依赖于云原生技术和各类应用软件的云化改造,因此,基于云平台构建CMDB 配置项关系更加复杂多样,文中简要概括为依赖/支持关系、应用/被应用关系、安装/安装于关系、运行/运行在关系、连接/被连接关系、包含/属于关系等[13]。以操作系统为例,其配置项关系如图3 所示。
图3 配置项关系图
2.3 CMDB表结构设计
对自动化运维在气象信息系统所需的资源进行梳理,确定自动化运维开发流程所需的配置项关系,精简冗余的配置项(CI)信息,实现对应存储表的结构设计。由于MongoDB 具备高性能、易扩展、使用简单等特点,故文中采用MongoDB 对CMDB 数据存储结构进行设计实现,将运维业务抽象为模板、资源、类型和关系。MongoDB 作为一款文档型非结构化数据库[14],支持松散的数据结构,其数据组织采用面向集合的方式(类似关系型数据库中的表),通过BSON(Binary JSON)进行数据存储。
资源模型和资源数据构成自动化运维CMDB设计中最为核心的数据存储表结构。资源模型是对被纳管对象进行建模的结果,该对象的存储字段和对象之间的关系分别由资源模板、资源类型和资源属性等表组成。资源数据是资源模型和关系定义实例化的结果,由资源对象、资源关系等表组成。自动化运维CMDB 核心表之间关系如图4 所示。其中,_id 为默认创建的唯一索引,为ObjectId对象。
图4 CMDB主要表结构关系图
3 自动化运维功能设计
3.1 运维流程设计
自动化运维开发需要针对不同运维业务做出更为细粒度的功能抽象,文中提出通过操作的形式将各功能分解为最小执行单元。操作承担具体的执行处理动作,编排针对操作流程进行集中组织,以达到自动化运维开发各环节之间的有效衔接。因此,编排作为自动化运维功能中最为核心的组成部分,用于协调操作、资源和用户三者之间的关系,以满足气象信息运维业务的多元化需求。
自动化运维功能主要概括为四个步骤:①首先将业务运维功能进行分解、抽象,形成操作,在操作中完成自动化运维脚本的测试开发,开发支持Python、Shell、VBScript 等多种语言;②通过Web 平台提供的可视化编排设计器将多个操作进行组织,传递入参、出参等信息,组成自动化运维业务场景下的编排流程;③通过人工或者自动的方式完成编排的作业调度,自动方式采用Quartz 任务调度触发器进行任务执行,支持Crontab 表达式的执行策略编辑,满足任务的周期执行和定时执行;④最后将执行结果进行数据组织、合并,采用RESTful API 服务接口,通过报表分析(Report)、综合展示(Show)或告警台(Alert)等方式为用户反馈自动化运维结果。
3.2 基于Activiti的流程编排可视化
自动化运维需为用户提供一个具备可视化、便捷化的流程编排管理模块,以满足国省两级通用性的开发需求。针对上述问题,采用基于Activiti 开源工作流引擎的编排流程设计,用户通过表格、图形和代码三种方式进行业务流程编排可视化设计。
Activiti 是一款流行的业务流程管理开源框架,支持业务流程建模标注(Business Process Modeling Notation 2.0,BPMN 2.0)规范[15],其核心理念是将业务过程模型分解为活动节点和控制节点,活动节点用于描述任务,控制节点用于描述活动之前的控制流[16]。结合BPMN 2.0 规范,对文中所设计的编排流程进行标准定义,包含开始、任务、网关、流、人工处理和结束六个环节。用户可根据上述环节进行自动化运维操作流程的任意组合设计,以满足气象信息系统多种运维场景的流程编排业务需求。编辑模块自动将所设计的流程模型转换为XML(Extensible Markup Language)文件,提供给Activiti 引擎进行调用解析。Activiti 引擎通过RESTful API 与客户端进行最终交互。基于Activiti引擎的编排流程设计如图5所示。
图5 基于Activiti的编排流程设计
4 自动化运维Web平台实现
自动化运维Web 平台是面向用户进行自动化开发、配置管理、服务编排、任务作业等功能为一体的前端界面,也是自动化运维功能设计面向用户的最终呈现。其主要功能包括编排、操作、资源等自动化流程的配置管理功能,以及运维场景、定时作业、作业总览等自动化运维Web 可视化功能。
构建面向气象业务的国省通用自动化运维Web平台,采用SaltStack 后端DevOps 自动化运维工具和Django 前端Web 框架技术相结合的方法。SaltStack主要承担Web 后端自动化运维采集和控制功能,采用SaltSack Master 节点集群方式部署,实现后端采集代理(Agent)的配置管理和远程控制。前端Django框架提供Web 用户操作和可视化封装功能,且两者之间通过RESTful API 接口进行通信,实现自动化运维功能的前后端轻量级交互和快速响应。
5 功能应用
5.1 应用示例
“天擎”系统作为国省两级气象部门“云+端”业务模式新格局的核心软件技术平台,全面统筹管理观测、预报、服务等地球系统大数据,提供“数据、算力、算法”统一的平台化服务。该系统以云原生技术重构气象核心业务功能,主要由交换质控系统,产品加工系统、挖掘分析系统和存储服务系统共四个子系统组成。目前,已经实现全国部署和业务试运行,成为全面支撑气象预测预报和公共服务的气象信息数据支撑平台,其业务重要性不言而喻。因此,对于该系统的自动化运维功能需求迫切。
在传统系统运维方面,针对“天擎”系统日常运维工作主要包含:①检查各服务器基础资源性能是否正常以及关键进程是否正常;②检查系统数据产品加工数量是否正常以及数据入库完整性是否正常;③检查中间件性能指标是否正常,消息中间件队列是否积压,计算引擎对应数据目录是否积压;④检查服务接口运行是否正常,接口并发用户数、请求响应时间等性能指标是否正常,是否能够对外提供接口数据下载服务。为此,需借助自动化运维工具改善传统运维管理水平,提升业务人员针对异常问题的处置效率,保障“天擎”系统高效、稳定运行。
以“天擎”交换质控系统的一次自动化运维巡检为例,该子系统作为“天擎”系统的前置环节,承担气象观测数据、气象产品数据的快速汇聚、质量控制和解码入库工作,对应的自动化运维流程和各环节任务耗时如图6 所示。其中,①-⑥环节为任务并行执行,任务执行时间按照耗时最长统计,任务结束后再顺序执行⑦-⑩环节,故自动化巡检任务总耗时为67 s,有效提升了传统运维工作效率。
图6 自动化运维应用示例
针对“天擎”系统进行日常自动化运维巡检性能指标设计,主要包括:①基础资源,对服务器、存储设备、端口等指标巡检;②系统应用,对操作系统、非结构化数据库(MongoDB、Elasticsearch)、结构化数据库(MySQL、Oracle)、缓存、消息中间件、Web 中间件等指标巡检;③核心业务,对支撑“天擎”系统各个功能的关键进程和服务接口等指标进行巡检。基于“天擎”系统的自动化运维巡检关键性能指标如表1 所示。
表1 “天擎”系统自动化运维巡检关键性能指标
5.2 应用效益
为满足气象信息系统集约化建设要求,自动化运维平台各项功能已融入到“天镜”系统中,该系统的一个核心功能模块(Automation)提供自动化运维服务。随着“天镜”系统的业务化运行,自动化运维功能已在国省两级气象部门进行推广使用。经过为期一年的业务应用,在国家级层面,涵盖气象业务运维场景八类,子场景42类,开发编排38个,开发操作脚本176个,自动生成作业108 476个,生成各类报表11 983份,发送告警通知83次,故障处置效率较运行前提升28%。在省级层面,已完成向全国各省的开发和应用推广工作,涵盖业务场景六类,开发和共享省级通用编排操作49 个,满足气象核心业务的日常运维功能。
6 结束语
自动化运维是提升气象信息化服务水平和增强气象信息核心业务智能运维的重要途径之一,也是构建国省气象一体化运维体系、提升协同运维、增强综合气象业务监控的有效方式。因此,结合气象业务发展趋势和云时代技术特征,开展基于DevOps 自动化工具的气象信息自动化运维设计应用研究,构建国省统一、标准的自动化运维Web 平台,有效提升气象信息系统运维服务能力。文中对自动化运维目前的研究现状进行分析,并对自动化运维开发关键技术进行详细阐述,将研究成果在国省两级气象部门进行业务应用。该项工作不仅为后续开展故障自愈、知识图谱、根因分析等智能运维(AIOps)技术研究奠定基础,还能为其他行业部门信息系统自动化运维设计与实现提供借鉴价值。