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