风云三号气象卫星地面系统IT运维数据处理平台设计与实现
2018-04-02林曼筠赵现纲卫兰范存群谢利子
■ 林曼筠 赵现纲 卫兰 范存群 谢利子
为了保障风云极轨气象卫星地面系统稳定运行、严格按业务流程处理风云三号02批极轨气象卫星数据,为其相关子系统提供统一高效的运维数据支撑,研究和设计了基于Elasticsearch大数据实时搜索分析引擎的新型IT运维数据处理平台,可及时定位系统中的异常事件;基于应用运行特征数据分析,实时掌握业务运行性能。
风云三号02批气象卫星地面系统实现了我国第二代极轨气象卫星地面系统的业务化运行,带动我国新一代极轨气象卫星地面系统进入成熟发展阶段。风云三号02批卫星的两颗卫星,按照上、下午星布局安排,两颗卫星总共载有遥感探测仪器15类18台套,观测通道增多,分辨率提高,数据传输速率提升,每颗卫星每102 min完成一次绕地球一圈的观测,双星一天可获得四次覆盖全球的观测资料,每日新增原始观测数据及各级产品数据约6.2 TB,数据量巨大而处理流程复杂;而随着IT技术和产品的发展,支撑上述业务运行的IT 基础支撑环境,已经由第一代数量少而单体功能强大的大型机、第二代高可靠高性能小型机组合,发展到目前第三代分层分布式异构集群,运算能力、存储容量和网络带宽都成指数增长,单机功能相对弱化而设备数量剧增。风云三号极轨气象卫星地面系统的业务化运行,对数据处理的成功率和时效性都有严格的要求,这样的实时数据处理系统,要求平台运行稳定可靠、业务流程安排严谨守时,有必要的容错和应急处理机制,能及时发现并处理业务流程中的数据处理异常事件,风云三号极轨气象卫星地面系统IT运维数据处理平台对支撑卫星运行有着重要的作用。
1 传统IT运维数据处理方法
IT运维数据,主要是指IT数据中心运行过程中产生的系统负载信息、设备和应用运行日志、系统安全相关的数据。按照数据记录的特点,上述数据可分为时序性数据和文本型数据,时序性数据主要是指数据格式里包含时间(timestamp)字段的数据,通常的格式为timestamp, key, value,例如CPU使用率、磁盘读写速率,等;文本型数据,主要是指以文本方式记录的数据,例如:系统日志、应用日志、安全日志,等。本文主要针对这两种类型的数据处理方式进行研究。
IT运维数据的采集、处理和分析具有非常重要的意义,可以为数据中心及决策提供重要的数据支撑。以往,IT系统设备数量不多,数据处理应用、每日运行的作业数量有限,风云卫星地面应用系统数据处理中心的IT运维数据处理平台以结构化数据为主,运维数据处理建立在相对独立的关系型数据库和搜索引擎框架上,采用传统基于关系型数据库的架构开发,这样的架构,优点是整个运维平台的故障和问题定位相对容易。
以时序型数据为例,时序型数据可以存储在多种类型的数据库中,不同的数据能支持的查询类型存在区别。传统的运维数据处理系统往往用关系型数据库存储时序型数据,其存储方式如下:
这类数据的查询方式是:
即:查询时间段在B和C之间的所有metric_name为A的数据。这类数据写入数据的形式与最后查出来的维度必须是完全相同的,且数据库表结构的字段及类型完全固定,如图1所示。
图1 传统时序型数据处理流程
对于上述数据处理方式,由于查询和存储的数据字段完全匹配,查询模式很容易优化,处理速度比较快。但是这种方式也存在一些问题,如:
1)当数据展现端需求发生变化时,数据源需要改变,而上述传统架构不能快速响应数据源的变化;
2)当数据查询维度增加时,不同维度数据组合将产生巨大的数据量,而如果事先完全存储这些维度的数据又将带来空间的巨大浪费。
对于文本型数据,其存储方式也比较类似,只是value部分改为日志的文本信息,以字符型存储,当上层业务要求对文本型数据进行搜索操作时,还需要在关系型数据库的基础上再配置一套搜索引擎。
随着分布式计算技术的飞速发展,卫星中心的建设越来越多依托于集群架构的分布式计算环境,部分业务依赖的计算设备由原有的单机高配转化为多机低配,虚拟化和云计算更是在此基础上加速了数据中心容量的扩张。中心计算设备数量的增加带来了运维数据的海量增长,完全基于关系型数据库(如Mysql、Oracle等)的运维数据处理方式已经不能满足数据中心IT系统发展的需求。此外,对数据中心的精细化运营要求IT系统能够数据中心发生的事件进行关联分析,这对数据处理方式的设计提出了更高的要求。
2 基于大数据处理架构的IT运维数据处理平台
互联网的普及带来了数据的爆发式增长,也推动了数据处理技术的发展,诸多数据处理框架层出不穷,数据处理能力也不断增大。Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎,它创新融合了分布式数据库和全文搜索等技术,为实时搜索数据、迅速提炼有效信息提供了可行的技术支撑。白俊等提出了基于Elasticsearch实时进行进行大数据搜索的软件集成方案,实现了大规模日志的实时搜索。姜康等设计了一种基于Elasticsearch的水利元数据搜索与共享平台,保证了用户准确高效地获得水利行业数据。
为构建高效数据运行平台,实现对不断增长的运维数据的实时分析,风云三号极轨气象卫星地面系统IT运维数据处理平台(以下简称运维平台)的设计基于以下原则:1)数据库和搜索引擎设计为同一个框架内不同组件;2)事务型数据和过程数据分离;3)采用分布式架构,运维数据处理分析能力可随着业务发展而持续扩展。
2.1 运维平台架构设计与实现
按照上述设计原则,结合对“Elasticsearch”(以下简称ES)技术特点的研究,我们基于ES架构设计风云气象卫星地面系统IT运维数据处理平台。该平台在每个运维管理设备上安装运维参数采集Agent,Agent采用模块化设计,每种数据采集组件以插件形式部署;Agent所采集到的数据汇聚到运维平台服务器端,并由服务器端程序写入分布式数据库。
图2对运维平台的数据和业务逻辑进行了直观说明,从软件功能看,该运维平台主要包含以下组件:
1)数据采集组件:数据采集组件主要包括数据采集客户端(Pagent)和数据汇聚端(PCollectd),每个Pagent都支持本地的数据缓存,当客户端和服务器端出现连接异常时,保证一定时间内不会出现数据丢失的情况。PCollectd负责汇聚所有Pagent发送的数据,并送到消息队列中,如果与消息队列之间的通讯有问题,则将数据缓存到本地磁盘。
2)数据传输组件:数据传输组件(Tower)包括消息队列、聚合组件和消费组件。消息队列用于消费Pcollectd中的数据,同时完成对数据的过滤;聚合组件负责按照一定规则对裸数据进行聚合,并将聚合数据保存到数据库中;消费组件负责将裸数据写入数据库中,由于未来数据量有可能非常大,因此上述组件全部支持分布式部署。
3)数据存储与分析组件:运维数据将存储在两种类型的数据库中,一种是支持全局索引的分布式数据库ES,另一种是关系型数据库Mysql。ES主要用户存储裸数据和聚合数据,同时按照用户定义的字段建立全局索引,Mysql主要用于存储配置数据以及一部分与业务相关的聚合数据。
4)数据展示组件:本系统中的数据展示主要分为两部分,一部分是系统数据(如:资产数据、系统配置数据,等),另一部分是运维数据。为了更好的对运维数据进行展示,我们选择在Grafana框架的基础上进行二次开发。
5)配置管理组件:配置管理对系统的资产、用户、数据分析策略、告警策略进行配置,系统支持自定义数据分析策略和告警策略。
风云三号02批极轨气象卫星地面应用系统中运维平台的物理部署拓扑图如图3所示。
图2 运维平台业务逻辑示意图
图3 运维平台物理部署拓扑示意图
从硬件组成看,运维平台主要由三部分构成:运维数据采集服务器、数据存储与处理ES集群、数据展示和配置管理服务器:
1)运维数据采集服务器:运维数据采集通过Agent/Server方式实现,Agent由模块化软件实现,部署在各运维管理对象中,负责采集运维数据并发送给服务器节点;运维数据采集服务器节点部署数据采集服务器端软件,主要包括数据采集组件和数据传输组件,负责运维数据收集、入库;
2)ES集群:主要部署数据存储与分析组件,由三台ES服务器节点组成,其中1台服务器为ES主节点,负责管理和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点;2台为ES数据节点,是存储索引数据的节点,主要对文档进行增、删、改、查等操作,聚合操作等。ES数据节点兼作为主节点的热备,主节点也可以同时兼任数据节点。
3)数据展示和配置管理服务器:该服务器节点主要部署数据展示组件和配置管理组件,安装Mysql数据库以及用于配置管理的Web服务,主要负责系统中数据分析策略、告警策略、资产管理、用户管理等功能配置,并负责数据展示。
2.2 运维数据采集范围和面向对象的存储方式设计
运维平台支持采集多种类型的运维参数数据,根据风云三号02批极轨气象卫星地面应用系统的配置,目前采集的数据主要包括:
1)服务器:主要是指AIX和X86服务器的CPU、内存、网络、磁盘、系统日志、系统配置信息等数据;
2)交换机:主要是指交换机配置信息、端口通讯信息等数据;
3)磁盘阵列;主要是指磁盘阵列的配置信息、挂载信息、文件系统读写信息等数据;
4)文件系统:主要是指NFS文件系统和GPFS并行文件系统的运行数据;
5)作业调度系统:主要是指业务系统使用的LSF作业调度系统的运行数据;
6)数据库:主要是指业务系统使用的Oracle数据库的运行数据;
7)应用软件:主要是指业务系统软件的运行数据;
为了实现对上述运维数据的关联分析,在设计数据存储方式时,对时序型数据和文本型数据采用了相同的方式,且可以根据实际所采集到的运维参数种类灵活存储信息,这种方式既考虑了数据的可扩展性,同时也考虑了搜索查询高效性。数据存储方式设计为:
[time_stamp] [key1] [value1] [key2] [value2] [key3][value3] … [keyN] [valueN]
在这种存储方式下,每个time_stamp对应的时间点上,key-value的键值对数量是可扩展的,因此,不同时序型数据和文本型数据都可以存储到同样的表结构中。这种存储方式优化的查询方式不限于查询原始数据,而是可以组合查询条件并且做聚合计算,比如:
SELECT key2, sum(value1) / sum(value2) FROM metric WHERE key1 = “A” AND timestamp >= B AND timestamp < C GROUP BY key2
与传统关系型数据不同,在这种数据存储方式下,数据的写入形式和展现形式可以一致、也可以互不相同,如图4所示,原始数据、写入数据库的数据以及最终展现的数据都可以是不同维度、不同的形式,这就意味着,我们可以根据业务流程上下游的约束,从所得到的运维信息中,挖掘提取出契合业务场景的分析结果。
2.3 数据分析设计与实现
在整个运维平台构建中,数据存储与分析组件是最核心的功能。在新型存储方式的配合下,数据分析组件按照所配置的策略对运维数据进行自动化多维度的关联分析,及时发现系统运行过程中存在的问题,并提供合理的解决方案。数据分析组件采用决策树算法对运维数据进行分析。决策树是一种常用的分类方法,将运维数据异常的原因构建成一种树状结构,其中每个节点代表一种可能类型。决策树基于现有的运维经验构建,并在系统运行过程中不断优化和改进。
在构建运维数据分析决策树时,我们按照运维数据的类型首先在配置管理系统中将数据分为动态和静态两大类,静态数据主要是资产的一些静态信息,动态数据主要指资产运行过程中产生信息。在配置管理系统基础上,构建资产之间的逻辑依赖关系,例如:运行存档业务的服务器与存档业务之间的依赖关系,共享文件系统和作业调度系统之间的依赖关系,等等。在这种定义下,某个环节出现异常一定会导致与其有依赖关系的另一个环节出现异常。基于资产的逻辑依赖关系,结合历史上的运维经验,即可构建出运维数据分析的决策树。
运维数据分析决策树的构建不是一成不变的,在系统运行的过程中,决策树中的每个节点都可以不断进行优化,以提升运维数据分析的准确性。下面以两种数据分析策略为例说明运维平台根据决策树自动完成运维数据分析的流程。
2.3.1异常事件实时定位
气象卫星数据处理系统对时效性要求高,业务系统中的任何异常都有可能导致系统故障,影响卫星数据处理的实时性,最终可能造成重大损失。通过对运维数据进行实时挖掘,找到其中代表异常事件发生的关键记录,并通过一定的策略对系统运维人员提前发送通知,可有效减少故障的发生。本小节对业务系统运维中可能会出现的一种情况——内存溢出情况进行分析,并以此说明运维数据处理平台对业务系统的帮助。
由于卫星数据处理业务属于I/O密集型业务,计算机与网络支撑系统大多配置了I/O能力较高的并行文件系统(如GPFS文件系统)作为共享存储。共享存储中保存了应用软件的运行程序、应用数据文件、系统支撑软件,如作业调度系统的执行文件,等。在以往的运维过程中,有时会碰到业务无法正常提交作业的情况,发生这种情况的其中一种原因就是文件系统挂载出现错误,导致作业调度系统的进程无法读取共享存储上的系统文件而异常退出。发生这种情况时,原因很难定位,究竟是什么原因引起的文件系统挂载异常无从查询。究其根本原因,当异常发生时,运维平台并没有记录系统足够的运行数据。
运维数据处理平台的建设可以在一定程度上解决这个问题,协助管理人员定位问题。图5是针对上述故障的分析过程。
图 5 文件系统异常分析流程
在上述流程中,通过日志分析模块,对文件系统生成的日志进行分析,当出现错误类型日志时,系统自动过滤错误类型。如果错误类型属于挂载异常,则说明文件系统将发生无法挂载的情况,通过检查系统内存占用情况确认文件系统挂载异常是否由于内存溢出导致。如果是内存溢出导致,则通过保存的系统进程信息查询具体出现内存使用异常的进程信息,并根据进程信息定位到最终的作业信息。这是个完全自动化的流程,并且由于日志错误是实时信息,系统可在最快的时间内发现问题,并通知问题发生的原因。
2.3.2业务运行性能分析
卫星数据处理业务每天要处理上万个应用程序,不同应用程序之间存在一定的依赖性。如果业务运行过程中,部分应用程序的性能出现问题,将直接影响业务整体进度。因此,实时掌握系统中应用程序的性能变得非常重要。运维数据处理平台可采集业务应用程序运行的系统数据,并进行关联分析,及时发现异常,并协助管理人员定位原因。图6展示业务运行性能分析过程。
图 6 应用运行异常分析流程
由于卫星处理系统是业务系统,一旦上线后,系统中的应用基本不会发生变化。因此,可以在系统上线之前对系统进行基准测试,获取每个应用程序运行的基准值。平台通过实时采集应用程序运行的进程数据并与基准值进行比对,当出现超出阈值的指标时,通过关联服务器运行的数据进行异常判断,如果服务器有指标出现异常,则获取异常指标并推送告警;如果服务器所有指标正常,平台通过进程关联作业信息,并将作业信息作为告警消息推送。管理人员在收到告警消息时,可根据作业信息,查看应用输出,及时定位异常发生的原因。
3 新平台与传统平台的比较分析
从是否支持全剧索引、数据库空间、查询方法三个方面,将上述运维平台与传统的基于Mysql的运维平台进行对比,主要结果如表1所示。
表1 新平台和传统平台比较
基于ES的新平台在大规模数据的存储、处理和查询方面有着天然的优势。ES是一个近实时的分布式搜索和分析引擎,是建立在全文检索引擎框架 Apache Lucene 基础上的搜索引擎,Lucene高效的全功能搜索引擎框架,为风云气象卫星地面系统运维数据处理平台的实时数据处理分析提供了强有力的技术保障。
4 结束语
本文分析了风云三号02批气象卫星地面应用系统中运维数据处理平台建设的原理、平台基本信息以及平台给业务运行带来的收益。分布式架构运维数据处理平台可实时高效处理卫星数据处理系统运行过程中的运维数据,基于平台内置的数据库和搜索引擎,可根据业务运行需要开发出多种对业务有帮助的自动化运维流程。运维数据处理平台的构建,为运维大数据信息挖掘提供了很好的基础,后续,将继续探索利用ES的高效搜索分析能力,深入挖掘综合运维数据的潜在价值。
深入阅读
白俊, 郭贺彬, 2014. 基于ElasticSearch的大日志实时搜索的软件集成方案研究. 吉林师范大学学报(自然科学版), 35(1):85-87.
崔鹏, 贾树泽, 王素娟, 2011. 风云三号气象卫星汇集软件容错设计和实现. 气象科技, 39(5): 625-628.
高凯, 2016. 大数据搜索与日志挖掘及可视化方案. 北京: 清华大学出版社.
姜康, 冯钧, 唐志贤, 等, 2015. 基于ElasticSearch的元数据搜索与共享平台. 计算机与现代化, (2): 117-121.
卢乃锰, 董超华, 杨忠东, 等, 2012. 我国新一代极轨气象卫星(风云三号)工程地面应用系统. 中国工程科学, 14(9): 10-19.
吕增辉, 陶振凯, 唐静, 2009.基于 Lucene.net 的对象持久化的实现. 吉林师范大学学报(自然科学版), 30 (1): 90-91.