4 历史数据与趋势

概述

历史数据和趋势数据是Zabbix中存储采集数据的两种方式。

历史数据保存每一次采集到的数值,而趋势数据则保存每小时的平均信息,因此对资源的消耗较低。

保留历史数据

您可以设置历史数据保留的天数:

  • 在 监控项 属性中 form
  • 在批量更新 监控项 时
  • setting up 清理任务时

更早的数据将由清理任务删除。

通常强烈建议将历史数据保留天数设置为尽可能小的数值,以避免数据库因存储大量历史值而过载。

与其保留较长时间的历史数据,不如保留更长时间的趋势数据。 例如,您可以将历史数据保留 14 天,而趋势数据保留 5 年。

您可以通过参考 数据库大小,get 了解历史数据与趋势数据各自所需空间的大致比例。

在保留较短历史数据的同时,您仍然可以在图形中查看更早的数据,因为图形在显示较早数据时会使用趋势值。

如果历史数据设置为 '0',则 监控项 将 update 仅保留依赖的 监控项 和资产清单数据。不会评估触发器功能,因为触发器评估仅基于历史数据。

作为保留历史数据的另一种方式, 可以考虑使用加载模块的 提供历史数据导出回调函数 功能。

保留趋势数据

趋势功能是内置的历史数据压缩机制,它会为数值型数据存储每小时的最小值、最大值、平均值以及数值总数。

您可以通过以下方式设置趋势数据的保留天数: - 在监控项属性中form - 批量更新监控项时 - 配置Housekeeper任务时

趋势数据通常可比历史数据保留更长时间。所有过期数据将由管家进程清理。

Zabbix server在运行时将趋势数据暂存于trend cache中,随着数据流实时更新。服务器在以下情况会将上一小时的每个监控项趋势数据写入数据库(供前端调用): - 服务器收到该监控项的当前小时首个数值时 - 当前小时剩余5分钟或更少时间且仍未收到该监控项的当前小时数值时 - 服务器停止运行时

要查看图表中的趋势数据,您至少需要等待至下一小时开始(若监控项更新频繁),最多等待至下一小时结束(若监控项更新稀少),最长等待时间为2小时。

当服务器刷新trend cache时,若数据库中已存在该小时段的趋势数据(例如服务器在小时中段重启过),则需使用update语句替代简单插入操作。因此在大规模部署环境中如需重启,建议在整点时刻停止服务,并在下一小时开始时重启,以避免趋势数据重叠。

历史数据表不参与趋势生成的任何环节。

若趋势设置为'0',Zabbix server将完全不会计算或存储趋势数据。

趋势数据采用与原始值相同的数据类型进行计算和存储。因此无符号数据类型的平均值计算会进行取整处理,且数值区间越小结果精度越低。例如当监控项的值为0和1时,平均值将显示为0而非0.5.。

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