应用系统负载分析与磁盘容量预测

本文介绍了如何利用时间序列分析法,特别是ARIMA模型,预测应用系统服务器磁盘已使用空间。通过对历史磁盘数据进行平稳性检验、差分处理、模型识别和预测,构建了容量预测模型,最终通过模型评价确认预测效果良好。
摘要由CSDN通过智能技术生成

完整代码和分析

实验介绍

实验背景

大型企业都会有自己的办公自动化系统,应用系统在日常运行时,会对底层软、硬件造成负荷,显著影响应用系统性能。底层任何一种资源负载过大,都可能会引起应用系统性能下降甚至瘫痪。因此需要关注服务器、数据库、中间件和存储设备的运行状态,及时了解当前应用系统的负载情况,以便提前预防,确保系统安全稳定运行。

实验目的

  • 针对历史磁盘数据,采用时间序列分析方法,预测应用系统服务器磁盘已使用空间大小。

  • 根据用户需求设置不同的预警等级,将预测值与容量值进行比较,对其结果进行预警判断,为系统管理员提供定制化的预警提示。

分析方法与过程

由于存储空间随时间变化存在很强的关联性,且历史数据对未来的发展存在一定的影响。故本实验采用时间序列分析法对磁盘已使用空间进行预测分析。

模型介绍

本次实验我们将使用时间序列分析法来数据进行构造。
首先来认识一下ARIMA模型。ARIMA,差分自回归滑动平均模型,又称求合自回归滑动平均模型。是时间序列预测分析方法之一。
ARIMA(p,d,q)中,AR是“自回归”,p为自回归项数;MA是“滑动平均”,q为滑动平均项数,d是使之成为平稳序列所做的差分次数(阶数)。

ARIMA模型运用的流程:
- 根据时间序列的散点图、自相关函数和偏自相关函数图识别其平稳性。
- 对非平稳的时间序列数据进行平稳化处理。直到处理后的自相关函数和偏自相关函数的数值非显著非零。
- 根据所识别出来的特征建立相应的时间序列模型。平稳化处理后,若偏自相关函数是截尾的,而自相关函数是拖尾的,则建立AR模型;若偏自相关函数是拖尾的,而自相关函数是截尾的,则建立MA模型;若偏自相关函数和自相关函数均是拖尾的,则序列适合ARMA模型。
- 利用已通过检验的模型进行预测。

那么,如何识别时间序列的平稳性?

平稳性检验

识别序列是否平稳,一般有三种方法:看图法、自相关系数和偏相关系数、单位根检验(ADF)。

我们先来简单介绍一下看图法:

看图法
在这里插入图片描述

这里的“图”指的是时序图,即某指随时间变化的时序图。平稳序列的图a是围绕一个常数上下波动。而不平稳的图b,则是用明显的增长或减少的趋势。

自相关系数和偏相关系数

这里会涉及到两个定义——截尾和拖尾。

微信截图_20181003171718.png

平稳序列的自相关图和偏相关图要么都是拖尾要么都是截尾。截尾就是在某阶之后,系数都为 0 ,怎么理解呢,看上面偏相关的图,当阶数为 1 的时候,系数值还是很大, 0.914. 二阶长的时候突然就变成了 0.050. 后面的值都很小,认为是趋于 0 ,这种状况就是截尾。再就是拖尾,拖尾就是有一个衰减的趋势,但是不都为 0 。自相关图既不是拖尾也不是截尾。以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形。

c. 单位根检验(ADF)
若单位根检验p值小于0.05则认为是平稳的。

对于不平稳的序列又该如何处理呢?
2. 差分处理
差分即取相邻项值差替代当前值,以此来消除一些波动,使数据趋于平稳。

数据抽取

为了抽取出磁盘数据,以属性的标识号(TARGET_ID)与采集指标的时间(COLLECTTIME)为条件,对性能数据进行抽取。本实验抽取2014-10-1至2014-11-16财务管理系统中某一台数据库服务器的磁盘的相关数据。
在这里插入图片描述

数据探索分析

本实验采用时序分析法来进行建模。为了建模的需要,需要探索数据的平稳性。

通过时序图可以初步发现数据的平稳性。针对服务器磁盘的使用大小,以天为单位,进行周期性分析。

新建文件,添加如下代码:

import pandas as pd

dataPath = './data/discdata.xls'
data = pd.read_excel(dataPath,encoding='utf-8')

#绘制C、D盘的使用情况时序图
import matplotlib.pyplot as plt
import matplotlib

#配置matplotlib参数
#坐标轴字体
matplotlib.rc('font', **{
    'family': 'serif', 'serif': ['SimHei']})
#plt.rcParams['front.sans-serif'] = ['SimHei']
#坐标轴负号
#plt.rcParams['axes.unicode-minus'] = False

pd.to_datetime(data['COLLECTTIME'])
data1 = data[(data['ENTITY'] == 'C:\\') & (data['TARGET_ID'] == 184)]
#设置dataframe索引,修改dataframe,不创建新对象
data1.set_index('COLLECTTIME',inplace = True)

data2 = data[(data['ENTITY'] == 'D:\\') & (data['TARGET_ID'] == 184)]
data2.set_index('COLLECTTIME',inplace = True)

print(data.head())
print(data1.head())
print(data2.head())

运行后,可以看到我们将在这些数据上进行可视化操作:

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
时间序列分析是一种常用的应用系统负载分析磁盘容量预测的方法。其基本原理是根据历史数据的趋势和周期性来预测未来的负载磁盘容量需求。下面给出一个程序实现的示例。 1. 数据采集 首先需要采集应用系统负载数据和磁盘容量数据。可以通过系统监控工具(如Zabbix、Nagios)或自行开发的数据采集程序来实现。采集的数据包括: - 时间戳(Unix时间戳或其他格式) - 应用系统负载数据(如CPU使用率、内存使用率、网络流量等) - 磁盘容量数据(如磁盘使用率、可用磁盘空间等) 2. 数据预处理 采集到的原始数据需要进行预处理,以便后续分析预测。预处理的主要步骤包括: - 数据清洗:去除异常值和缺失值。 - 数据平滑:通过滑动平均或指数平滑等方法,平滑数据的波动,减少随机噪声的影响。 - 数据转换:将非平稳的时间序列数据转换为平稳的时间序列数据,以便进行统计分析。常用的转换方法包括差分、对数转换等。 3. 时间序列分析 在预处理后的数据基础上,可以进行时间序列分析,包括: - 时间序列模型选择:根据数据的自相关性和偏自相关性等指标,选择适合的时间序列模型,如ARIMA、SARIMA、VAR等。 - 参数估计:拟合时间序列模型的参数,以最小化预测误差。 - 模型检验:通过残差分析等方法,检验拟合的时间序列模型是否符合数据的统计特征。 - 预测:利用拟合的时间序列模型,预测未来的负载磁盘容量需求。 4. 结果展示 最后,将预测结果展示出来,以便管理人员做出相应的决策。展示的内容包括: - 预测曲线:用图表展示预测负载磁盘容量需求曲线,以便比较历史数据和预测数据的趋势和周期性。 - 预测误差:用统计指标(如均方根误差、平均绝对误差等)评估预测结果的准确性,以便评估模型的优劣。 - 预测报告:用文字描述预测结果和建议管理人员采取的措施,以便指导实际应用。 综上,应用系统负载分析磁盘容量预测是一项复杂的工作,需要采集、预处理、分析和展示数据。利用时间序列分析方法,可以有效地预测未来的负载磁盘容量需求,为管理人员提供决策依据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值