APP下载

铁路局信息系统状态诊断与辅助管理决策系统的研究

2020-03-28梁多姿

铁路计算机应用 2020年3期
关键词:日志运维信息系统

陈 刚,夏 雷,李 林,梁多姿,晁 京

(中国铁路上海局集团有限公司 科技和信息化部,上海 200071)

随着铁路运输信息化水平快速提升,一些重要的信息系统的规模不断扩大,系统架构日益复杂,数据海量增长,对业务连续性要求和运行维护(简称:运维)质量的要求不断提高,与此同时,系统的运维也越来越复杂,运维管理难度越来越大。纵观全路,各铁路局集团有限公司(简称:铁路局)的信息系统建设规模虽有一定差异,但总体上处在同一发展水平,运维人员的精简化与系统规模扩张化的矛盾逐步凸显,虽已采用运维工具对信息系统进行日常监控,初步实现了信息系统运维的信息化管理,但是,大量信息系统的应用日志、系统运行状态数据未得到有效利用,其数据蕴藏的经济效益和管理价值未得到深度挖掘。路外行业针对智能化管理的研究取得了长足发展[1],但是,在铁路运输领域,特别是在信息系统的智能化运用层面,仍处在探索阶段。

铁路局信息系统状态诊断与辅助管理决策系统以上海铁路局信息化管理方面的短板为切入点,充分利用机器系统运行日志和应用系统日志,结合Hadoop、Kafka大数据技术,基于Ripple、STL算法,构建了一个集成化、智能化、科学化的综合处理与决策平台,为信息化管理工作提供辅助决策,提高数据中心资源利用率,提升运维智能化水平,推进数据中心向绿色、节能方向转变。

1 系统架构

系统采用B/S架构[2],利用大数据组件进行数据存储与检索,通过智能化算法进行智能检测。

1.1 逻辑架构

根据功能性要求及非功能性要求设计系统的整体架构。逻辑架构由8个模块组成,如图1所示。

图1 逻辑架构图

(1)数据采集:采用“目标源—代理中继—有效过滤—落地使用”的原则,获取原始数据,为后期数据处理分析提供基础。

(2)数据处理:利用队列服务器的处理思想,并利用流处理引擎完成,将获取的数据转换、传送至数据持久化模块。

(3)数据存储:将结构化、非结构化、半结构化的数据进行缓存处理,转变成有效利用的合理化数据。

(4)查询引擎:采用Ripple、STL等算法,对日志、数据加以解析,提供更为科学、贴近人工理解的查询手段,为系统决策分析提供支撑。

(5)告警引擎:依据设定条件,结合算法推理,提供自动告警功能,辅助用户开展运维决策工作。

(6)分析引擎:结合业务逻辑与实际生产数据的推理分析,通过Hadoop的海量数据,分析得出模型预测数据,为用户提供多角度分析工具。

(7)展现引擎:利用可视化、多元化的报表、图表插件,为用户提供更为友好的访问界面。

(8)系统管理:灵活配置数据采集、预警、查询、分析等相关功能模块的参数,为用户提供方便、可视、直观的业务管理手段。

8个模块都可支持横向扩展,提升每个模块的吞吐量及处理能力,同时,每个模块内部都是多点分布式部署,保证了系统高可用、数据安全。在数据采集、处理、存储及分析等模块,采用了目前比较主流、成熟的开源组件。

1.2 物理架构

充分考虑架构的先进性、避免重复建设、减轻后期维护工作等方面,系统中需要的大数据相关组件满足用户要求,其他增量节点支持虚拟机,非存储节点支持Docker或者Kubernetes部署,可调整节点数量,为后期系统的智能化扩容提供基础[3]。系统物理架构如图2所示。

图2 物理架构图

2 数据流程

2.1 数据采集

数据采集分为有代理采集和无代理采集。无代理采集为在服务端采集,支持SNMP, DATABSE,TCP/UDP, SYSLOG, Restful等采集协议。有代理采集则用于本地文件采集、脚本采集等,采用多进程方式,即守护进程和工作进程的方式,既保证采集代理的稳定性,又可以对工作进程的资源消耗进行控制,避免代理客户端对被采集对象的资源消耗过大。数据采集流程如图3所示。

图3 数据采集流程图

2.2 流处理层

流处理层基于Kafka Streaming,实现分布式的数据处理。

2.3 数据读取

Kafka Streaming采用no-receiver方式直接从Kafka分区上并行读取数据[4]。

2.4 数据处理

通过对数据的处理类型进行抽象提取,根据不同类型的数据源提供不同的可配置的数据处理逻辑接口,用户可以通过界面配置的方式来配置数据的解析、转换和处理逻辑。数据处理采用ZooKeeper、Kafka的流处理技术,通过接口方式,为数据持久化提供有效支撑。同时,借助Spark、hive、Hadoop等大数据相关数据库,对数据进行存储。数据处理流程如图4所示。

2.5 数据写入数据库

Kafka streaming在处理完数据后,需要根据不同的数据类型将数据写入不同的数据库,结构化数据写入HBase,非结构化数据写入Elastic Search和Hadoop HDFS,两者都是分布式数据库,都基于分区/分片的方式存储数据,默认在向上述两个数据库写入数据时,依赖于外部数据库进行数据路由处理,存在数据二次移动的问题,影响数据写入效率,为此,在写入之前预先计算好数据最终区/分片,避免数据的二次转发。

2.6 数据存储

数据存储模块提供数据冷热自动转储功能,针对不同类型的数据,能够支持以下3种存储方式[5]:(1)业务数据,以固定的格式进行存储,可方便查询和分析时间序列数据,采用组件为HBase[6-7]和InfluxDB;(2)半结构化数据,可对数据进行实时全文检索和分词搜索,采用组件为Elasticsearch;(3)关系型数据采用MySQL数据库;非关系型数据选用Neo4j数据库。

图4 数据处理流程图

3 主要功能

3.1 资源管理

资源分为硬件资源、软件资源、应用资源和资源池。通过收集硬件信息、软件信息、应用信息及其资源池信息,实现软、硬件资源的集中管理。

3.2 服务器运行指标查看

通过大数据管理的方式查看一段时间内的CPU、磁盘、内存、磁盘IO速率、IP连接数和网络IO数据,方便管理人员查看应用系统整体使用趋势和服务器的运行状态。运行指标图如图5所示。

图5 运行指标图

3.3 系统画像

(1)应用总览:展示应用特征、客户端操作系统、客户端浏览器和访问返回状态。

(2)资源利用:按时间分布,展示CPU、内存及磁盘利用的变化,并判断其是否处于合理区间。

(3)应用历史状态:分析资源使用的历史状态,为合理使用资源和预测风险做参考。从CPU、内存、存储、访问量、IP增长率等多个维度综合展示资源和使用情况的变化趋势,并对历史轨迹进行聚类,为系统从横向的多维度与纵向的多角度进行综合画像,如图6所示。

图6 系统画像图

3.4 辅助决策

3.4.1 应用趋势预测

主要从CPU资源利用、内存资源利用、存储资源利用、IP连接数、访问状况趋势、网络IO等6个维度进行预测分析,为系统提出未来修、预测修、精准检的解决方案。

3.4.2 应用访问分析

(1)通过大数据算力,集合全部应用的访问客户端操作系统和浏览器,分析每一个操作系统和浏览器的类型和版本,提出升级建议;(2)分析服务器错误返回码 ,建议维护处理;(3)分析错误返回码中涉及应用问题的次数,提示维护应用。

3.4.3 资源管理建议

资源管理建议主要包括资源优化应用列表和资源扩容应用列表:(1)资源优化应用列表中的应用,说明资源分配过多,需要进行优化调整;(2)资源扩容应用列表中的应用,说明资源需要扩容,应当分配更多资源。

3.4.4 异常AI检测

异常人工智能(AI)检测包括应用名称、指标状态展示、统计指标展示、结论描述等:(1)利用Ripple算法,计算各指标的异常情况。Ripple是一种基于互联网的开源协议,实现去中心化的基本功能;(2)可查看指标,并直观显示出异常指标;(3)通过图表直接查看异常点,如图7所示。

图7 异常指标显示图

3.4.5 节能控制预测

节能控制预测主要包括信息系统节能方案、预测节能功耗和信息系统功耗图形化展示:(1)根据资源使用周期和趋势,提供服务器资源关停、启用时间段等建议;(2)测算系统节能方案的节能功耗;(3)图形化展示系统能耗的使用情况,如图8所示。

3.4.6 统一展示

图8 节能预测图

为用户提供友好界面,如图9所示。

图9 辅助决策图

4 关键技术

本文所涉及的各类算法均采用通用的Java、GO、Scala等语言,借助my eclipse开源平台实现,采用Matlab工具对算法进行验证,并在系统实际运行过程中进一步确认和优化。

4.1 时间序列异常检测算法

4.1.1 单指标异常检测

通过STL(Seasonal-Trend decomposition procedure based on loess)算法对单个时间序列指标进行异常检测[7]。算法支持周期性和非周期性的时间序列,支持灵敏度调节和异常去噪功能。

4.1.2 多指标异常检测

基于自组织映射(SOM,Self Organizing Maps)神经网络算法。基于历史数据的学习,生成基于每个输入指标的神经网络,确定每个激活神经元的邻域半径。检测时,计算输入多指标向量和相应神经元的距离,并确定异常及主要根因指标。

4.2 趋势预测算法

基于可分解时间序列模型,考虑趋势项、季节项和节假日效应,对服务器或系统运行的正常与异常时间序列进行预测。

使用机器学习中的贝叶斯先验概率,寻找数据中潜藏的趋势改变点,拟合分段趋势项,并利用傅立叶变换拟合季节项,通过贝叶斯采样提升预测精度[8]。正常与异常时间序列预测结果的表示式为:

式(1)中:

g(t)—拟合时间序列中的分段线性增长或指数增长等趋势;

s(t)—拟合周期项(如:每周/每年的季节性);

h(t)—拟合非规律性的特殊日效应;

εt—反映未在模型中体现的异常变动。

4.3 文本聚类算法

日志记录的好坏直接关系到出现问题时定位的速度,根据日志结构的特性,提出一种高效的实时日志聚类算法。

4.3.1 封装预处理

定义日志中每个词的封装结构,共包含normal、regex、important及verb共4种类型封装结构。

4.3.2 原始日志预处理

(1)正则化替换

利用正则表达式,将原始日志中详细的IP地址、端口号、时间等利用$IP、$IPPort及DateTime等字符串替换,并进行简单的封装。

(2)敏感词库提出

根据语义分析和设置的敏感词模式,对原始日志中的敏感词进行处理,并将其类型设置为important。

(3)分词器分词

为对原始日志进行精准分词,自定义3种类型的分词器,分别用来处理中文分词、英文分词及中英文混合分词等不同类型的分词需求。

(4)公有变量提取

将原始日志中的数字、需要忽略的词进行处理。

(5)词性标注

利用事先建立的verb字典树、normal字典树和nltk插件进行词性标注,防止在提取公共模板时,有意义的词被泛化。其中,字典树是一种实现字符串快速检索的多叉树结构,能够降低搜索字符串的时间。

4.3.3 获取模板步骤

(1)日志分组

对处理后的原始日志进行分组处理,以便能够快速定位。共定义了7个大组,每个大组中含有个数不等的小组,并且对它们都设置了匹配优先级,原始日志优先匹配级别较高的组,当同一条日志匹配到多个组时,将最先匹配到的组设置为该条日志所属的组。

(2)倒排表打分

对日志进行分组之后,需要对日志匹配或者生成模板。通过对原始日志的分析,采用打分的方式判断原始日志属于哪个模板,为获得最精确的模板,在打分时,综合考虑关键词得分、位置得分和邻近词得分3个方面因素。

关键词得分是指对原始日志预处理后,该词的类型是否为关键词,当该词为关键词并且该词在原始日志中的位置和在模板中的位置相差在合理的范围内,则该词在该模板上得分较高,否则得分为1。具体打分方式如式(2):

式(2)中,key为关键字集合,idxq为词在原始日志中位置,为词在该条模板中的位置,scope为用户设置的阈值,θ为根据业务需求而设置的动态参数。

位置得分原则:各个位置的词具有同样的重要性;位置越靠前的词权重越高。用户可以根据不同的需求选择不同的打分方式。

邻近词得分是指判断在原始日志中的上一邻近词与模板中的是否相同,相同时,该词的得分为1,否则给出惩罚。

为了提高打分效率,根据倒排表的思想,对每个词建立倒排表,降低搜索时间。

(3)获取模板

倒排表打分后,会得到该条日志在每个模板上的得分情况。设置得分阈值,对于达到得分阈值的模板,判断模板中是否有关键词被泛化,如果没有,则说明该条日志与该条模板匹配成功;如果该条日志在每个模板上的得分都小于阈值,则利用该条日志创建一个新模板,添加到模板库中。

(4)更新模板展示层内容和倒排表内容。

5 结束语

本文从底层架构的设计理念出发,设计了铁路局信息系统状态诊断与辅助管理决策系统,介绍了系统的数据处理流程,以及系统的功能模块与应用效果,重点解析了系统的关键技术。系统已投入运行,运行结果表明,系统的应用提高了信息系统运维管理水平,运维模式正在由半自动向自动化、智能化方向转变,同时,提升了信息化投资决策水平,极大地提高了数据中心的资源利用率,促进信息化基础设施投资更加科学合理,减少重复投资、资源浪费等现象,提升铁路信息化投资决策水平。

猜你喜欢

日志运维信息系统
高速公路智能运维平台
企业信息系统安全防护
一名老党员的工作日志
扶贫日志
雅皮的心情日志
雅皮的心情日志
基于区块链的通航维护信息系统研究
信息系统审计中计算机审计的应用
配电线路的运维管理探讨
基于一体化的变电标准运维模式