摘要:技术系统的安全稳定运行是我司最重要的工作之一,而运维是保障系统稳定运行的重要手段。在技术系统转型过程中,传统运维模式面临“安全运行、人力紧缺、远程运维”三大挑战,有必要引入人工智能来辅助甚至部分替代人工决策,提升运维质量和效率。本文对智能运维技术进行了探索,研究如何在运维中引入人工智能,以实现“事前智能预警、事后快速定位、夜间无人值守、远程集中管理”等一系列的智能运维目标,以应对新环境下的三大运维挑战。
1 引言
运维是技术类运营维护人员根据业务需求来规划信息、网络、服务,通过网络监控、事件预警、业务调度、排障升级等手段,使服务处于长期稳定可用的状态。早期的运维工作大部分是由运维人员手工完成,这种运维模式不仅低效,也消耗了大量的人力资源。利用工具来实现大规模和批量化的自动化运维,能极大地减少了人力成本,降低了操作风险,提高了运维效率。但是自动化运维的本质依然是人与自动化工具相结合的运维模式,受限于人类自身的生理极限以及认识的局限,无法持续地面向大规模、高复杂性的系统提供高质量的运维服务。智能运维(AIOps, Artificial Intelligence for IT Operations)是指通过机器学习等人工智能算法,自动地从海量运维数据中学习并总结规则,并作出决策的运维方式。智能运维能快速分析处理海量数据,并得出有效的运维决策,执行自动化脚本以实现对系统的整体运维,能有效运维大规模系统。
自1998年至今,经过20多年的逐步升级和持续优化,登记结算系统在业务功能上已较为完备,形成了全品类、全链条、跨市场的业务系统。随着沪港通、科创板、沪伦通等创新业务的陆续实施,证券登记结算系统与外部的耦合度逐渐增加,而现有的技术系统已经很难满足不同市场、不同日历、不同品种的互联互通需求。因此为进一步更好地服务实体经济、满足资本市场双向开放,技术系统必须从专有化向国产化转型,从集中式向开放分布式转型,从单数据中心向多数据中心转型。而在转型发展中,技术系统传统运维模式面临以下三大挑战:
一是安全运行的挑战。我司对技术系统的安全稳定运行要求高,而目前业务功能一般涉及多个系统与应用,所采用的事后处置为主的运维模式,存在异常定位困难、处理效率低等缺陷,这种被动异常响应模式已经不能满足异常快速定位和处理的需求。
二是人力紧缺的挑战。目前的技术系统运维由于工作量大、工作内容重复且枯燥,运维岗位特别是值班岗位的吸引力逐渐降低。运维需求与人力资源紧缺的矛盾,已经成为技术系统发展中无法避免的矛盾。
三是远程运维的挑战。从单数据中心向多数据中心发展过程中,传统的现场运维方式也因数据中心地点偏僻、现场巡检工作繁琐重复等困难而导致运维成本和压力增大,如何实现远程运维来解决数据中心发展的问题。
技术发展中产生的问题必须依靠技术来解决,只有在运维领域引入新技术、新思路、新体系,才能更好地提升运维水平,更好地保障系统安全稳定高效的运行。当前主流运维技术已从自动化运维向智能运维发展,利用人工智能来辅助甚至部分替代人工决策,可以进一步提升运维质量和效率。因此,我司开展了智能运维技术的探索,研究如何在运维中引入人工智能,以实现事前智能预警、事后快速定位、夜间无人值守、远程集中管理等一系列的智能运维目标,以应对新环境下的三大运维挑战,进一步解放与发展生产力。
2 智能运维发展及主要技术研究
2.1 智能运维简介
智能运维(AIOps)是指通过机器学习等人工智能算法,自动地从海量运维数据中学习并总结规则,并作出决策的运维方式。智能运维概念最早由Gartner提出,它是将人工智能科技融入运维系统中,以大数据和机器学习为基础,从多种数据源中采集海量数据(包括日志、业务数据、系统数据等)进行实时或离线分析,通过主动性、人性化和动态可视化,增强传统运维的能力。
尽管智能运维是运维领域最新技术,其应用的人工智能产业目前也是朝阳产业,在技术成熟度上仍有待提升,但并不妨碍智能运维所产生的强大生产力。表1给出了手工运维、自动化运维、智能运维在运维效率、系统可用性、可靠性、学习成本、建设成本、应用范围作了全面的比较。
2.2 智能运维研究与应用现状
当前智能运维研究与应用在国内外各行业中都属于起步阶段,Gartner的报告中也做出预测:智能运维在2020年在一半以上的企业中落地并形成生产力,如下图所示:
尽管如此,智能运维已经成为科研机构研究的热点,并在高利润、低成本的驱动下,互联网公司、大型金融机构、大型IT技术公司走在了智能运维工程应用方面的前列。
2.2.1 科研机构
科研机构一向是新技术革命的领头羊。在智能运维研究领域,国内外科研机构不仅有先进的科研成果,也与工业界展开密切合作,从算法层面上支撑了智能运维的落地与发展。
卡内基梅隆大学与Netflix公司合作,在网络视频运维领域提出并应用多种人工智能方法:利用不同数据分析及统计分析方法,灵活使用可视化、相关分析、信息熵增益等工具,将杂乱无章数据转化为直观清晰信息,从而分析海量数据背后视频体验不佳的规律和瓶颈;设计了视频传输智能优化方案,可根据客户的网络状态,动态地优化视频传输;通过决策树模型建立用户参与度的预测模型,指导关键性能指标的优化策略,改善用户的体验质量。
南京大学周志华教授团队专注于机器学习算法的研究,所提出的isolation forest孤立森林算法可用于挖掘异常数据,检测和分析异常。该方法已经在360公司系统运维中用以实时检测异常,腾讯公司也将其用于检测微信中的异常点击。
清华大学NetMan智能运维实验室则专注于异常检测、分析与预测,提出了多种算法和工具。该团队目前已经和交通银行、阿里巴巴、IBM等多家机构开展合作,实现了产学研相结合。
2.2.2 互联网行业
阿里巴巴研发了智能故障管理平台,以业务为导向,实现了基于机器学习的业务异常检测,准确及时发现故障。通过时间序列分析和机器学习,对未来一段时间的业务指标趋势进行预测。针对业务异常时间,自动调用各类型AP接口实现一键切换,快速恢复业务异常。并针对业务异常事件自动拆解相关维度,逐层剥离定位故障原因。目前该平台已经在阿里云上成功实践,故障发现准确率、故障发现召回率分别提升到80%和90%,每周节省因为误报而花费的操作时间约为29小时。
百度实现了基于智能流量调度的单机房故障自愈能力,将止损过程划分为统一的感知、决策、执行三个阶段,通过策略框架支持智能化异常检测、策略编排、流量调度,实现了单机房故障自愈能力。
京东金融实现了基于网络拓扑的根源告警分析,结合调用链,通过时间相关性、权重、关联规则算法、神经网络算法等,将告警分类筛选,快速找到告警根源,从而缩短故障排查及恢复时间。京东金融还在其云计算数据中心应用了智能巡检机器人,提升了机房及数据中心的巡检效率和智能化管理水平,避免人工的错检和漏检,对巡检数据进行数据化管理和高效利用。
腾讯在其织云监控平台中建设了基于机器学习的时间序列异常检测方案,在百万条基于时间序列的日志信息中,以少量的时间实现了异常检测。
2.2.3 金融行业
交通银行通过数据中心运维大数据平台的建设,将各类日志、告警等运维数据统一集中存储。通过关联分析、建模预测等方式发现日志、告警信息中潜在联系,并建设监控历史数据分析、监控告警智能分析以及日志智能检索分析等大数据运维应用场景,实现了事前智能预警、事后快速定位故障。
中国银行初步形成了“运维大数据仓库”、“运维数据分析平台”的计算框架,对系统日志、应用日志、监控数据和网络镜像包等全量数据进行集中存放和处理,并在异常检测、故障快速定位、系统容量预估和动态调配等多个场景中应用。
太平洋保险在智能运维方面实现了告警收敛,将多个告警做汇聚合并和主源分析,还开展了云脑项目以实现业务趋势预测和容量管理功能,还开发点点2.0 APP,实现风险监测和智能交互等功能。
阳光保险利用大数据和机器学习,实现了智能巡检、报警聚合、故障自愈及故障避免、自动发版与止损等多项功能。招商银行在性能容量评估、故障定位与诊断方面采用智能运维的方案,以应对业务高峰的需求。
上海银行张江数据中心启用了智能巡检机器人,对设备运行状态、机房环境、机柜微环境实时监测,保证数据中心状态实时可视、可控及数据的准确性。
2.2.4 技术厂商
Splunk公司擅长大数据的搜索与可视化,该公司以splunk平台为基础研发了智能运维管理平台,它将收集到的机器数据转化为有运维价值的见解,让用户能实时了解IT系统与技术构架现状,以便做出决策。
IBM公司认为智能运维的目标是对异常做出预警,在问题暴露前优化校正服务,以避免对业务造成影响。为此,IBM提出了实时大数据分析驱动的新一代智能运维中心解决方案,对事件日志进行上下文历史挖掘分析、周期性规律分析、成对成组出现分析、日志相关与因果分析。目前该方案目前已在交通银行得到实施与应用。不仅如此,IBM还发布了《金融行业智能运维AIOps实施建议白皮书》。
华为推出了基于大数据平台的FabricInsight数据中心网络智能分析平台。它基于 telemetry,采集全网真实流评估网络质量,进行网络异常流识别和分析,实现风险主动预测。FabricInsight将应用和网络路径关联,能够对端口级问题进行快速定位,还支持百亿数据秒级检索,并实现时延、路径等多维度历史数据可视。
在智能机器人巡检方面,深圳朗驰欣创研发的室内智能巡检机器人,可实现对数据机房7*24小时不间断往复式巡检任务,对数据中心环境和设备进行智能检测,对电源、空调、服务器等指示灯和仪表状态进行自主巡视和判断分析。其产品分为轨道式巡检机器人和轮式巡检机器人,目前已应用于国家电网数据中心和IDC数据中心。
浙江国自与阿里巴巴联合研发的高精度数据中心智能巡检机器人“天巡”于2017年云栖大会正式发布,它可以协助工作人员对数据中心环境进行日常巡检、远程任务调用、随工监管和安防管理工作。目前“天巡”已部署应用于阿里巴巴张北数据中心,根据实际应用看,“天巡”不仅实现全天24小时巡检,而且接替了运维人员以往30%的重复性工作,在大幅提升工作效率的同时,可以让工作人员有时间去做创造性的工作。
京东金融于2018年正式发布巡检机器人,可实现自动导航与避障、自主充电、环境温湿度检测、设备编码识别、设备指示灯识别、设备故障码识别、环境异物识别、人员身份验证、引导和跟随等功能,并可通过实时数据传输,在巡检管理后台进行远程监测和结果查询。目前巡检机器人已部署于京东金融数据中心,在6.18期间已经受了严苛的实战检验,提升了数据中心的巡检效率和智能化管理水平,避免人工的错检和漏检,与传统人工巡检方式相比,效率更高,成本更低。
2.3 核心技术研究
智能运维是基于机器学习等人工智能算法,分析挖掘运维大数据,并利用自动化工具实施运维决策的过程。因此,智能运维的技术主要组成是运维大数据平台、智能分析决策组件、自动化工具,如下图所示:
运维大数据平台如同眼一样,能采集、处理、存储、展示各种运维数据。智能分析决策组件如同大脑,它以眼睛感知到的数据作为输入,作出实时的运维决策,从而驱动自动化工具实施操作。自动化工具如同手一样,能根据运维决策,实施具体的运维操作,如重启、回滚、扩缩容等。
2.3.1 运维大数据平台
(1)运维大数据
运维大数据平台用于对各种运维数据进行采集、处理、存储、展示的统一平台。运维数据包含监控数据、日志数据、配置信息等,其详细组成如下表所示:
表2 运维大数据组成
大数据平台所存储的数据,按照所更新的频率可分为静态数据和动态数据。静态数据主要包含CMDB数据、变更管理数据、流程管理数据、平台配置信息数据等。此类数据一般情况下在一定时间范围内是固定不变,主要是为动态数据分析提供基础的配置信息。对此类数据的查询操作多,增删改操作较少。当智能运维平台启动时,部分静态数据可直接加载到内存数据库中,因此静态数据一般保存在结构化数据库中或者Hive平台。
动态数据主要包含各类监控指标数据、日志数据以及第三方扩展应用所产生的数据。此类数据一般是实时生成并被获取,并作为基础数据,需要通过数据清洗转换成可使用的样本数据。动态数据一般按不同的使用场景保存在不同大数据组件中,如用于分析的数据保存在Hive数据库,用于检索的日志数据可保存在ES(即ElasticSearch)中。
(2)运维大数据平台
参考大数据平台的架构,运维大数据平台由数据采集层、数据存储层、数据分析建模层、展示层等组成,其逻辑架构如下图所示。
数据采集处理层是整个大数据平台的数据来源,所接入的运维数据类型包括日志数据、性能指标数据、网络抓包数据、用户行为数据、告警数据、配置管理数据、运维流程类数据等,其格式包括系统中的结构化数据、半/非结构化数据、以及实时流数据。采集方式可分为代理采集和无代理采集,其中代理采集一般为拉的方式,在采集端部署agent来采集,无代理采集一般利用logstash、flume等组件直接获取运维数据。在该层也会对数据做预处理,使其能满足定义的格式,用以在数据存储层落地。
数据存储层是用于落地运维数据,可根据不同的数据类型、数据消费和使用场景,选择不同的数据存储方式。如用于实时全文检索、分词搜索的数据可选用ES;用于以时间维度进行查询分析的数据,如时间序列数据,可采用rrdtool、graphite、influxdb等时序数据库;关系类数据可采用图数据库;用于长期存储、离线挖掘、数据仓库等数据可采用Hadoop、Spark等。
数据计算层提供实时和离线计算框架,离线计算是针对存储的历史数据进行批量分析与计算,可用于大数据量的离线模型训练和计算,如告警关联关系挖掘、趋势预测计算、容量预测模型计算等。实时计算是对流处理中实时数据进行在线计算,包括数据查询、预处理、统计分析、异常数据实时监测。目前主流的流计算框架包括Spark Streaming、Kafka Streaming、Flink、Storm等。
展示层为用户提供可视化方式展示时序指标数据,并提供统一的告警监控配置和监控告警通知功能,还可以为业务应用提供分析展示功能,帮助业务人员实时了解业务应用状态。目前主流的开源框架有kibana、Graphic等。
2.3.2 智能分析决策组件
在智能运维平台中,如果将大数据运维平台比喻成“眼睛”,用于直接感知运维数据,自动化工具比喻成“手”,用于直接处理运维操作,那么智能运维组件相当于“大脑”功能,用于对运维事件进行分析、处理,并作出决策。智能运维组件是利用人工智能算法,根据具体的运维场景、业务规则或专家经验等构建的组件,类似于程序中的API或公共库,它具有可重用、可演进、可了解的特性。智能运维组件按照功能类型可分为两大类,分别是运维知识图谱类和动态决策类。
(1)运维知识图谱类组件
运维知识图谱类的组件是通过多种算法挖掘运维历史数据,从而得出运维主体各类特性画像和规律,以及运维主体之间的关系,形成运维知识图谱。其中,运维主体是指系统软硬件及其运行状态,软件包括操作系统、中间件、数据库、应用、应用实例、模块、服务、微服务、存储服务等,硬件包括机房、机群、机架、服务器、虚机、容器、硬盘、交换机、路由器等,运行状态主要是由指标、日志事件、变更、Trace等监控数据体现。运维知识图谱类的组件如下图所示:
图4 运维知识图谱的组件示意图
以故障失效传播链构建为例,故障失效传播链构建是对失效现象进行回本溯源的分析,查找引起该失效的可能的故障原因。一种对故障失效传播链的智能分析方法是基于故障树的分析方法,通过模块调用链获得模块之间逻辑调用关系,以及配置信息所获得的物理模块的关联关系,构成可能的故障树用以描述故障传播链。利用机器学习的方法,对该故障树进行联动分析与剪枝,形成最终的子树,即故障失效传播链。其他的算法,包括FP-Growth、Apriori、随机森林、Pearson关联分析,J-Measure,Two-sample test等。
(2)动态决策类组件
动态决策类组件则是在已经挖掘好的运维知识图谱的基础上,利用实时监控数据作出实时决策,最终形成运维策略库。实时决策主要有异常检测、故障定位、故障处置、故障规避等,如下图所示:
图5 动态决策类组件的示意图
动态决策类组件一般是对当前的日志或事件进行分析,对其作出及时响应与决策,甚至判断未来一段时间内系统运行状态进行预测。可以将异常发现、故障定位、异常处置作为一种被动的运维,异常规避则是一种主动主动异常管理的方式,准确度高的预测能提高服务的稳定性。
以故障预测为例,预测是基于历史经验的基础上,使用多种模型或方法对现有的系统状态进行分析,判断未来某一段时间内发生失效的概率。预测是一种主动异常管理的方式,准确度高的预测能提高服务的稳定性。通过智能预测的结果,运维人员可采用多种运维手段,如切换流量、替换设备等方式规避系统失效。基于故障特征的预测是在离线状态下从历史系统日志中通过机器学习算法提取出异常特征,对模型进行训练。在在线预测阶段,将实时的运行状态信息与模型中的异常特征进行匹配,从而确定未来某时间段系统失效的概率。
2.3.3 自动化工具
自动化工具是基于确定逻辑的运维工具,对技术系统实施诸如运行控制、监控、重启、回滚、版本变更、流量控制等系列操作,是对技术系统实施运维的手段,用以维护技术系统的安全、稳定、可靠运行。自动化工具是自动化运维的产物,也是智能运维组件作出决策后,实施具体运维操作所依赖的工具。
自动化工具按照功能可分为两类:监控报警类自动化工具、运维操作类自动化工具。监控报警类自动化工具是对各类IT资源(包括服务器、数据库、中间件、存储备份、网络、安全、机房、业务应用、操作系统、虚拟化等)进行实时监控,对异常情况进行报警。并能对故障根源告警进行归并处理,以解决特殊情况下告警泛滥的问题,例如机房断网造成的批量服务器报警。
运维操作自动化工具主要是把运维一系列的手工执行繁琐的工作,按照日常正确的维护流程分步编写成脚本,然后由自动化运维工具按流程编排成作业自动化执行,如运行控制、备份、重启、版本变更与回滚、流量控制等。
3 我司智能运维平台技术研究
3.1 智能运维目标
结合我司技术系统运维现状与未来的发展需求,实现智能运维的主要目标可归纳为:“事前智能预警、事后快速定位、夜间无人值守、远程集中管理”。
事前智能预警是在异常发生前,就能通过微小的征兆提前感知。因此,事前智能预警一方面要实现自检能力,在业务实际发生前,实施自我检查,判断应用与系统的可用性,提前感知业务的可用能力。另一方面要对系统软硬件的指标体系、日志、事件进行监测,构建基于历史运行信息的系统功能与性能画像、性能预测模型等,并根据当前的运行信息预测未来一段时间内系统失效的概率,以达到提前预警的目的。
事后快速定位是在异常发生后,在众多繁杂的报警信息中分析并定位住产生异常的原因,甚至还能基于历史处理的经验,给出最好的运维决策。它是对故障失效传播链、智能异常检测、异常报警聚合的综合运用。
考虑到交易结算系统是证券市场核心基础设施,需全天候安全保障。但在非交易非日终处理时段,特别是夜间,系统所需处理的业务量相对较低。而此时系统值守则是非常繁琐枯燥,因此需实现夜间无人值守,解决现阶段夜间值守困境。
远程集中管理则是对地理位置偏僻的数据中心采取远程监管的手段,以多种智能手段,如智能巡检机器人,代替人工巡检。从而减少派驻现场值守的人员数量,降低运维成本,解决人力资源紧张等问题。
3.2 应用场景分析
3.2.1 智能预警
智能预警则是在异常发生前,预测异常发生的概率,从而提醒或有针对性的对异常提前规避。智能预警有如下两类典型应用场景:
1)指标预警。指标是用以衡量应用系统各方面业务状态(业务指标)和运行状态(技术指标)的自描述的标准或数据,如成交笔数、交易量、未应答数,服务响应延迟时间,http请求状态等。指标预警是针对某一应用或系统,根据其历史运行的信息,以时间序列为轴,构建其正常运行的基线,结合该应用或系统当前的运行状态、指标数值,判断是否出现异常。更进一步,可依据应用的画像与知识图谱信息,获取影响指标的其他变量因素,通过预测模型,预测未来一段时间该指标的走势,提前感知应用或系统的状态。
2)日终节点运行时间预测。此类预测是从节点运行历史数据中,获取影响各节点运行时间的变量数据作为特征值,如A股成交数量、非但保成交量、权益数量、回购成交数量等,采用机器学习算法中的回归类算法,对各节点构建运行时间的特征函数,然后在实际生产环境中,利用已知的特征值来预测运行时间。
3.2.2 智能检测
智能检测则是从事前分析、事中告警聚合、故障定位、事后经验沉淀等方面,来辅助运维人员的决策过程,实现对异常快速有效处理。
1)运维知识图谱的建立。通过离线的数据挖掘等方式,从运维历史数据中得出各个运维主体的运行规律、各个主体之间的关联关系,如建立故障失效传播链,用以对失效进行回本溯源的分析,查找引起该失效的故障原因。
2)技术系统巡检。对技术系统的关键业务场景采用模拟的、黑盒的自我检查,以判断关键业务的可用性。所实现的自我检查能力,可在业务实际发生前,提前感知业务的可用能力。
3)智能异常检测。通过对已有的异常事件进行标注,用无监督异常检测及基于算法的工具,在历史日志中自动搜索匹配已标注的异常事件,以此训练机器学习模型,实现对异常的自动判断与检测。
4)异常报警聚合。在运维过程中,容易出现两个极端的监控现象,一个极端是日志较少,另一极端则是日志过多,导致监控报警过多。由于目前所监控的指标较多,粒度较细,因此容易造成报警信息过多,异常报警冗余。异常报警聚合是将冗余的报警信息进行聚合,将其处理成精简的报警信息,如将相同时间段内多个关联性较强异常报警聚合成单个独立的报警信息。
5)故障根因分析。故障原因分析是基于准确的异常报警基础上,分析查找异常的发生原因,定位故障并修复。它是对故障失效传播链、智能异常检测、异常报警聚合的综合运用,当异常被检测时,通过异常报警聚合缩小异常的范围,然后通过故障失效传播链找到可能的发生故障原因。在此过程中,采用机器学习的方法,将所有可能的故障进行模拟,依据已有的失效传播链建立学习模型,根据实际检测的异常指标进一步缩小故障的范围。
3.2.3 智能值守
机房智能值守主要体现在以下方面:
1)值班操作智能化。将手工操作全部实现自动化,并对操作结果进行智能检测与分析,保障系统操作可靠、系统稳定运行。
2)值班巡检智能化。将简单且需重复执行的巡查工作自动化,如对系统、应用的运行状态、关键数据进行自动巡查,并结合历史数据进行分析,以当前的业务量、通信连接数等数据进行分析,预测未来的系统与应用运行状态。
3)建立运维大数据可视化界面。在现有的监控界面上,丰富监控对象,实现运维大数据的可视化,并且丰富报警规则,减少漏报率与误报率。
4)建立性能预警与稳控机制。以历史运行日志、当前业务量为依据,构建性能预测模型,评估各个节点、各个应用服务器的性能数据,从而可动态调整计算资源,提升运维质量。
通过对技术系统的智能值守,可将值班人员从查看监控数据、盯屏等琐碎操作中解脱,转而研究如何定义新的运维场景、建立运维模型、完善运维知识图谱等方面,从而提升运维效率。
3.2.4 智能巡检
数据中心巡检是保证数据中心安全运行,提高可靠性的一项基础工作。机房智能巡检则可引入智能巡检机器人、定点摄像实时监控机器人,对IT设备、机房环境进行巡检或定点监控。
使用机器人代替人工巡检,对设备状态和环境状态进行全天候全自主检测,可以有效地提高巡检质量、提升巡检效率、降低人工劳动强度,减少人为的疏漏,及时发现异常,大大提高数据中心安全运行可靠性,为无人值守机房的最终目标实现提供了技术手段。
4 智能运维平台原型验证
为验证我司技术系统实施智能运维的可行性,在已有的技术系统环境中搭建了智能运维原型平台,该原型平台由大数据运维平台、智能组件、监控平台所组成。该原型平台对已有的技术系统部分运维数据作为研究对象,在事前智能预警方面,着眼于性能预测、异常预测,以实验验证了智能运维在我司开展的可行性及其所带来强大生产力。
4.1 原型架构
智能运维平台原型系统的逻辑架构如下图所示:
其中,利用flume采集AIX平台上的日志信息,logstash用以采集Linux平台的日志信息。所建立的运维大数据平台则包括数据采集与存储、数据分析及建模、展现等。
数据采集及存储采用了分布式采集策略,可动态实施采集任务,实现了高频率的基础资源的数据采集,可将主机、虚拟机、网络和存储等一切可以采集的数据全部抓取出来。如主机、虚拟机CPU 和内存的运行时信息,网络交换机接口的流量,存储池读写 IO,虚拟机系统日志等数据。离线文件采用Hadoop分布式存储采集的信息,实时采集及处理文件采用LogStash进行存储。
数据分析及建模则采用了基于 Hadoop+Spark 的结构,Hadoop 提供任务调度和分布式文件存储功能,Spark 将数据放在内存中实现 MapReduce 计算,这种结构能大幅度的提升数据处理的效率,满足系统日志分析实时性的要求,也能将计算结果保存到数据库中,避免重复计算和方便用户查询。
展示模块是用图表工具将监控系统、大数据以及各个渠道收集的各种数据用图形化方式展现,使不可视的运维数据变成可视的直观图形,展现各个基础资源的运行状况和分析结果,让技术人员和非技术人员都能直观地理解并关注。
目前,Hadoop高可用部署主机部署情况如下表所示:
表3 Hadoop部署情况说明
与Hadoop相关的主机有五台,分别命名为master1、master2、slave1、slave2、slave3。其中master1和master2作为NameNode,其他为DataNode。Zookeeper部署于master1、master2、slave1上,用于确保NameNode的高可用。
4.2 智能预警场景一:日终节点运行时间预测
沪市证券登记结算系统是我司核心技术系统,它由A股/B股登记结算子系统、港股通结算子系统、期权结算子系统等组成,向各类市场参与人提供证券登记存管、清算和交收等各类功能。为了能向市场提供高质量、高效率的结算数据服务,由自动批处理系统以节点方式对各个作业任务进行调度运行。在日终批处理后,结算数据将发送给各个参与人。
若能相对准确地预测日终各处理节点运行时间,找出从启动节点到结算数据发送节点的关键路径,即可预测出日终结算处理的用时以及结算数据发送的完成时点。如果当日预测出的发送时点发现会影响参与人的日终结算处理以及下一交易日的开工准备,可提前通知相关人员做好准备,防范于未然。
日终节点运行时间预测是采集节点的历史运行数据,并在大数据平台中进行分析处理,利用机器学习算法对这些节点的运行时间进行了预测。从实验结果可知,对节点性能进行智能预测的结果符合需求。
4.2.1 预测算法
日终处理节点根据是否受特征值影响分为两类,一类是受特征值影响较小或与几乎无关的节点,此类节点的时间预测可采用均值方法。另一类是受特征值影响较大的节点算法,则需要用机器学习算法进行预测。
利用机器学习算法进行预测,可从节点运行历史数据中,获取影响各节点性能的变量数据作为特征值,如A股成交数量、非但保成交量、权益数量、回购成交数量等,采用机器学习算法中的回归类算法,对各节点构建运行时间的特征函数,然后在实际生产环境中,利用已知的特征值来预测性能。
目前可采用线性回归、决策树回归、随机森林回归、支持向量机(Support Vector Machine, SVM)回归、K最近邻(K-Nearest Neighbor, KNN)回归、Adaboost、梯度提升回归树(Gradient Boost Regression Tree, GBRT)等算法。
4.2.2 实验设计
本次实验将以58个节点作为研究对象,利用机器学习算法进行性能预测。选取的样本集从2017年8月1日至2018年5月25日(199个工作日),其中训练数据为149组,验证测试数据有50组。所选取的11个特征向量包含:A股成交数量、非但保成交、权益数量、回购成交数量以及交易所输入数据等。对于一些缺失的节点历史运行数据,将使用其已有数据的均值进行填补。
本次实验的处理流程如下所示:
(1)从数据库中拿取特征和节点运行时间等历史数据做成csv文件后进行训练及测试。
(2)取149组训练数据并使用线性回归等7种方法进行建模。
(3)用50组测试数据对模型进行交叉验证,并计算出预测结果和实际运行时间的绝对误差值,作为该方法的准确程度,同时也可以和50组运行时间测试值的均值进行比较,均值也可以是一种预测方法,将结果输出为csv文件进行分析。
(4)对某些方法进行调参,如随机森林的回归树数量,再次进行训练及测试。
(5)反复调参后若方法性能无法再提高,则可以使用当前的模型用于实际应用,根据新输入的特征值预测运行时间,为防止一些离群值影响预测结果,取所有方法预测值的中数,作为节点运行时间的预测结果,并输出为csv文件。
4.2.3 结果分析
实验所涉及的58个节点的预测值,其平均相对误差小于5%。以预测结果较好的日终存管数据发送(RZ06010000)节点为例,用50组数据(2018.3.13至2018.5.25期间的数据)进行测试,采用不同回归算法所得到的预测结果与实际结果的比较示意图如下图所示,预测值的平均误差为9.21秒。
4.3 智能预警场景二:关键路径智能分析
日终节点的批处理过程是由一系列的节点根据依赖关系而组成的有序无环图,日终节点关键路径又称为最长路径,是指在一个工程中,从起点作业到终点作业间耗时最长的一条逻辑路径。一般来说,工程的完成时间取决于它的最长路径,而与其他耗时短的路径无关。
在日终节点运行时间预测的基础上,本文完成了对起始节点和终止节点间关键路径的预测。该项研究工作可以预测出日终处理过程中关键节点的最晚处理时间。
4.3.1 算法分析
日终批处理节点运行图是一种有向无环图,图中任意一边有方向且不存在环路,在该图中,顶点表示操作节点,有向边上的权值为父节点的运行时间。传统的关键路径算法适用于只有一个起点和重点的拓扑图,但日终批处理节点运行图含有多个起点和重点,因此需采用其他算法。本次实验采用了动态规划算法、SPFA(Shortest Path Faster Algorithm)算法。
动态规划(Dynamic Programming, DP)是把多阶段过程转换成单阶段问题并逐个求解的过程。其解决关键路径问题的核心思想是在起点和终点间加入一个点,并判断能否起点到终点的路径更长,这被称为松弛操作,若能更长将加入的点作为新的起点再进行松弛操作,如此递归得出最终的关键路径。
SPFA(Shortest Path Faster Algorithm)算法是求最短路径Bellman-Ford算法的队列优化形式,做相应修改后也能解决关键路径问题。具体实现方法是建立一个先进先出的队列保存能更新关键路径的节点,并定义一个数组存储起点到其余节点的最长路长度,每次更新时取出首节点,并对其进行松弛操作,若到子节点的关键路径有所调整,且子节点不在队列中,则把子节点加入队尾并更新关键路径数组,如此反复,直到队列为空为止。
4.3.2 实验设计
由于目前无法为预测后的节点运行时间定义节点开始时间和交互时间,所以暂时用历史数据进行测试。输入输出同预测节点运行时间一样,从数据库中取出历史节点运行时间数据以及节点关系表,处理后将最后的关键路径结果(即从起点到终点的各个节点)输出至数据库表中。整体处理流程如下所示:
1)从输入数据库中拿取历史节点运行时间数据和节点关系表作为输入值。并在配置文件中定义日期、起点和终点等数据,起点和终点可为多个(即多条路径),需要一一对应。
2)使用动态规划算法求出关键路径,并用SPFA算法验证准确性。
3)将关键路径结果输出至数据库,内容包括节点名称、节点描述、节点开始和结束时间以及运行时间。
4.3.3 结果分析
选择2018年5月25日的数据进行测试,定义起点为A股日终前3494磁带备份(JBSYS53003),终点为日终存管数据发送(RZ06010000)。除去部分因业务规则而设定的固定时刻,其运行时间总时长为4172秒(约1个小时10分钟),预测结果与实际拟合度超过90%。
5 智能运维实施路径
智能运维的建设是从无到有的过程,是从局部单点应用的探索到单点能力完善,再到形成解决某个局部问题的一个过程,最终将各个智能运维场景相结合,形成一体化智能运维能力。因此智能运维的实施路径可分为以下四个层面:
(1)运维大数据平台建设
数据是智能运维落地的基础,首先需要建立运维大数据平台,对运维数据进行采集、分析、计算、存储,并定义标准化的指标体系,对运维数据进行萃取,积累大量的可用的运维数据。
以性能指标体系为例,可对操作系统、数据库、中间件等应用建立可供分析的性能指标体系,并在系统运行中获取性能数据,以此来刻画各应用的正常状态、异常状态的画像,为后续的检测、预测、分析等提供基础的运维知识图谱数据。
(2)单点智能化实践
其次,应从实际出发,立足当前运维痛点,从单点运维场景切入,如建立时序数据智能异常发现、流量智能异常告警、数据库智能监控、智能网络日志分析等能力,由点到面进行智能化运维能力的建设,从而为后期进行局部智能化场景的实现打下基础。
以数据库智能监控能力为例,运维人员可实时获取数据运行状态指标,当数据库出现异常时,运维人员可通过历史数据回溯、数据比对等方式进行故障跟踪、异常指标分析,从而形成标准化故障排查、分析能力和经验,为后期的数据库智能故障预警、异常根因分析等局部场景提供基础支持。
(3)局部场景智能化
局部场景智能化是指对运维场景中硬件、系统、网络、数据库、中间件等分别实现智能监控、异常预警、故障发现、故障分析、根因分析、故障自愈等闭环场景。以网络异常为例,当智能运维系统检测到网络异常指标时,将出发告警时间,经运维人员确认故障后,智能运维系统将通过机器学习算法定位故障,然后调用自动化运维工具执行相应的修复操作,实现该场景下故障自愈。
局部场景智能化的实现,将使得故障发现、处理、排查效率得到极大的提升,有效保障业务稳定运行。同时,该能力的实现使得智能化运维具备场景化、标准化、自动化等能力。
(4)一体化智能运维
一体化智能运维是智能运维系统发展的终极目标。该阶段不仅实现各运维场景智能化闭环,且智能运维能力与运维管理流程、运维组织架构、运维自动化是深入融合。运维人员不再以发现故障、解决故障作为目标导向,转而专注业务运行状态,探索运维需求,定义并实现运维场景,丰富智能运维的广度与深度。
作者简介:
陈林博,工学博士,毕业于同济大学计算机系统结构专业。目前从事基础技术框架研发、云计算研究与应用、智能运维研究与应用等工作。
何支军,工程硕士,毕业于复旦大学微电子专业。现任中国结算上海分公司技术开发部总监,长期从事登记结算技术系统的建设和运维工作。
颜挺进,工学硕士,毕业于大连理工大学。长期从事技术系统应用架构研发、批处理架构研发、在线系统设计等工作。
焦振海,工学硕士,毕业于南京大学计算机系。长期从事基础技术框架研发、在线系统设计等工作。
李乔,工学硕士,毕业于北京大学软件工程专业。从事批处理架构研发、智能运维研发、数据分析与可视化等工作。
王铭玮,工学硕士,毕业于英国帝国理工学院电子电气工程系。从事基础技术框架研发与维护等、批处理架构研发等工作。
本文转自微信公众号:上交所技术服务
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/303057.html