行业现状:近年来,华夏银行在智能运维研究方面加大力度,特别是在基于人工智能的故障诊断方面取得了一定研究成果。基于人工智能与机器学习故障诊断系统,不仅需要有强大的机器学习能力,还需要灵活匹配银行应用系统特性的算法,并结合强大的运维故障处理经验。通过不断地机器学习和迭代,最终实现基于人工智能的故障诊断系统,以提高整体运维故障率的识别、完全实现自动化处理。其主要通过应用架构设计、知识库数据采集、数据预处理、业务实例建模、因变量和自变量的筛选、故障识别库建立与流程自动化等步骤实现。

应用架构设计

基于机器学习的智能故障诊断系统应用架构主要包括大数据平台层、人工智能和机器学习、可视化展现与告警三个部分(如图1所示)。

图1 基于机器学习的故障智能诊断系统应用架构

1.大数据平台层。大数据平台层主要具有以下特性。

(1)采用Hadoop分布式计算架构设计,可并行支持多个物理节点和同一节点内多台服务器的分布式并行计算。系统具有可扩展性,可根据计算需求,对计算节点和节点内的计算服务器进行扩展。

(2)采用基于NoSQL集群存储架构设计,采用存储虚拟化技术,组成统一的虚拟存储池,构建全局统一命名空间。可支持区域节点、节点内服务器和服务器容量的三级扩展。每套集群存储系统支持检索特征(数据索引等)数据带外存储,提升海量信息的检索性能。

(3)采用分布式实时流计算框架STORM,可以分布式处理大规模的实时数据,具有低延迟、高性能、分布式和可扩展的特点。

(4)关系型数据库存储集群采用传统的关系型数据库系统,主要存储基本的领域知识,系统所需要的原数据,任务定义,计算并需要在页面上展示的结果等。

2.人工智能和机器学习。使用基于人工智能和机器学习技术,通过对接故障识别库、算法、构建模型、迭代优化等步骤逐步完善故障诊断自动化预警系统。主要按照以下步骤处理:收集银行报警数据到大数据平台;数据预处理(清洗、转换、统一);基础统计;基础统计结果存储到数据库;计算引擎加载数据;划分训练和测试集合;训练模型,在测试集上验证;保存模型;迭代式优化模型。

3.可视化展现与自动化告警。这是个以适当的视觉元素及视图来呈现抽象的数据信息,并结合人工智能、机器学习技术完成自动化告警的过程。当发现了故障后自动接入相应的流程进行处理,这时故障事件自动触发问题处理跟踪流程,并在自动化工单式流程的指引下通知到相关责任人,并利用知识库自动化完成整个故障处理协调过程。

原始知识库数据采集

系统故障信息是由银行运维监控系统和运维工程师在日常工作中对应用系统的故障进行记录形成的故障知识库,我们可以直接从故障知识库采集相关故障信息。

1.数据采集注意点。采集时需要注意对现有复杂设备及系统的故障信息进行数据采集,得到故障数据的特点,可以采用特征选择与特征提取两种方法。故障数据主要是由人工记录并在知识库中存在的,大部分为描述性语言并且数据量较大,可以直接对故障数据进行数据分析。故障数据含有的属性较多,并非所有的数据都可以用来进行分析,应注意过滤、筛选。

通过对故障数据进行特性分析可以得出系统中设备与设备之间的故障存在一定的联系。目前大部分系统都是复杂设备系统,由具有不同功能的设备在一定条件下组成的。设备与系统之间紧密相连、相互作用、相互耦合,这些设备共同构成一个功能强大的复杂系统。因此在采集时需要考虑到系统设备之间的故障相互联系。

2.采集故障数据方式。采集故障数据可采用以下两种方式:从结构化字段获取结构化数据;从非结构化字段提取信息,并通过程序和算法进行结构化处理。

数据预处理

数据预处理是将已采集的故障信息进行统一处理,包括:数据清理、数据集成、数据变换、数据归约等。这些数据处理过程会大大提高数据质量,提高机器的可读性,有利于进行统一的分析与计算。

预处理完成后,生成各种数据类别以供集中存储和访问。这些信息包括配置数据、性能数据、告警事件数据、交易监控日志、机器学习模型实例以及模型训练数据等。数据预处理需要业务人员与技术人员共同协作完成。

本系统中数据预处理可以采用离群点筛除、缺失值填补(-1,样本均值)、变量格式转换及标准化、变量编码(去重)、哑变量处理、连续值离散化等方法进行。

业务实例的建模

业务实例的建模主要将业务系统总资源及结点进行抽象、建模并生成统一的易于管理的数据格式。提供对基础设施、数据库、中间件、应用系统、业务系统、告警配置信息及依赖关系的管理,为应用平台的数据展示、告警聚集、故障定位分析、故障影响分析提供了数据来源和分析依据,是整个机器学习自动化故障告警系统的基础支撑。

从业务系统整体角度出发,可以将这些配置信息进行分层处理,具体可分为网络层、主机层、进程层、服务层、业务层。以网络层为例,主要配置项为交换机等网络设备,其属性明细见下表。

表 网络层属性明细

因变量与自变量的筛选

在人工智能领域,回归分析是一种预警性的建模技术,它研究的是因变量(目标)和自变量(预警器)之间的关系。这种技术通常用于预警分析、时间序列模型以及发现变量之间的因果关系。在银行自动化运维预警系统中,可以预警故障业务的发生情况和自动化处理机制。

在银行运维场景中故障是以事件的形式出现,事件管理流程触发于事件的产生,其可以是用户或业务人员发现的软件故障、系统监测到的硬件故障以及用户提交的问题或服务请求。在一个事件产生时,首先需要对当前事件进行记录,创建用于描述事件的事件单。事件单也可以用于监测事件流程、在用户询问时及时予以反馈。进而需要对事件进行分类,首先需要判断当前事件是否属于服务请求,若属于则进入服务请求实现流程,否则根据事件所涉及的SLA、紧急度、影响度等因素对其评定优先级,并根据事件单中对事件的描述以及事件的状态对其进行分类。此时服务台人员会根据事件描述在配置管理数据库中查询该事件是否存在解决方案。若存在相关方案则以快速支持的方式对事件进行解决若不存在相关解决方案则需对事件进行调查和诊断的流程。在此流程中服务支持人员基于以往解决事件的经验,并根据当前事件的分析结果尝试给予相应的解决方案。但是,在当前服务支持人员无法给出合理的解决方案或者解决方案无效时,就需要对事件进行升级,从而分配给更加专业、经验丰富的高级支持人员予以解决。事件升级是一个迭代过程,在事件无法解决时不断分配给更高级的人员,直到得到合理有效的解决方案,或者事件被认定暂时无法解决。在事件解决方案的效果得到用户确认后,即可关闭此事件。但是在事件关闭后,还需要对事件进行回顾,将相关的事件单以及解决方案记录到知识库中,然后终止整个事件管理流程。

在事件管理流程中,如果可以控制事件的升级次数并在较低的服务支持级别解决事件,将大大提高事件的解决效率并降低处理事件所需要的人员成本和资源成本,在此基础上实现自动预警。因此,在最快时间内按照支持等级快速告警问题,并优化事件管理流程是自动化故障诊断的核心。而其难点就在于如何快速有效地为事件处理人员选择解决方案提供决策支持。

自变量与因变量的筛选需要遵循机器学习中的相关算法,自变量代表数据采集的信息,因变量代表最终得到的结果。故障诊断的原理是使用机器学习算法通过分析和学习历史数据,从而产生一种预警模式,并在不断迭代中修正该模式,进而有效预警模型。IT事件管理流程更适合使用监督性的学习算法,作为因变量输入数据的事件,成为了带有标注的训练数据。但是为了得到良好的决策支持效果,需要对事件进行特征抽取,这也是关系到决策支持准确率的重要一步。此后还需要进行特征信息进一步的学习算法输入要求。具有良好的训练数据后,还需要不断选择训练算法,形成算法集合,最终得出因变量的结果(如图2所示)。

图2 自变量与因变量的筛选

故障识别库的建立与流程自动化触发

本文中告警系统的设计是基于银行已有的监控系统平台进行的,银行的监控系统对银行的业务支持起着举足轻重的作用,对运维系统性能、功能改善以及银行业务的正常运营具有重要意义。

目前,大多数银行采用的系统预警机制是基于传统阀值管理的概念,通过人为的设置预警阀值,当采集的指标达到或者超过设定阀值时进行告警,但这种情况下的告警基本已是事后告警,无法达到提前进行处置排除故障的要求。一旦出现重要系统的告警信号,往往事件己经对业务造成了极大影响。本文介绍的利用基于机器学习的智能故障诊断,可以实现对监控的历史数据进行深度挖掘,应用先进的机器学习算法对数据进行学习预警,并进行后续迭代优化。除此之外,通过软件系统开发、搭建架构系统,实现对业务级系统性能告警数据的监控与可视化展示,从而搭建一整套银行运维管理所需要的智能化故障告警系统。这样就可以制订系统的主动式故障预警与预防的一体化解决方案,建立运维故障告警预警的高可用性机制,提高对银行故障告警预警的管控能力,最大程度地保证银行信息系统的稳定运行以及银行核心业务的正常持续进行。

实际应用效果

基于机器学习的智能故障诊断作为主动式运维的重要技术手段之一,在华夏银行的运维工作实践中大幅提升了信息科技风险事前管控能力,提高了运维工作的智能化水平和前瞻性,促进运维模式从被动向主动方式转变。该系统在华夏银行投入使用后,管理范围包括核心系统在内的30多套重要系统,取得良好效果。系统使用半年时间就提前发现生产系统运行隐患120余次,捕获到2000多个潜在效率低下的SQL语句,使得运维人员能够提前介入,将系统风险扼杀在事前。下一步,华夏银行将在此基础上,继续完善系统故障自修复能力,在智能化运维工作的道路上再进一步。

作者:华夏银行信息技术部

本文节选自《金融电子化》2018年9月刊

声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。