2022 Zabbix中国峰会
2022 Zabbix中国峰会

4 历史数据与趋势数据

概述

历史数据(history)和趋势数据(trends)是Zabbix中存储收集到的数据的两种方式。

历史数据:每一个收集到的监控数据
趋势数据:按小时统计计算的平均值数据

历史数据的留存

通过设置历史数据保留时长,可以指定历史数据留存的时长。
在以下位置,你可以找到相关的输入框:

任何过旧的历史数据会被管家从数据库中删除。

一般来讲,强烈建议将历史数据保留时长设置得尽可能的小。这么做可以让数据库不会因存储了大量的历史数据,导致超负荷运行。

可以选择长时间的保留趋势数据,来替代长期需要的历史数据。例如:设置成保留14天历史数据和5年的趋势数据。

参考数据库空间大小页,来了解历史数据和趋势数据各自需要的数据库空间。

当设置了较短的历史数据保留时间,图形会使用趋势数据值显示旧数据,因此依旧可以通过图形查看旧数据。

<note important>如果历史数据保留时长被设置为“0”,那么该监控项将仅可用于更新资产记录。由于触发器触发基于历史数据,因此不会有触发器的功能。 :::

<note tip>作为保存历史数据的替代方法,考虑使用可加载模块“导出历史数据”功能

:::

趋势数据的留存

趋势数据是一种内建的历史数据压缩机制,可以用来存储数字类型监控项的每小时的最小值、最大值、平均值和记录数量。

通过设置趋势存储时间,可以指定趋势数据留存的时长。
在以下位置,你可以找到相关的输入框:

通常趋势数据设置的的留存时间应当比历史数据留存时间设置的长。任何过旧的趋势数据会被管家从数据库删除。

随着数据的流入,Zabbix服务器会在运行时在趋势缓存中累积趋势数据。在以下情况下,服务器会将趋势刷新到数据库中(前端可以在其中找到它们):

  • 一个新的小时开始或者服务端收到该监控项的新值
  • 一个新的小时将在不到5分钟内结束(没有新值)
  • 服务器停止

要在图表上查看趋势,您需要至少等到下一小时的开始(如果监控项经常更新),最多等到下一小时的结束(如果监控项很少更新),最多需要2个小时。
当服务器刷新趋势缓存并且该小时数据库中已经有趋势数据时(例如,服务器已在半小时中重启),服务器需要使用更新语句而不是简单的插入。因此,在更大的初始化安装上,如果需要重新启动,最好在一小时结束时停止服务器,在下一小时开始时启动,以避免趋势数据重叠。
历史表不以任何方式参与趋势生成。

如果趋势存储时间被设置为“0”,Zabbix server将不再计算或存储该监控项的趋势数据

趋势数据的计算和存储将会使用与原值相同的数据类型。
无符号数字(unsigned Numeric)数据类型的值,平均值计算的结果小数点后会被舍去,所以记录值之间的间隔越小,计算结果结果将会精确度越低。举个例子:如果监控项的得到了得到了两个值,分别是“0”和“1”,那么平均值的计算结果将会是“0”,而不是“0.5”。

此外,重启服务器可能会导致当前小时无符号数字类型的数据,平均值计算的精度损失。