来源:2021年第二届中小金融机构数智化转型优秀案例评选
一、项目方案
金融行业对IT系统服务一直保持着7*24小时持续不间断,接近于零宕机的高标准高要求,所以提高系统可用性一直是我行运维的主要目标。而随着业务线扩展以及物联网的发展,服务规模和业务系统也在不断扩大和复杂化,传统监控手段已经难以支撑,同时新的技术环境与数字化基础设施也必须要有相匹配的运营能力,IT运维面临技术升级和业务创新的压力。
目前我行在故障发现层面还是基于传统监控固定阈值的方式,误报和漏报情况时有发生。而出现问题后不论是应用层面的故障定界还是基础设施层面的故障排查均需人工查看交易明细数据或基础设施监控信息,排障进度缓慢且对人员技能和经验有较强依赖。
为了解决上述问题,我行通过本次项目引进行业最先进的成果与技术,建设了一套基于AI的智能运维分析平台,能适应我行未来发展趋势,在性能、自动化、生产应用等方面具备稳定性、灵活性和前瞻性。通过故障发现及故障定位两个方向三个场景的建设,大幅提升异常发现能力和复杂时空关系中故障分析和定位能力。
(1)故障发现:业务指标异常检测
业务指标异常检测:利用国内最先进的无监督学习算法,无需人工标注、自动识别数据特征、选择最合适的检测算法进行模型训练,在极少人工干涉的基础上尝试细分维度的监控,将监控指标提升近百倍,弥补监控盲区。
(2)故障定位:机器指标定位、业务明细多维定位
机器指标定位:当应用系统出现告警时,自动触发对基础设施层做纵向对位分析,自动对海量指标做剧变检测,找出可疑指标。业务多维明细定位:每一笔交易都存在多个维度属性,当业务指标异常时,通过对全量业务明细数据分析快速准确定位异常所在的交易渠道、交易类型、返回码、IP、端口号等维度信息,辅助运维人员判断故障影响范围及确定排障方向。
1.1 功能架构
展现层:
为运维人员提供前端交互界面,满足其接入数据、组合算法编排应用场景、调节算法结果、数据可视化展示与理解等一系列运维操作要求。
按运维使用流程来看,应用层包含如下功能:
配置从哪些数据源接入何种数据,并对流量、入库策略进行管理;
算法参数、模型配置与查看;
根据业务拓扑进行业务中心配置;
事件中心中展示事件信息、分析报告等;
系统和用户权限等设置界面。
服务层:
服务层对底层进行抽象,对上提供查询和控制接口服务,对下进行大数据任务下发。包括如下功能:
对数据进行封装,响应前台或其他应用从数据层获取持久化数据、模型数据、拓扑和配置数据的需求;
提供管理接口,允许对拓扑、配置、算法和模型等进行调配;
对大数据任务进行进度、资源消耗等方面的追踪,同时允许前台控制大数据任务的编排和启停。
智能分析层:
智能分析层是智能运维算法的核心层,为核心智能运维算法大数据组件提供任务、资源和模型管理。智能算法主要包括前面所述业务指标异常检测、机器指标定位、业务明细多维定位三大场景。此外大数据任务管理会对这些任务的资源调度、模型生命周期管理、任务启停和失败重启等进行统一的调度管理。
数据层:
数据层提供如下数据存储和管道服务:
时序指标数据的流处理管道与持久化存储,包括交易指标、系统指标等;
系统配置、算法模型及故障分析报告的持久化存储;
包含运维实体、数据实体和算法实体的业务数据拓扑。
1.2 技术架构
智能运维平台的技术架构,主要包括以下方面:
数据接入及存储层:
- 根据不同数据日增量、功能需求和查询效率需求的差异性,采用了多种数据库存储策略组合的方式提供服务。作为我行数据源的APM业务数据存放在ES数据源中,数据类型为秒级报文实施明细数据;
- 利用Kafka作为统一的数据管道,对接入时序数据进行队列缓存,供各种流处理分析和归档程序消费;
- 利用InfluxDB存储指标型时序数据,可以提高大量长时间段(月级别)指标数据的索引效率,并极大降低存储空间;
- 利用ElasticSearch存储日志型时序数据,提高日志的字段检索能力;
- 利用MongoDB作为模型和配置数据的存储数据库,提高模型深度解析能力,能对大量异构数据进行深度存储和快速索引;
大数据分析层:
- 包含了以算法为核心的大数据分析部分和管理调度部分。
- 我行经数据拉取工具logstash实时抽取到kafka中,作为流式数据处理工具juggle的数据源,业务数据经juggle实现1分钟级别的数据聚合和数据加工与处理后写入kafka;聚合维度分别:交易码维度、应用流维度、渠道维度和分支机构4个维度,每个维度包含4个指标,分别为交易量、响应率、成功率和响应时间;
- 所有智能分析算法都以Spark框架在Yarn平台上运行。其中,业务指标异常检测流处理算法以Spark-Streaming的方式实现;而上述流处理算法的模型训练,及多维指标异常分析等算法以定时或触发批处理的方式实现。
- 针对大数据分析层的内部管理,基于Quartz实现的任务调度管理平台Kraken负载对接Yarn平台,对任务的启停和生命周期实行管理,并通过Livy组件提交新的任务和追踪其生命周期。同时,基于Redis的缓存系统负责在多个处理节点运行的流处理算法之间提供资源和进程锁及信息同步服务。
- 异常检测算法实时接收指标聚合数据,按历史训练模型和配置参数对数据进行流式的实时检测、实时告警与实时通知。
二、项目创新点
本次项目创新性的建设了三大场景,包括全方位的故障发现以及横纵两方向的故障定位。
故障发现层面既可以对业务系统、应用流等进行智能异常检测,同时也可以对交易码、重点服务器、重点客户等细粒度层面做实时异常检测。做到了360°全方位的业务监控,目前一期项目已接入了10套业务系统,共计1.3万余指标进行实时异常检测,得益于算法的高准确率和低误报率,目前日增告警数量仅10余条,且90%以上均为有效告警,降低了运维人员工作量的同时大幅提升了监控范围。
故障定界方面既可通过机器指标定位算法对基础设施层面做纵向定位,也可通过业务明细多维定位算法进行横向的故障影响分析。
目前基础设施层面已接入2300多台设备的机器指标数据,涵盖zabbix所有机器指标。可在告警产生后1分钟内既可定位基础设施层面异常情况,大幅提升了排障效率。
业务明细多维定位方面接入了10套业务系统的全量明细数据,可在告警发生后3分钟内定位到异常维度及维度组合,帮助管理员快速确定故障影响范围及排障方向。
三、技术实现特点
3.1 业务指标异常检测
算法原理:本项目采用无监督学习算法,无需人工标注,自动识别数据特征、选择最合适的检测算法基于历史数据进行模型训练,实现指标实时异常检测。
业务指标异常检测的整体架构设计如下图所示:
对于一条时间序列,首先对其特征进行表述。关注的特征包括:
- 通过算法自动找到时间序列的周期
- 是否具有向上/向下的趋势性
- 周期偏移情况
- 数据抖动程度
- 上下界极限值
- 是否可以用阈值的方法以及阈值采用多少合适
之后,根据时间序列的特征,计算资源的分配以及数据的时间来合理选用不同的模型组合来训练并生成对应的模型,算法包括:
- 变分自编码器
- 渐进梯度回归树
- 差分指数滑动平均
- 极值理论
- 周期性中值检测
数据积累到一定程度即可开始在实际环境中在线检测,在线检测使用已训练好的模型对应的关键特征生成算法来生成新的时间点的特征,并用已训练好的模型对新的时间点的异常程度打分,在线检测的过程中,需要对以下实际问题进行处理:
- 缺点:某一固定时间采集点没有数据
- 乱序:后面的时间先到异常检测算法而之前时间的点还在队列中
- 特征变化:由于新的部署等情况时间序列的特征与之前不一样
而在对业务指标的监控中,随着聚合维度的细分,会出现「小交易现象」,比如按照不同的交易码(功能号)对交易明细进行聚合,或者按照不同的交易码以及不同的渠道进行聚合,会使聚合出来的交易指标的绝对值减少,甚至会由于部分采样时间范围内没有交易导致指标呈现出随机缺失的状态,在实际生产环境中,夜间情况可能更加明显。而对于成功率、响应率、响应时间等指标,由于所监控的交易量的减少,除了带来数据缺失的问题,也会造成数据的波动加剧,比如某个采样范围内只有两笔交易,一笔交易的失败就会带来成功率50%的下降。
考虑到这种指标对于实时性的要求不高,算法会采用更有针对性的告警规则,避免偶然的毛刺或者对生产无影响的数据波动带来较多的误报;对于特征提取部分,算法会增加数据的全局特征提取的权重,降低局部特征的权重,以及会扩大周期偏移的参考范围,会学习更大窗口的历史同期数据,以获得更稳定的数据分布状态;对于算法选择部分,算法会倾向选择对数据缺失不敏感的算法,如极值理论,来获取合理稳定的动态基线,同时会对数据缺失严重的时间段和数据稳定的时间段进行分别的算法效果的评价,以采用更优秀稳定的算法进行实时的异常检测。
3.2 机器指标定位
本项目提出了一个自动化的基础设施层面定位算法,总体架构如下图如示:
在故障发生时(业务指标发生异常),会触发定位系统开始分析。其主要分为三部分:
1.指标异常程度评判:系统会收集当前一段时间所有机器和模块的指标数据,并执行异常检测算法去检测所有指标的异常程度。
2.异常实体分组:得到所有指标的异常程度后,过滤出异常的指标,之后将指标按照所属的实例、机器、指标类型、模块进行分组。
3.定位结果排序:通过运行智能排序算法,分别计算出模块、指标类型、机器、实例、指标的异常程度,分层排序,并最终展现给运维人员。
以上所有流程运行在大数据平台Spark、Hadoop、InfluxDB等工具上,最终以多样化的Web形式展示给运维人员,效果如下:
3.3业务明细多维定位
业务明细多维定位方案设计如上。
当系统发生了一个告警。业务明细多维定位会读取告警前后m+n分钟数据作为根因定位的源数据。首先根据告警发生时刻的维度组合对其他时间的数据进行缺失值填充、按维度聚合、KPI计算等。接着对当前数据规模进行评估。
不同规模的数据的异常检测的策略有所不同,对于数据规模较小的情况(维度及维度取值较少),采用部分异常检测进行加速,以及对根因的搜索有一定的优化。而随着维度及维度取值的增加,最细粒度的维度组合的数据较少,直接做异常检测会不准确。
我们会根据参考的历史时间序列长度以及算法训练的时间综合选择不同的异常检测算法。主要用到的算法有lightGBM、极值理论以及自研算法等,下面主要介绍一下自研算法。
自研算法:
我们的自研算法是更为通用的异常检测方法。可以高效的对所有KPI类型计算出一个可加和的异常得分,并且在不同的KPI间可环比参考。在自研异常检测算法中,我们主要参考了数据的极值、均值、稳定性、TF-IDF、差分等信息,随后将异常分数的PDF(概率密度函数)图进行聚类,确定后续搜索的顺序及根因的选择。
算法会先在异常分数最大的簇中搜索根因,我们模拟信息熵的计算来定义根因。我们认为当一个维度组合是根因会有如下表现:其信息熵显著大于其同层的其他维度组合,并且大于其超集和所有子集。同时,这也是我们剪枝的一部分,当找到一个维度组合满足上述条件时,算法将不会将其所有子节点作为根因候选集。同时算法会综合考虑「解释性」和「惊奇性」,即该维度组合能否解释当前整体KPI的变化情况,以及这个变化是否“惊奇”等。最终重复上诉过程,找到所有的候选根因集。
在找到了所有的候选根因集之后,我们会对不同的维度组合之间做分布相似性度量,根据KPI指标的不同,可加和KPI(交易量,失败量,响应时间等)主要使用JS散度。不可加和KPI(成功率,响应率等)使用Wasserstein距离衡量相似性。目的是将相似的维度组合进行合并,精简结果。
JS散度:
四、项目过程管理
整体项目建设分为需求调研与分析、开发实施、安装调试、试运行和项目验收几个阶段。目前项目已经建设完毕。
五、运营情况
通过本期项目建设,我行已具备了智能运维的基础能力:数据集成能力、数据处理能力、智能分析能力和数据可视化,为运维人员提供了多种数据即时查询分析、智能分析、数据可视化的运维工具,有效提升运维人员日常运维效率,提高部门的运维水平。
现实现业务指标异常检测、机器指标定位以及业务明细多维定位三个场景。其中业务指标异常检测已接入10套业务系统共3万余指标,机器指标定位已经接入2300多台设备的所有机器指标,业务明细多维定位场景也接入了10套业务系统的全量交易明细数据。
数据可视化:目前已实现了指标异常检测的动态基线可视化,实现了个人工作台以及大屏等多个可视化场景构建。
六、项目成效
智能运维(AIOps)分析平台,是用大数据和人工智能技术赋能IT运维领域,通过数据治理、算法研发、场景设计而构建,自动、准确、快速地发现信息系统异常,定位故障,辅助决策,切实提高了系统可用性。
(1)基于动态基线的业务指标异常检测,自动识别海量数据特征,得益于强大的算法效果,告警准确率和误报率有了大幅优化,,并且可在故障恶化前产生告警,为防止事件恶化争取宝贵时间。
(2)独有且领先的专业算法能够几十上百倍的扩大监控范围,除对传统的交易节点进行监控外,新实现了对渠道、交易类型、交易码等更细维度的智能实时异常检测。
(3)在告警的同时,通过机器指标定位,可以快速对基础设施层面做故障定位,针对不同经验的运维人员均可大幅提升排障效率。通过业务明细多维定位,可以快速地利用算法深入且全面的挖掘交易明细信息,找到根因所在维度和维度组合,辅助管理员快速进行故障定界,减少对人员技能和经验的依赖,大幅缩短故障发现和定位时间,提升了运维效率。
(4)本项目大量采用开源技术,节省了经济成本,而且积极探索和推动金融科技创新落地,效果显著。
七、经验总结
新的智能化运维方式,通过AIOPS实现了我行应用流及交易码级别的异常检测,使应用监控更加智能化、精细化,缩短了故障发现时间,大幅提升了故障预警能力及故障处置速度。
银行的业务系统是一个复杂的大型异构系统,针对不同的应用,智能运维工作的场景和需求都不相同,单一的算法和方式较难适用于各个场景。后续我行将采用逐步建设的思路,首先扩大业务指标异常检测覆盖面,补充监控盲区;同时在核心系统上进行多场景串联,持续建设机器指标定位和业务明细多维定位两个场景,在快速发现异常的同时在横纵两方面根因分析,打造完整的智能运维场景应用;然后将行内运维专家经验与人工智能结合,实现智能故障处置推荐及风险识别,在智能运维的道路上走出符合我行特色的坚实路径。
更多金融科技案例,请登录数字金融创新知识服务平台- 金科创新社(FintechinChina.com)官网案例库查看。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.