APP下载

面向Web应用的智能监控系统的设计与实现

2022-09-28班晏子婧

智能计算机与应用 2022年9期
关键词:性能指标神经网络运维

班晏子婧,李 晖,陈 梅,孙 武

(贵州大学 计算机科学与技术学院,贵阳 550025)

0 引 言

近年来,随着信息技术的快速发展和大数据的蓬勃兴起,人们对Web应用和网络平台的性能要求越来越高,倘若应用的响应时间超出用户所能接受的范围或者系统存在崩溃的风险,可能会造成用户放弃使用该Web应用平台的负面后果,甚至导致项目彻底失败。根据亚马逊的报告,系统延迟每增加100 ms,会导致销售额下降1%。搜索引擎、电子商务等Web应用服务出现故障问题会造成一定的经济损失,还会影响人们的日常生活,所以系统性能问题逐渐受到学界与技术界的关注和重视。如何高效、持续不断地监控和分析应用系统的运行状态,现今已经成为亟待解决的重要问题之一。

Web应用的性能好坏评价需要借助可量化的数据指标来反映,基于细粒度的评价指标数据更能准确反映具体的性能问题。所以,用于采集Web应用平台性能指标数据的监控工具显得至关重要。目前市面上常见的监控产品有企业级分布式监控系统Zabbix、阿里巴巴的Java诊断工具Arthas、监视系统运行状态和网络信息的监控系统Nagios和Apache开源的应用性能管理平台SkyWalking等。然而,大多数的性能监控平台主要是对Web应用平台进行性能数据的采集和可视化,并未能深入地挖掘和分析应用中性能指标的潜在价值和信息。同时,这些复杂又海量的监控数据和阈值设置的限制性都增加了运维人员的压力和工作量,当前监控系统常用的预警方式是通过设置固定阈值来实现,即当监控数据超过设定的阈值时,就会触发报警。但运维人员通过监控系统无法提前预测数据的未来趋势并规划资源,这样就很难在短时间内解决相应的问题。因此,对Web应用平台所使用的资源进行趋势预测即已成为热点研究内容,不仅可以深入分析性能数据中潜在的有用信息,还能帮助运维人员提前预估故障,及时采取措施,提高运维效率。

对性能指标数据进行预测是根据Web应用在过去一段时间内的数据表现预测未来一段时间内可能的发展趋势。监控系统中要处理的数据往往是具有时间特征的时间序列数据,而时间序列趋势预测就是先分析已有时间序列,根据发展方向和过程找到时间趋势规律并得出一定模式,最后用模式来预测将来的情况,例如预测网站系统的用户增长趋势和CPU使用率等。常见的时间序列趋势预测算法有神经网络算法、ARIMA自回归移动平均模型、贝叶斯模型等。Sezer等人在2018年基于二维卷积神经网络提出CNN-TA算法用于金融交易的趋势预测。Lu等人在2020年基于ARIMA时间序列算法预测锂离子电池RUL趋势。Sara等人在2021年采用贝叶斯模型预测儿童Covid-19严重程度趋势。而循环神经网络RNN是一种专门用于处理序列数据的神经网络,1997年Hochreiter等人就在RNN的基础上提出了增加记忆单元的长短期记忆神经网络LSTM,可以控制历史信息的记忆程度,相比普通的RNN能够在更长的序列中有更好的表现。Song等人在2018年使用LSTM网络模型对服务器平均CPU利用率进行多步预测,并在真实数据集中进行验证。谭宇宁等人在2019年设计了一种基于LSTM神经网络的软件老化资源预测方法,对Web服务器资源消耗进行预测。赵春生等人在2021年利用LSTM算法对服务器内存使用率、磁盘使用率和消息队列数等性能指标进行预测,实验证明预测值与真实值之间的均方根误差较小。从中可以发现,对于具有时序性特点的性能数据,LSTM神经网络在预测精度和稳定性方面上都有一定的优势。

因此,为保障Web应用的稳定运行,降低企业成本,提高运维人员的工作效率,本文设计并实现了一种面向Web应用的智能监控系统。研发后的系统具有采集应用性能指标数据以及对性能数据进行基于LSTM模型趋势预测的功能。

1 关键技术工具

由Telegraf和InfluxDB构建的运维监控平台作为可快速搭建的轻量级实时监控系统,目前已广泛用于各类市场,主要针对运维监控数据量大、实时、高效的存储需求而提出的。Telegraf和InfluxDB运维监控平台架构图如图1所示。本文选用Telegraf和InfluxDB工具实现智能监控系统的监控功能。对此拟做阐释论述如下。

图1 Telegraf和InfluxDB运维监控平台Fig.1 Telegraf and InfluxDB O&M monitoring platform

Telegraf是一个开源的数据采集工具,是InfluxData公司的时间序列平台TICK技术栈中的一部分,使用Go语言实现,主要用于从运行的系统中采集时间序列型数据指标,其中包括CPU、内存、磁盘和网络带宽等相关资源的性能数据,还可以根据需求生成相应的配置文件。同时,Telegraf提供了广泛的插件,会定时执行输入插件以采集数据,数据经过处理插件和聚合插件进行清理和聚合,继而批量转发到各种其他数据存储、服务和消息队列,包括Kafka、InfluxDB、MQTT、OpenTSDB等。Telegraf不需要自己手工编写脚本,定时采集且配置简单,可快速完成监控数据采集,并获取到多种组件的运行信息。

InfluxDB是一个开源的时间序列平台,其核心是支持与时间有关的求和、最小和最大等一系列函数的分布式时序、事件和指标数据库,专门用于处理由应用程序和基础设施生成的海量数据和无数来源的时间戳数据。InfluxDB是由Go语言编写,不需要外部依赖,设计目标是为了实现分布式和水平伸缩扩展,内置HTTP API,方便存储和检索,允许非常灵活的数据查询。并具有可度量性和可扩展性,可以实时对大量数据进行计算,同时支持任意的事件数据。

Telegraf和InfluxDB构建的轻量级性能监控平台通过实时数据采集和可视化面板提高了运维效率和水平,不仅实现了运维工作便捷化管理,同时也能够适当降低企业成本。因此,本文采用这种轻量级运维监控平台作为智能监控系统的监控部分,先使用Telegraf代理器采集被测系统的性能数据,再利用InfluxDB数据库针对采集得到的时间序列数据完成分析计算和存储等操作。

2 相关理论概述

时间序列数据是一串按时间维度索引的数据,用于描述某个或者某些随机变量随时间发展的变化趋势,通常时间间隔为1 s、1 min等恒定值。时间序列数据实际应用场景丰富,广泛用于地震预测、通信工程、数理统计及绝大多数涉及到时间数据测量的应用科学与工程学中。而时间序列预测问题的核心就是从这些数据中挖掘出其历史规律,并用其对未来的数据做出估计。时间序列分析主要是根据获取的历史数据变化趋势对未来发展进行预测,而基于对这种数据的分析方法,建立Web应用性能数据的预测模型,预测性能数据在未来一段时间内的发展情况,以便辅助应用的运维人员进行决策,同时提供数据依据。

神经网络是目前对于时间序列数据而言常用的预测方法之一。神经网络算法是由多个神经元交叉成多个网络节点、节点层相互连接构建成的一个多维度复杂网络虚拟空间,可以存储大量的形式多样化的数据信息。在传统的神经网络模型中,层与层之间是全连接的,每层之间的节点是无连接的,这种模型对时间序列数据处理十分低效。而循环神经网络(RNN)是一种专门用于处理序列数据的神经网络,比一般的神经网络要更能够处理序列变化的数据,RNN网络会对前面的信息进行记忆,保存在网络的内部状态中,并应用于当前输出的计算中,这种记忆的能力大大增强了神经网络对时间序列问题的学习和泛化输入能力。

本文采用的预测方法是长短记忆神经网络LSTM,这是一种特殊的循环神经网络,允许数据在网络中向前和向后流动。LSTM主要是为了解决RNN存在的长距离依赖问题和在长序列训练过程中会出现的梯度消失、梯度爆炸问题,相比普通的RNN能够在更长的序列中有更好的表现。LSTM模型单元结构如图2所示。

图2 LSTM单元结构Fig.2 LSTM cell architecture

LSTM在RNN的基础上增加了一个细胞状态c,细胞状态保存的是当前时刻隐藏状态信息,隐藏状态信息包含上一时刻的隐藏状态和当前时刻的临时隐藏状态。LSTM通过遗忘门、输入门和输出门三个门来控制传输状态。总地来说,遗忘门控制上一时刻的单元状态c里的信息是否保留到当前时刻细胞状态c,记为f;输入门控制细胞状态中信息的加入,记为i;输出门控制当前时刻细胞状态c中的信息是否输出为当前隐藏状态h,记为o。在时刻,LSTM模型前向计算方法可以表示为:

其中,是sigmoid激活函数,用于决定保留多少信息进入下一记忆单元;tanh是双曲正切激活函数,用于将任意值映射到[-1,1]区间;和分别为对应门限的权重系数矩阵和偏置项。

计算过程中,矩阵在最开始时随机生成,接着在传递的过程中每次都通过反向传播不断迭代,得到准确的矩阵后对前一单元的信息进行保留和更新。

由于运维监控平台采集得到的性能数据属于长时间序列,而LSTM模型是最适合利用长时间序列之间的关系来预测趋势。所以,本文在面向Web应用的智能监控系统中采用了基于LSTM的时间序列网络模型,对经过数据处理的Web应用平台性能数据进行时间序列预测,得到接下来一段时间性能数据变化趋势,为Web应用的运维工作提供参考。

3 系统设计

3.1 功能模块设计

本文系统的功能模块如图3所示。由图3可知,对系统中各组成部分模块的设计功能可逐项展开分述如下。

图3 智能监控系统功能模块Fig.3 Intelligent monitoring system functional modules

(1)用户模块。智能监控系统主要面向Web应用的开发人员、测试人员以及运维人员,不仅可以对用户信息进行管理,还可以对不同的特殊用户分配不同模块的使用权限。

(2)测试管理模块。智能监控系统管理针对被测Web应用设计并录制的Jmeter测试脚本,运维人员可以根据自身实际情况和工作环境上传和下载测试脚本,以便后期进行复用。这些测试脚本用于模拟用户使用Web应用的真实场景,产生Web应用运行的工作负载。

(3)监控存储模块。智能监控系统根据Web应用运行的性能状况采集其资源指标数据,并存储至时间序列数据库InfluxDB中,前端将通过图表形式展现结果实现数据可视化以便运维人员观察,同时为预测分析模块提供数据支撑。当需要排查故障时也可以通过数据库调取历史性能数据,但由于数据不需要保存太长时间,智能监控系统将数据保留策略设置为7天,并定期清除过期数据。

(4)预测分析模块。运维人员可以根据监控采集的核心性能指标选择时间范围内的数据,系统会调用LSTM神经网络模型进行趋势预测,每次预测使用最新60个时间点的值预测未来一个时间点的值,接着将最新预测的值作为己知值继续预测,直到成功预测未来60个时间点的值停止,并将结果通过ECharts折线图展示,运维人员可以根据预测的趋势提前做好预防措施。

3.2 系统总体架构设计

面向Web应用的智能监控系统总体架构分为4层,也就是:数据采集层、数据处理层、数据应用层和数据展示层。基本架构如图4所示。这里,将对各部分架构依次给出研究论述如下。

图4 智能监控系统架构Fig.4 Intelligent monitoring system architecture

在数据采集层中,通过Telegraf数据采集工具采集Web应用平台运行状况下服务器、网络和中间件等多个维度的性能指标数据,采集过程中可以设置刷新频率、时间显示等范围,同时本文基于JMeter测试工具和自动化脚本,模拟用户在使用Web应用平台时的运行状况,从而持续产生应用运行的工作负载。在建立对Web应用平台的测试环境时,需要考虑真实的业务需求与用户实际使用情况,从而设计多种用户访问不同的应用场景,以使测试接近真实的运行状态,为对Web应用进行性能分析获取准确的数据支撑。

在数据处理层中,通过Telegraf数据采集工具采集Web应用平台运行时的细粒度性能指标数据,再利用InfluxDB时间序列数据库进行存储,其中指标数据主要包括硬件资源开销、容器启动时间、进程数量和平均负载数值等。将所采集到的数据通过数据清洗(如空值处理和修改字段名)、数据聚集(如统计一段时间内系统资源使用情况)以及内置函数计算等方式进行数据处理。同时,本文将InfluxDB时序型数据库部署到智能监控系统的服务器上,以便接下来对性能指标数据进行可视化。

在数据应用层中,智能监控系统结合从应用服务器中采集的细粒度指标数据对Web应用平台进行综合分析,采用单层隐藏层的LSTM神经网络模型对性能数据进行趋势预测,为运维工作提供数据支撑。同时,只有监控数据对于运维工作来说还远远不够,大量多维的数据会增加运维人员的工作压力,因此还需要有报警模块来进一步做好预警处理和分析。在InfluxDB时序数据库的Monitoring/Alerting模块中根据不同的监控项设置了报警规则,当被监控的时间序列数据达到规则设定的阈值时,就会发布告警信息。在进行趋势预测分析时,如果Web应用的服务器可能出现异常情况时,智能监控系统会通过弹框方式对运维人员进行提醒,真正让整个运维监控工作实现了智能化。

在数据展示层中,智能监控系统先通过InfluxDB数据库中提供的Dashboard编辑工具展示Telegraf采集的监控数据,通过图表形式将综合分析的性能数据和可能存在的异常数据(如硬件资源居高不下的情况)展示到系统前端。同时,对于趋势预测分析后的结果,系统利用ECharts可视化工具将最新60个时间点和预测后60个时间点的数据以折线图方式报告给运维人员。通过数据可视化,运维人员能够方便快速了解到Web应用平台整体的性能状况,为运维人员后期排查性能瓶颈和决策性能问题提供了相应的数据支持,减少运维时间,提高工作效率,还能协助开发人员对Web应用平台进行更新优化,方便观察性能变化趋势。

4 系统实现

4.1 开发环境介绍

面向Web应用的智能监控系统后台开发构建选择的是Java语言和Spring boot框架,前端使用Vue.js框架和Element UI搭建,前后端使用的集成开发环境分别为WebStorm和IntelliJ IDEA。

4.2 性能数据监控采集

本文搭建了某Web应用作为测试系统,该应用基于Java开发,可直接在应用页面进行数据集成、可视化分析和数据挖掘等数据分析操作,并新增了500个用户专门用于测试。首先使用压力测试工具Jmeter录制并运行相应的操作脚本,模拟500个用户在应用平台上进行实验操作,以产生应用负载。其次部署了Telegraf数据采集工具和InfluxDB时序数据库作为智能监控系统的监控模块,利用采集工具获取Web应用运行时的性能数据,同时根据本文系统的需求修改Telegraf中相应配置文件,比如将写入间隔设置为10 s。Telegraf代理器启动后会定时执行输入插件收集各种时间序列型数据,接着数据经过处理插件和聚合插件,这里的处理插件是对收集到的数据流进行简单的处理,例如给所有指标去重、重命名、格式转换等。聚合插件是对一段时间内流经该插件的指标数据流进行处理和平均值计算。最后,经过输出插件将处理后的批量数据输出到数据存储系统InfluxDB中。

InfluxDB的数据模型与关系型数据库不同,Measurement是存储数据的容器,包含了时间戳列Timestamp、维度列Tags和数值列Fields,类似于关系型数据库中表的概念。图5为InfluxDB数据模型的示例。分析图5可知,该数据集记录了Web应用服务器CPU的使用情况。其中,容器Measurement的名称为“cpu”,维度列Tags由服务器的CPU编号、即cpu列和主机名host列组成,数值列Fields由IO等待使用CPU占比time_iowait列、用户使用CPU占比time_system列、系统使用CPU占比time_user列等构成,其内容为各项指标的数据值,time为时间戳列。

图5 InfluxDB数据模型Fig.5 FluxDB data model

采集的细粒度性能指标数据维度为86,其中包括CPU类指标7个,比如用户用量百分比、系统用量百分比、软中断时间占比等;内存类指标20个,比如活跃使用的内存总数、已用内存数、文件buffer内存数等;磁盘类指标41个,比如磁盘用量、使用的inode数量、运行中的每秒IO数据量、磁盘读取总用时等;系统负载类指标3个,比如1 min平均load值、5 min平均load值等;进程类指标4个,比如回收中的进程数、暂停状态进程数等;以及网络类指标11个,比如网卡收丢包数量、网卡发包错误数量等。以性能数据中CPU类指标为例的数据见表1。

表1 CPU类型性能指标数据信息Tab.1 CPU type performance indicators data information

4.3 性能数据趋势预测

鉴于采集到智能监控系统数据库中的性能指标数据具有时序性的特点,本文通过使用LSTM神经网络模型对其未来发展趋势进行时间序列预测。在系统实现过程中,使用Tensorflow的Java版本API接口实现Java调用LSTM神经网络模型,先将Tensorflow的jar包导入Maven项目的POM文件中,在项目中放入模型文件后创建MilkPowderUtils接口类和静态模型调用方法,并使用SaveModelBundle类完成Java程序和模型文件之间的连接。以预测过程为参数,实例化输出类,同时将创建的形参传入、且转换为Tensor类型,赋值给Tensor对象_。接着,调用模型会话对象和输入数据,计算预测结果,再将其处理后作为方法返回值。Java程序查询数据库中要预测的数据,在标准化处理和封装后,就会调用静态模型方法,传递封装的数据,得到相应的预测值,最后使用ECharts可视化反标准化后的预测结果。

4.4 性能数据可视化

图6是面向Web应用的智能监控系统中性能指标数据的可视化界面。首页将采集的核心性能指标进行展示,运维人员可以继续通过需求在侧方导航栏内选择想要查看的相应类型的资源指标性能数据,比如CPU类型、内存类型、磁盘类型等,系统会根据用户的选择展示该类型下的细粒度性能数据。

图6 智能监控系统首页Fig.6 Homepage of the intelligent monitoring system

同时,对于需要进行趋势预测的性能指标,运维人员可以通过点击界面按钮开启预测分析,智能监控系统会调用LSTM模型对选择的性能指标项进行预测,根据最新60个时间点的值来预测未来60个时间点的数值趋势,性能指标数据趋势预测结果如图7所示。

图7 智能监控系统预测结果Fig.7 Intelligent monitoring system prediction results

5 结束语

目前,在Web应用发展复杂的大环境下,本文设计并实现了一种不仅能够监控Web应用性能指标数据,同时还可以对性能数据进行基于LSTM模型趋势预测的智能监控系统,以便运维人员随时监测Web应用的整体性能情况和运行状况,在出现问题和故障时也能够通过监控系统辅助排查,而利用神经网络根据历史的性能数据预测出未来趋势,更利于提前做好准备工作和预防措施。在未来研究和开发的过程中,还需要更进一步地提高监控指标数据的精确度和预测网络模型的准确率。

猜你喜欢

性能指标神经网络运维
基于人工智能LSTM循环神经网络的学习成绩预测
基于图像处理与卷积神经网络的零件识别
MIV-PSO-BP神经网络用户热负荷预测
基于GPS的电力运维轨迹定位系统
IT运维管理系统的设计及应用
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
自动控制系统的优劣评价分析
基于Ganglia和Nagios的云计算平台智能监控系统
电子政务甲方运维管理的全生命周期