前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Z讲堂】Zabbix4.0之趋势预测

【Z讲堂】Zabbix4.0之趋势预测

作者头像
Zabbix
发布2021-02-03 14:44:50
1.1K0
发布2021-02-03 14:44:50
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方
【Z讲堂】Zabbix 趋势预测

作者:

Dmitry Lambert

Zabbix培训师

监控不一定是指过去和现在。利用Zabbix的趋势预测功能,即可分析已收集的数据,并预测未来值。这样,就有可能在问题发生之前得到通知。

简介

今天的话题是:Zabbix内部的趋势预测

我安装的版本是Zabbix 4.0.2,且已启动并运行了虚拟机。我们在完成这个任务时无需使用SSH或Linux CLI,因此也不需要任何有关Linux的知识。我们将要配置的所有内容都会在Zabbix前端完成。

关于Zabbix趋势预测

那么,什么是趋势预测?

一般而言,当我们谈论监控时,我们指的是监控软件内部的实时数据。我们从主机和数据源中提取数据,并动态评估该数据。如果该数据达到了我们指定的触发阈值,我们就会收到通知。因此基本上,我们会在问题发生后,或至少在问题发生的前一刻作出反应。

但有了趋势预测,我们便能作出前瞻性反应。我们不会在事情发生后才收到通知,而是在触发指定阈值之前,被告知还有一周的时间,或被告知一周后的预测值是什么。你可以决定是否要在问题发生之前立即采取行动,或者再等几天。

下面,让我们首先思考一下我们究竟可以预测什么。Zabbix内部的函数可以预测一个值,并预测我们在达到指定值之前的剩余时间。

但这就意味着我们可以预测一切吗?答案当然是否定的。

你可以通过配置使Zabbix预测明天的股票价格、天气或温度,但在99%的情况下,预测并不准确。

利用我们所拥有的东西还不足以预测未来值。我们可以预测一周或一个月后的CPU负载吗?我们可以试着配置,但并不会得到精确的测度,因为CPU负载实际上并不属于可预测的测度。它取决于系统中可能会发生的许多事情。

有关预测的一个例子:磁盘空间。

对系统中的磁盘空间进行监控是非常普遍的,而且还能指定触发器,比如在磁盘空间降到2%以下的时候,该触发器将向你发送通知。

但糟糕的是,你收到的信息是——主机1中的C盘空间已低于2%。问题已经发生,但你没有时间思考或搜集信息而且需要尽快对其进行修复。

但是,你可以配置趋势预测。这样一来,你再也不会收到“你好,磁盘空间现已低于2%”的通知,而是被告知:“你好,根据Zabbix的预测,主机的磁盘空间将在一周后降至2%以下”。

那么你将有七天的时间来解决这一问题,你完全可以在其发生之前登录系统,清理临时文件,增加磁盘空间,最终解决问题。

触发器函数

那么我们怎样才能做到呢?仅需两个触发器函数即可——timeleft与forecast。

注:可查阅Zabbix文档中的触发器函数页。

Timeleft函数

该函数将预测并告知你在达到指定值之前还有多少时间。

此例将在剩余时间低于一个小时的时候提出问题,直到文件系统达到200兆字节的阈值。此外,它还将考虑一天的历史数据。

这些参数均可更改。触发器的常见句法如下所示:

其中,参数sec和#num分别代表时间周期和值的数量。我们可以将一天的历史数据更改为七天的历史数据,如例所示。

第二个参数是time_shift,可在时间上使评估点后移。参数time_shift是指,我们可以提前,比如说提前一天获取一样的七天历史数据。基本上,我们会忽略今天的数据。这是一个可选参数(非强制性参数被放在括号内)。

参数fit旨在分析数据、作出预测。也属于可选参数。默认值为‘linear’,这取决于配置预测所依据的数据行为。如果您不知道为什么要在linear、polynomial,、exponential、power和其他值之间作出选择,那就不管它,使其保持默认状态即可。

Forecast函数

该触发器函数具有相同的参数,即(sec/#num, time_shift, time, fit and mode)。同样,我们可以忽略其中的大部分内容。句法如下所示:

在此例中,我们将利用7天的历史数据,并提前7天进行预测。因此,如果Zabbix预测你的磁盘空间将在一周后降至100兆字节以下,那么触发器将触发。

同样地,你也可以更改这些参数。假设我将利用14天的历史数据来预测明天可能发生的事情。触发器表达式的相关部分如下所示:

数据评估期

让我们来想想您在更改数据评估期时都发生了什么。评估期越长,技术预测就越准确。但同时,其对快速变化的反应就会越慢。

假设,我们要对14天进行评估。在13天内,CPU负载一直保持在0.5到0.8之间。但在最后一天,CPU负载为5-8。预测结果将比7天低很多,其中,6天内的CPU负载为0.5-0.8,但在最后一天是5-8。

最好采用较长的时间周期,但要注意的是——长周期的反应速度比短周期的慢。

预测可视化

如果您想查看图表,可利用计算项使Zabbix预测实现可视化。

我已在前端拥有Zabbix服务器主机,我将以此来展示如何实现预测的可视化。此外,我将使用system.cpu.load项,因为其测度变化比较快。

处理器负载

CPU负载项目图

我需要在Zabbix服务器主机中创建一个新项,因此我将进行以下程序:Configuration(配置) > Hosts(主机) > Items(项目) > Create Item(创建项目)。

项目参数:Name(姓名)——‘Forecast’(预测),Type(类型)——‘Calculated’(计算)(强制性的),Key(密钥)——只要遵循密钥句法即可,Type of information(信息类型)——‘Numeric (float)’(数值型(浮点型)),以及Update interval(更新间隔)——5 seconds(5秒)(把更新间隔设置得短一些)。

你需要在公式中输入:

表达式必须具有我们要预测的项目键。对我们来说,即system.cpu.load[percpu,avg1]。此外,我们还指定了30分钟的历史值,并预测30分钟后的值。

配置项

之后单击Add。

此时,我们通过最新数据查看对forecast项的预测。正如你所看到的,根据Zabbix的预测,30分钟后的CPU负载为0.23

显然,CPU负载不能是负值。为什么会这样呢?因为,首先,我们使用的评估时间非常短——仅有30分钟。其次,但也是最重要的,CPU负载实际上是不可预测的。

我们可以从图中看出来。

Forecast图

此处的重点是,这是30分钟后的预测,但现在就已显示出来了。我们并不认为图中所示为未来趋势,相反,其显示的是当前时刻。这是Zabbix趋势预测目前面临的局限性,即在默认情况下不可能看到未来值。

如果您想看,那您可以创建一个新的计算项。我们称之为‘Last value’(最后值)。我们将使用之前创建的公式:

Key(密钥)为‘last’(最后),Type of information(信息类型)为‘Numeric (float)’(数值型(浮点型)),Update interval(更新间隔)为30秒。第一个值将在30分钟后出现。单击Add(添加)。

配置项

如果我想立即查看项目,我将收到“无法评估函数”的通知。

显然,由于公式中的指定值,该项目不受支持。但是,如果我在30分钟后查看,该项目将显示实际预测。

根据这些说明来实现这三个项目的可视化——Forecast、Last item和system.cpu.load——因此你可以比较一下Zabbix的预测有多精准。

结论

自Zabbix 3.0开始就可实现趋势预测,但我不敢说它很受欢迎。因为很多Zabbix用户根本就不使用趋势预测。他们也许并不知道如何使用趋势预测,或者他们没有看到趋势预测的优点,但趋势预测确实是存在的。

因此,去学学吧。读取文档,配置测试项,让其运行一天或一周后,看看他们是如何工作的。

加入Zabbix中国峰会

学习前沿的监控技术

聆听多元的行业案例

解决使用疑点难点

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档