4 历史数据与趋势数据
概述
历史数据和趋势数据是在 Zabbix 中存储已采集数据的两种方式。
历史数据会保存每一个采集到的值,而趋势数据则按小时保存平均信息,因此占用的资源更少。
保留历史数据
您可以设置历史数据保留多少天:
任何更早的数据都会被 housekeeper 删除。
通常强烈建议将历史数据保留天数设置为尽可能少,以避免大量历史值给数据库带来过重负载。
与其保留较长时间的历史数据,不如将趋势数据保留更长时间。
例如,您可以将历史数据保留 14 天,而将趋势数据保留 5 年。
要了解历史数据与趋势数据分别需要多少存储空间,可以参考数据库容量规划页面。
即使历史数据保留时间较短,您仍然可以在图形中查看较早的数据,因为图形在显示较早数据时会使用趋势值。
如果历史数据设置为“0”,则该监控项只会更新依赖监控项和清单。 不会评估任何触发器函数,因为触发器评估仅基于历史数据。
作为保留历史数据的另一种方式,可以考虑使用可加载模块的历史数据导出功能。
保留趋势数据
趋势数据是一种内置的历史数据缩减机制,它会针对数值型数据,每小时存储最小值、最大值、平均值以及值的总数量。
您可以设置趋势数据保留多少天:
- 在监控项属性表单中
- 在批量更新监控项时
- 在设置 Housekeeper 任务时
趋势数据通常可以比历史数据保留更长时间。
任何更早的数据都会被 housekeeper 删除。
随着数据不断流入,Zabbix 服务器会在运行时于趋势缓存中累积趋势数据。
服务器会在以下情况下将每个监控项的前一小时趋势数据刷新到数据库中(前端可从中读取):
- 服务器接收到该监控项当前小时的第一个值
- 当前小时剩余 5 分钟或更少,且该监控项仍然没有当前小时的值
- 服务器停止
要在图形中查看趋势数据,您至少需要等到下一个小时开始时(如果监控项更新频繁),最多需要等到下一个小时结束时(如果监控项更新较少),也就是说最长需要等待 2 小时。
当服务器刷新趋势缓存时,如果数据库中已经存在该小时的趋势数据(例如服务器在该小时中途重启过),服务器就需要使用 update 语句而不是简单的 insert。
因此,在较大的安装环境中,如果需要重启,建议在某个小时结束时停止服务器,并在下一个小时开始时启动,以避免趋势数据重叠。
历史表不会以任何方式参与趋势数据的生成。
如果趋势数据设置为“0”,Zabbix 服务器将完全不会计算或存储趋势数据。
趋势数据会使用与原始值相同的数据类型进行计算和存储。
因此,无符号数据类型值的平均值计算结果会被取整,而且值区间越小,结果就越不精确。
例如,如果监控项的值为 0 和 1,则平均值将为 0,而不是 0.5。
此外,重启服务器还可能导致当前小时内无符号数据类型平均值计算的精度损失。