蒙特卡洛树搜索(蒙特卡洛树搜索代码) 近几年证券业务创新快速发展,如设立科创板并试点注册制、股转新三板改革、创业板改革等对技术系统的快速响应提出了更高的需求,业务的灵活多变、版本的快速迭代、系统的频繁变更升级给系统的安全稳定高效运行带来了很大挑战。另一方面,新一代信息技术正在被应用到行业的各个领域,智能运维旨在通过对海量运维数据进行挖掘分析,提升运维水平,这正是科技赋能运维,提升行业运行保障能力的典型应用。光大证券积极探索智能运维落地使用,2018 年上线了智能运维平台并荣获第七届证券期货科学技术奖三等奖,经过持续的优化迭代,该平台已经在运维工作中发挥出越来越重要的作用。智能运维平台功能框架 目前我司建设的智能运维平台核心包括异常检测和异常定位两类场景。异常检测能力包括业务指标异常检测和日志异常检测场景,异常定位能力包括业务明细多维定位和机器指标定位场景,底层以运维数据工厂和运维图谱作为支撑,覆盖了应用层以及基础层(见下图)。 图 平台功能图 在应用层,主要以业务以及用户体验为视角,专注于响应时间、响应率、成功率等指标的检测,有助于及时发现系统异常,提前揭示潜在风险。同时在应用层,会对关键的模块日志进行实时主动异常检测,通过运行指标和运行日志可以揭示绝大部分应用异常。在平台检测出运行指标或日志异常之后,会自动触发异常定位即异常原因定位,在应用层面会触发对交易明细的多个维度进行分析,自动遍历所有业务维度组合,大幅提升异常定位效率和广度。多维定位的结果可以为我们揭示一些根因的表象和线索,比如成功率下降是否集中在某些版本或者某些返回码,成功率下降是不是集中在某个线路、某一类型交易等,排查结果可以帮组运维人员快速判断异常排查方向。 在基础设施层,平台会利用CMDB找到该应用所依赖的基础组件如包括主机、数据库、网络、存储等,对这些组件的关键指标以及日志进行分析,得出存在异常波动的指标,降低运维人员检查基础层异常的时间。 此外,无论是在应用层还是基础层,传统的监控工具,特别是专业组件监控工具仍然发挥着很重要的作用,专业工具产生的告警也会自动纳入到异常原因列表进行汇聚分析,算法据异常程度以及人工运维经验设置的权重、调用关系、进行可能原因排名,从而帮助运维人员快速确认导致异常的可能原因。智能运维平台核心落地场景分析 1.单指标异常检测 在单个指标检测方面,主要有静态阈值、统计性算法、时序性检测算法等。这几种算法适用于不同的数据,在我们生产环境中往往是结合起来使用的,核心是根据数据特征的不同采用不同的算法或者组合来进行异常检测。另外在实践中表明,交易系统的主要运行指标一般都是以天为周期,这为检测提供了有力条件。针对数据特征的不同,选择的检测算法包括SARIMA、K-Sigma、TSD、GBRT等。 另外我们也积累了一些经验,如10秒汇聚出来的指标相比较1分钟级别,不但进一步提高了故障发现效率,数据特征也更明显,效果也更好。由于券商有固定交易时间,我们发现在交易时间各个运行指标检测的效果更好,反之在非交易时间由于受到一些不确定的变更、重启等操作影响,检测效果不佳。目前已在光大证券接入了10000多个业务运行指标,覆盖了集中交易、两融、网上交易等核心交易系统。 2.日志异常检测 日志数据中往往隐藏着很多有价值的信息,甚至直接是异常的根本原因。通常情况下,对于重要的运行日志,传统的方法是设置关键字监控或配置正则表达式。但是关键字监控的实际使用效果并不理想,如日志种类太多,很难将全部异常关键字全部覆盖。另外一种方法就是正则解析,即对某一种类型的日志实施精准结构化解析,这种方法更适合针对特定格式的日志提取业务或者关键指标,并不适合直接做日志异常检测,最重要的原因是正则表达式配置复杂,一种日志有时需要要写几十个正则,而且历史上未出现过的日志是无法使用现有的正则完成解析的。为了解决关键字和正则表达式检测方式的不足,我们通过自动智能的日志模板解析算法从日志中自动提取出不同的模板和变量,进而针对模板所覆盖的日志数量进行智能的异常检测,帮助运维人员实时在海量日志中发现异常日志。我们在实践中发现,日志的异常检测不能全部依赖于算法,同样需要结合运维经验,比如运维人员来设置哪些模板对于运行是有意义的需要检测的,哪些可以忽略,甚至直接设置关键字等。通过运维经验即规则的设置加上算法的检测,日志的异常检测才能取得预期效果。目前生产上我们已经实现了对交易系统的核心运行日志以及操作系统、数据库等通用组件的日志监控,多次发现异常。 3.业务明细多维定位 对于核心系统交易量、响应时间、成功率、响应率等指标,往往是通过SparkStreaming或Flink等流计算而来,基础数据是每一笔交易流水。而每一笔交易往往存在多个维度属性,当这类业务指标出现问题时,快速判断异常程度最高的维度属性通常能帮助管理员迅速缩小排障范围,进而提升故障处置效率。一笔典型的股票交易明细包括交易的来源省份、城市、证券交易的客户端版本、客户端所在的系统类型、主机IP等多种维度,每一种维度都包括若干个属性取值。例如IP、客户号等的取值就很多且分散,逐个维度进行人工计算对比,耗时很长,而对于有些现象往往出现在多个维度的组合。当前某个功能耗时增加,可能是集中出现在使用了APP6.00(客户交易端版本)且手机为安卓操作系统,维度组合越多计算将越困难,耗时越长。因此,手工枚举所有的维度进行维度定位往往耗时较长。 业务明细多维定位场景采用基于蒙特卡洛树剪枝等算法,可以在业务指标发生异常时,自动从多个维度属性组合中分析出异常维度组合。目前在实际落地中,已经实时接入了核心交易系统包括集中交易、两融、网上交易等系统的业务明细数据。当业务指标出现异常时,可以准确快速地对异常前后的交易明细数据进行定位分析,自动找出异常的维度或者维度组合,为应用管理员提供导致异常的线索,相比较人工的方式,大幅度提高了定位的速度。 4.异常机器指标定位 在遇到了业务异常,特别是遇到性能问题时,通常会去检查相关组件如操作系统、数据库、网络等关键的指标是否有变化。以主机为例,通常用CPU、MEM、I/O几方面的指标,如CPU利用率、内存利用率、磁盘繁忙率、网络进出流量、机器负载等几十个基础性能指标,往往需要耗费大量精力去检查。通过运用聚类、核密度估计、极值理论等算法,可以快速判断并定位到哪些指标与自己的历史、其他机器的波动情况不同。 例如当智能运维平台检测出某个交易指标响应时间异常之后,多维度分析表明来自某两台处理机请求响应时间异常导致整个功能号延时增加,同时通过异常机器指标定位到这两台处理机的CPU指标出现异常。从检测到功能号异常,再到定位问题,并进行具体处理,整个过程可以在1分钟内完成。平台建设收益 近年来,我们在智能运维领域持续耕耘,特别是异常检测和根因定位在我们的生产环境取得了良好效果。主要表现在以下方面:首先,智能运维平台数据包括了从业务到基础层数据,如日志、指标、工单等,在提升数据治理能力的同时,打破了数据壁垒,监测的范围更广,多次发现了传统监控没有监测到的异常,特别是一些潜在风险、瓶颈。其次,由于大数据技术特别是实时流计算以及算法的运用,使得检测速度更快、颗粒度更细,而且更加准确,生产上对于业务指标以及日志的实时监测达到了秒级别。最后,得益于算法的应用和基于运维经验的规则设置,在检测到异常之后,可以更加快速地排查到异常原因,有效降低了MTTR,提升排障效率。此外,通过开源技术替代商业软件,直接节约了经济成本数百万元,有效降低了运维成本。随着智能运维的不断深入建设,该平台已成为光大证券从IT运维的稳定、安全、可靠向IT运营的体验、效益、效率转型的重要抓手。