4 历史数据与趋势数据

概述

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

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

历史数据的留存

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

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

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

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

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

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

如果历史数据保留时长被设置为“0”,只有相关项目和资产记录会被更新。不会计算触发器函数,因为触发器计算是基于历史数据的。

作为保存历史数据的替代方法,考虑使用可加载模块 导出历史数据 功能。

趋势数据的留存

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

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

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

Zabbix server在运行时会在趋势缓存中积累趋势数据,因为有数据流入。 在这些情况下,Zabbix Server会将每个监控项的前一个小时趋势数据写入数据库(在前端可以看到):

  • 服务器接收到监控项首个当前一小时的值
  • 在还差5分钟或更少时间达到一小时,仍然没有该监控项当前一小时的值
  • 服务器停止

要查看图表上的趋势,你需要至少等待到下一个小时的开始(如果监控项经常更新),最多等待到下一个小时的结束(如果监控项很少更新),最多2个小时。

当服务器刷新趋势缓存时,如果数据库中已经有这一小时的趋势(例如,服务器在这一小时中已经重新启动),服务器需要使用更新语句,而不是简单的插入。 因此,在大型环境的安装中,如果需要重新启动,最好在一个小时结束时停止服务器,在下一个小时开始时开始,以避免趋势数据重叠。

趋势数据生成和历史表没有关系。

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

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

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