基于Spring MVC的高性能计算机监视管理系统设计与实现

2017-11-01 17:14顾文静赵春燕
计算机应用与软件 2017年10期
关键词:日志高性能解析

顾文静 赵春燕 李 娟

(国家气象信息中心高性能计算室 北京 100081)

基于SpringMVC的高性能计算机监视管理系统设计与实现

顾文静 赵春燕 李 娟

(国家气象信息中心高性能计算室 北京 100081)

高性能计算机系统(HPC)是气象业务及科研应用的重要基础平台[1]。为改变气象系统内部监视平台分散的现状,规范故障处理流程,保障系统稳定运行,国家气象信息中心对国家局和区域中心9套高性能计算机系统建立统一监视管理,提供一个能实时监视、故障流程化处理、性能分析、日志记录及统计查询的共享平台。监视管理系统采用Spring MVC框架技术,结合MVC设计模式和分层架构思想对系统的体系结构进行设计,达到了高内聚低耦合的目标,提高了项目的扩展性和开发效率。2016年8月监视管理系统业务运行,涵盖监视、管理、配置等核心服务项目,对气象业务和科研起到了有效的保障作用。

高性能计算机系统 监视管理 Spring MVC Ajax

0 引 言

高性能计算机系统是天气、气候、地球环境数值模拟业务和相关科学研究所必须的基础平台[1],为满足业务和科研需求,IBM Flex P460系统于2013年在中国气象局安装并投入使用。该系统包括国家级二套子系统及分布在区域中心的七套子系统,总体峰值性能达到1.7 PFlops,数据存储量4.2 TB,目前仅国家局两套子系统计算集群包括1 120个节点,37 120个CPU核;存储集群主要由80个IO节点和40个DSC3700组成,共计2 400块900 GB硬盘, 系统内部采用Infiniband网络互连,通过4台核心交换机及大量边缘交换机构成高速数据网络。近期还将引进一套更大规模的高性能计算机系统。

高性能计算机系统为局内各单位及部分省、市气象局提供科学计算环境、数据环境,支持各类气象、气候业务/准业务及相关科研工作,它是气象、气候模式实时业务平台、国内外的资料传输及处理平台、存储平台[2]。系统运行至今,用户总数超过600人,每天有近6万个作业运行,如何保证系统稳定运行成为一个重要问题。

1 系统设计

1.1 功能设计

监视管理系统需实时采集国家局和区域中心的多套高性能计算机系统的运行状态、性能指标等监视信息,通过监视数据管理模块处理后,提供简明、直观的展示界面。由于监视项繁多,需对监视项精确分类,根据故障等级不同设计报警或预警功能,对于不同的告警信息提供报警标识、错误信息提示、声音和短信报警。为方便故障交接处理和重大故障协同处理,该系统从故障的发生、指派、处理、恢复设计一套规范的流程。对于相同监视项多节点报警情况,设计分级处理机制,清晰展示每个节点的故障情况。

同时,监视管理系统提供在线统计分析的功能,根据查询条件设置统计历史时间段的各类故障数据,并以图形或表格的形式形象直观展示。

监视管理系统由监视信息采集处理模块、监视数据管理模块、监视信息展示及报警模块、配置管理模块组成,各模块功能结构及模块划分如图1所示。监视管理系统是“气候变化应对决策支撑系统工程”的子系统之一,用户管理部分单独建设,因此用户注册、登录和修改信息等功能本文不作赘述。

图1 系统模块结构图

1.2 框架设计

监视管理系统基于B/S架构设计多层框架模型,框架如图2所示。“四个层次”分别为基础设施层、数据资源层、应用层和表现层,从而保证基础环境的稳定可靠、数据资源的集中管理、应用系统的快速开发、应用系统的集成统一。

图2 系统总体框架图

(1) 基础设施层

通过对硬件设备、基础系统软件的集成,为本系统提供统一、稳定的运行环境。基础运行环境包括机房环境、网络交换机、I/O设备、服务器、存储设备、高性能计算机、操作系统、gpfs文件系统、xCAT、J2EE应用中间件等组件。

(2) 数据层

通过对数据资源的统一规划,实现资源的集中存储、数据共享。数据资源层存储本系统产生的结构化数据和非结构化数据,主要包括数据采集的状态数据和性能数据、配置数据、角色数据、日志数据。

(3) 应用层

包含系统的四大模块,其中监视信息采集处理模块包括运行状态信息采集、系统性能信息采集、监视信息预处理。监视数据管理模块包括监视数据解析入库、监视信息存储管理。监视信息展示及报警模块包括监视信息展示、故障报警、故障日志统计查询。配置管理模块包括用户权限配置、采集任务配置、监视项配置和处理流程配置。

(4) 表现层

系统主要通过Web页面以及相关的桌面程序为用户提供服务。优良合理的页面布局和人性化的操作方式,清晰地展现用户所关心的信息。

2 系统实现

2.1 日志采集和解析

在高性能计算机系统管理节点上建立监视信息采集处理模块,按照策略定时采集各节点硬件状态(CPU、内存、文件系统、内置盘、IB端口等)、软件状态(作业管理进程、文件系统进程、重要的服务进程)、IB网络、磁盘阵列等系统运行信息和各节点CPU、内存使用率、作业运行情况、节点负载情况等性能指标。考虑到数据解析处理对采集系统的性能影响,通过FTP方式将采集到日志文件发送到指定日志解析服务器,在日志解析服务器上进行统一格式编码、数据验证、日志解析等处理,流程如图3所示。

图3 日志处理流程图

日志解析结合Spring和Quartz运行定时任务,根据采集到的日志信息编写解析方法,完成日志解析入库。首先在后台配置监视项,如高性能计算机系统、机柜、监视部件等;再配置每个日志解析项的定时任务,包括定时任务名称、所属运行组、运行频次、解析日志路径、解析的类方法。定时任务运行后,可以直观地在后台查看不同任务的运行状态,后台运行的解析方法,实现对指定日志的解析。比如,磁盘监视项解析。如果日志中出现Storage Subsystem health status = optimal.字段,该监视项目为正常,未出现该字段,监视项异常,将正常磁盘名称、异常磁盘名称、磁盘状态、故障信息和采集时间分别录入数据库。

2.2 数据处理

为了提高数据安全性和降低数据的冗余,监视管理系统数据库创建15张数据表,其中基础信息表包括部件信息表(nodeinfo)、部件属性表(nodemetainfo)、机柜信息表(cabinetinfo)、监视项信息表(monitorinfo);监视信息表包括部件状态表(nodemonstate)、部件状态历史表(nodemonstate_history)、监视项状态表(monitorstate)、监视项状态历史表(monitorstate_history) 故障处理表(monitorlog)和故障处理过程表(monitorprocess);系统配置表包括状态配置表(dictcodeinfo)、角色权限配置表(roleinfo)、定时任务配置表(scheduletaskinfo)、菜单节点配置表(vnodeinfo)、日志路径配置表(logpathinfo)和值班人员配置表(dutyinfo)。其中监视信息表的可统计属性均与基础信息表建立主外键关系。数据库表结构如图4所示。

图4 监视数据表结构图

2.3 软件框架实现

2.3.1 Spring MVC架构

监视管理系统建立在Eclipse面向J2EE的开发平台、B/S架构和Spring MVC设计模式的基础上, 将数据、业务与展现进行分离,形成不同的分模块,达到模块间的松耦合性,使整个系统结构清晰,便于开发维护。

依据MVC的设计思想,本系统主要分为四层,即为表现层、控制层、业务逻辑层和数据访问层。用户通过Velocity页面调用Ajax发送HTTP请求到Web端,Web端会在配置文件中匹配请求映射路径,并将其转交给前端处理器DispatcherServlet,DispatcherServlet接收到请求后根据请求信息寻找Mapping映射实现控制分派,并通过执行具体控制器的方法调用对应的业务逻辑类进行处理。Service层应用工具类调用Dao层对象的关系映射类获取数据,进行数据信息的加工,实现与POJO类的无缝整合。处理过程中如发生异常情况,将访问异常解析器,找到对应的异常类进行捕获处理,最后将数据和视图返回给DispatcherServlet,调用视图解析器分析视图文件,将解析后的数据显示在页面上返回给客户端浏览器[2]。

2.3.2 应用举例

监视管理系统包含5个核心控制类,功能如下所述,实现流程如图5所示。

1) HomeController: 该类主要实现多套HPC集群和各业务模式系统整体监视状态展示功能。

2) ClusterMonController: 该类主要实现多套HPC集群各项监视管理功能。

3) ModelMonController: 该类主要实现各业务模式系统多模块监视管理功能。

4) LogManagerController:该类主要实现监视信息多维度统计查询及图表展示功能。

5) SysConfigController: 该类主要实现监视管理系统多种配置功能。

图5 架构实现流程图

下面以HPC系统监视模块为例,详述后台查询及前台展示的实现流程。HPC系统监视模块的clustermon.vm页面引入jQuery的JS文件库和clustermon.js文件,页面按策略定时更新监视项状态,JQuery+Ajax通过post方式,将请求提交到DispatcherServlet处理,DispatcherServlet根据各控制器注释的Mapping映射查找与URL相对应的具体控制器ClusterMonAction,ClusterMonAction调用业务逻辑类ClusterMonservice的getAll-MetaStateMap()方法,ClusterMonservice调用数据访问类ClusterMonDao的getAllMeta-StateMap()方法访问数据库,并将查询结果逐级返回给控制器类ClusterMonAction,ClusterMonAction再传递给前端控制器DispatcherServlet,DispatcherServlet将结果数据返回给vm视图模板,视图模板经视图解析器解析,将结果通过HTTP响应返回给客户浏览器。模块类图如图6所示。

图6 HPC系统监视模块类图

模块实现部分代码和配置文件如下:

1) Web层实现

ClusterMon.prototype = {

getAllMetaStateMap:function (obj) {

var dtd =$.Deferred();

setTimeout(function () {

$.post(—ClusterMon/ getAllMetaStateMap—, null, function (data) {

obj.clustermonData=data;

dtd.resolve();

});

}, 0);

return dtd.promise();

},

class=″org.springframework.web.servlet.view.velocity.VelocityViewResolver″>

2) 控制层实现

spring-dispatcher

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:applicationContext.xml

1

spring-dispatcher

/

public class ClusterMonAction extends Abstract

-Controller {

//访问Mapping定义

@RequestMapping(″/getAllMetaStateMap ″)) Public void getAllMetaStateMap (HttpServletRequest req, HttpServletResponse rpos) {

… //对请求关键词的解码

… //根据请求查数据库得到结果对象

… //将结果转化为JSON串发送

}

… //其他功能的Mapping方法

}

3) 数据层访问层实现

本例中,将monitorstate库表映射为POJO类ClusterMonElement,该表中存储各监视项运行状态信息;ClusterMonDao对象调用JdbcTemplate对象的getAllMetaState

-Map ()方法,实现对ClusterMonElement中数据查询。

将DataSource,JdbcTemplate等对象配置在applicationContext. xml文件中,使用Spring的注入功能,把DataSource注册到JdbcTemplate之中,数据库连接采用c3p0连接池的方式,使用spring配置Jdbc-Template,JdbcTemplate被注入到Cluster-MonDao中。

applicationContext.xml配置文件如下:

class=″org.springframework.jdbc.core.JdbcTemplate″>

class=″com.mchange.v2.c3p0.ComboPooled DataSource″ destroy-method=″close″>

value=″jdbc:oracle:thin:@localhost:pmcs″ />

……//中间代码省略

2.4 信息告警

为保障故障通知的时效性,监视管理系统增加了信息报警功能,Web页面发现故障时,系统通过钉钉客户端给管理员发送告警信息,信息包含故障时间和内容等。

信息报警涉及到信息过滤、信息配置和消息封装。首先对实时库和历史库中告警信息进行比对,过滤出需要告警的状态信息,根据故障的影响,定义告警级别。根据告警级别定义信息发送的频率和接收人,最后将信息封装成消息对象,调用消息发送接口推送报警信息到钉钉客户端。

告警系统由信息处理模块和信息发送模块组成,架构如图7所示。

图7 信息告警架构图

3 实现功能

3.1 系统监视板块

实现对国家局及区域中心九套高性能计算机系统的全面监控。首页清晰展示每套系统整体运行情况,分页面分类展示各系统多种监视项状态。考虑到多个节点连续发生相同故障,设计分级处理机制,各监视项可显示多节点的故障状态。

实现故障流程化处理,故障发生后,Web页面相关监视项呈现红色报警状态并伴随声音提示,值班员将故障监视项变更为处理中状态(黄色),并指派系统管理员处理,管理员接到指派后处理故障,故障恢复后填写故障处理单并提交,Web页面相关监视项恢复(绿色)。考虑相同时间发生多节点故障,设计故障单按时间和故障类型合并功能,避免大量故障单累计,有效提高处理效率。

3.2 机柜实时监视板块

采集高性能计算机系统各节点CPU、内存、作业运行和节点负载情况等性能指标数据信息,以图形的方式清晰展示每个节点性能指标实时变化特征(见图8)。

图8 机柜实时监视

3.3 日志管理板块

实现系统日志、故障处理日志和系统可用率等的统计查询功能,提供数据分类导航和统计图表下载功能。其中日志查询模块设置不同维度的时间、系统、故障类型、机柜、节点等精细化查询和各类故障统计查询及图表展示功能。故障处理单查询模块设置了多条件精细化查询和故障单编辑、修改、删除功能。系统可用率查询设置规定时间段内可用率的总体和分段计算及图表展示。

3.4 系统配置板块

监视管理的后台管理板块,只有管理员权限用户可以访问。提供多种配置功能,包含数据字典、硬件配置、菜单配置、权限配置、任务配置及值班配置等模块。其中数字字典模块实现系统和模式监视项的状态配置,节点类型配置和高性能计算机系统配置。硬件配置模块实现高性能计算机系统机柜、服务器、硬件属性、整体监视属性的配置。菜单配置实现高性能计算机系统和结点的配置。权限配置模块实现不同角色访问权限设置。任务配置模块实现监视任务路径、监视任务启动和日志文件匹配的配置。值班配置实现管理人员配置,有效提升监视管理系统的灵活性和可用性。

4 结 语

基于Sping MVC的高性能计算机监视管理系统通过Web端和信息报警大幅提升了故障发现的时效性,并通过故障数据分析及各节点性能指标变化特征进一步掌握系统运行情况,有助于提前排除隐患,有效保障高性能计算机系统运行的稳定性。流程化处理方式为故障的交接和协作处理提供了便捷,系统已业务运行,提供给国家局和区域中心用户使用。下一步,我们将在ECMWF开发的ECFLOW基础上进行二次开发, 通过Ecflow客户端实时采集Ecflow服务器端运行模式状态数据,进一步完善数值预报业务自动化管理系统,整合HPC系统和业务模式的监视管理,进一步提升气象业务保障能力。

[1] 沈瑜,李娟,常飚,等.高性能计算机统一资源管理系统的设计与实现[J].计算机技术与自动化,2014,33(1):83-90.

[2] 黄淼,张国平.基于Spring MVC的高校教务评教系统设计[J].电子设计工程,2016,24(8):23-26.

[3] 丁振凡,李馨梅.基于JdbcTemplate的数据库访问处理[J].智能计算机与应用,2012,2(3):29-32.

[4] 张志强,张强,胡星,等.国家气象业务内网设计与实现[J].安徽农业科学,2016,44(6):224-227.

[5] 何玲娟,蚁龙,刘连臣.一种松耦合高复用MVC模式的Web分页实现[J].计算机工程与应用,2007,43(15):95-97.

[6] 陈雄华,林开雄.Spring 3.x企业级应用开发实战[M].北京:电子工业出版社,2013.

[7] Craig Walls,Ryan Breidenbach.Spring in Action[M].3版.北京:人民邮电出版社,2013.

[8] 刘京华.JavaWeb整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)[M].北京:清华大学出版社,2010.

[9] 周桓,王殊宇.JSP项目开发全程实录[M].北京:清华大学出版社,2008.

[10] HighCharts官网[OL].2015.http://www.highcharts.com/demo.

DESIGNANDIMPLEMENTATIONOFHIGHPERFORMANCECOMPUTERMONITORINGMANAGEMENTSYSTEMBASEDONSPRINGMVC

Gu Wenjing Zhao Chunyan Li Juan

(HighPerformanceComputingDivision,NationalMeteorologicalInformationCenter,Beijing100081,China)

High performance computer is an important basic platform for meteorological operations and developments. The aim of this paper is to change the distributed status of the meteorological HPC monitoring platform, to standardize the process of fault handling and to ensure the stable operation of the HPC system. Therefore, the national meteorological information center (NMIC) has established a unified monitor and management for nine sets system of country and regional center, providing a sharing platform for real-time monitoring, fault streamline processing, performance analysis, log records and statistical query. Monitoring management system adopted the Spring MVC framework technology. Moreover, the architecture of the system was designed with the combination of the MVC design pattern and layered architecture, which achieved the goal of high cohesion and low coupling, and improved the expansibility and development efficiency of the project. In August 2016, the monitoring and management system operated, covering the core services such as monitoring, management and configuration. It has played an effective role in ensuring the meteorological service and scientific research.

HPC system Monitor management Spring MVC Ajax

TP302

A

10.3969/j.issn.1000-386x.2017.10.017

2016-10-25。科技部公益性行业专项(气象)科研专项(GYHY201106022,GYHY201306062)。顾文静,工程师,主研领域:高性能计算应用支持,软件开发。赵春燕,高工。李娟,高工。

猜你喜欢
日志高性能解析
一名老党员的工作日志
三角函数解析式中ω的几种求法
扶贫日志
雅皮的心情日志
雅皮的心情日志
睡梦解析仪
电竞初解析
一款高性能BGO探测器的研发
对称巧用解析妙解
高性能砼在桥梁中的应用