4 TimescaleDB 配置

概述

Zabbix支持时序数据库TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可将数据自动划分为基于时间的块,以支持更快的大规模性能。

目前时序数据库不支持Zabbix proxy。

本页上的说明可用于创建TimescaleDB数据库或从现有PostgreSQL表迁移到TimescaleDB。

配置

我们假设TimescaleDB扩展项已经安装在数据库服务器上(查看 安装说明)。

还必须通过执行以下命令为特定的数据库启用TimescaleDB扩展项:

  1. echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

运行此命令需要数据库管理员权限。

如果你使用的数据库schema不是 ‘public’ 模式则需要通过以上命令添加SCHEMA子句,例如:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

然后运行位于database/postgresql中的timescaledb.sql脚本。对于新的安装,必须在使用初始schema/data创建常规PostgreSQL数据库之后再运行脚本。(查看 数据库创建):

  1. cat timescaledb.sql | sudo -u zabbix psql zabbix

现有历史记录和趋势数据的迁移可能需要很多时间。在迁移期间。Zabbix Server和前端必须关闭。

timescaledb.sql脚本设置以下内置数据管理housekeeping 参数:

  • 覆盖监控项趋势周期Override item history period

  • 覆盖监控项历史周期Override item trend period

为了将用于历史和趋势的内置数据管理进行分区,这两个选项都必须启用。可以将TimescaleDB分区仅用于趋势(通过设置覆盖监控项趋势周期Override item trend period)或仅用于历史记录(覆盖监控项历史周期Override item history period)。

对于PostgreSQL 10.2版以及TimescaleDB 1.5版或更高版本,timescaledb.sql 脚本设置了两个附加参数:

  • 启用压缩

  • 压缩七天以上的记录

所有这些参数都可以于安装之后在 AdministrationGeneralHousekeeping 进行修改。

您可能需要运行TimescaleDB提供的timescaledb-tune工具对postgresql.conf中的PostgreSQL配置参数进行优化。

时序数据库压缩

从Zabbix 5.0开始,原生数据库压缩已在PostgreSQL 10.2版以及 TimescaleDB 1.5版或更高版本的时序数据库所管理的全部Zabbix表中得到支持。 在升级或迁移到时序数据库的过程中,大型表的初始压缩可能需要很多时间。

推荐用户在使用压缩之前熟悉 TimescaleDB 压缩说明文档。

注意, 压缩是有一定限制的, 确切地说:

  • 压缩块的编辑 (插入,删除,更新) 是不支持的

  • 压缩表的架构更改是不支持的

压缩设置可以在位于Zabbix前端 AdministrationGeneralHousekeeping 中的 History and trends compression 项中修改。

参数默认注释
Enable compressionEnabled选中或取消选中该复选框不会立即激活/禁用压缩。由于压缩是由内置数据管理机制Housekeeper处理的,因此更改最多将在2倍HousekeepingFrequency时间后生效 (zabbix_server.conf中设置)

禁用压缩后,属于压缩周期的新块将不被压缩。但是,所有先前压缩的数据将保持压缩状态。要解压缩以前压缩的块,请遵循TimescaleDB 文档中的说明。

从具有TimescaleDB支持的旧版Zabbix升级时,默认情况下不会启用压缩。
Compress records older than7d此参数不能少于7天。

由于压缩块的不可变性,所有早于此值的后期数据(例如,代理延迟的数据)将被丢弃。