应用运维智能化技术和相关软件系统是伴随应用系统复杂度、运维工作量和技术难度激增而出现的,因此,通过人工智能算法来代替人工融合和分析数据、推理、决策、处理问题是建设应用智能运维系统需要考虑的关键问题之一。
传统应用运维过程中常用的监控运维系统一般是针对特定场景、特定资源建设的。例如,日志分析平台采集分析应用日志;APM监控代码链路和对全量用户请求的处理情况;网络性能管理(NPM)平台追踪网络中的交易情况和网络异常;IT资源监控系统监控服务器、网络设备、云环境和应用运行依赖的中间件等。要做到智能化,首先要有运维数据治理平台的支撑,将离散、竖井式的监控系统关联打通,构建同构的、一致的全景化应用监控视图,这样才能为运维人员过滤冗余信息,提供精准的风险态势监控和定位决策支持。
关联分析是整合应用运行期生成的各层级全栈数据、关联打通竖井式监控系统的关键。目前可以用来关联应用运维数据的方法主要有如下几种。
1、读取配置管理数据库(CMDB)信息
CMDB是一个数据库,其中包含有关组织IT服务中使用的硬件和软件组件,以及这些组件之间关系的所有相关信息。信息系统的组件称为配置项(CI)。CI可以是任何可以想象的IT组件,包括软件、硬件、文档和人员,以及它们之间的任意组合或依赖关系。应用运行期依赖物理IT基础设施设备、虚拟IT基础设施设备与应用之间的部署关系,网络拓扑关联关系可以从CMDB中定义的CI关联读取出来。一旦设备出现故障,这些关系可以用来辅助找出影响范围。
2、监控分析网络流量
NPM工具可以通过旁路镜像网络流量来监控网络上应用中的服务接口之间、应用与用户之间的交互关系,获取网络层的关联关系。利用深度网络包检测(Deep Packet Inspection,DPI)技术,甚至可以将网络报文中的业务交互信息解析出来,补充业务层的调用关系。
3、追踪应用代码链路
APM工具提供了对应用程序性能深入分析的能力,当用户向应用程序发出请求时,APM工具可以通过探针看到分布式部署的应用系统中的接口调用关系、代码链路执行过程和方法调用关系,并且可以显示有关此请求发生的系统数据、参数和与数据库交互的SQL语句。应用白盒监控能力提供的关联关系,可以在排查代码缺陷导致的故障时,快速定位根源问题。
4、利用人工智能算法计算关联关系
以上三种方法利用传统运维监控工具提供的数据关联和检索能力构建了覆盖物理部署、网络交互、接口交互与代码交互的关系图结构,基于此可以实现在异常情况下的信息关联。但是,一旦出现未能直接监控的问题导致的应用故障,就需要用算法来辅助分析海量历史监控数据,发现数据中隐含的关系,并根据发现的问题及已知事件推理进行决策。常用的技术是查找时间序列指标数据波动之间的相似性、相关性等关联关系(主要方法有Pearson、Granger Kendall、Spearman等)。基于关联关系构建的因果推理分析模型,可以基于概率图模型(如Bayesian Networks、Markov Random Fields等)建模来实现因果关系发现和推理。