4 TimescaleDB 配置
概述
Zabbix支持时序数据库TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可将数据自动划分为基于时间的块,以支持更快的大规模性能。
目前时序数据库不支持Zabbix proxy。
本页上的说明可用于创建TimescaleDB数据库或从现有PostgreSQL表迁移到TimescaleDB。
配置
我们假设TimescaleDB扩展项已经安装在数据库服务器上(查看 安装说明)。
还必须通过执行以下命令为特定的数据库启用TimescaleDB扩展项:
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数据库之后再运行脚本。(查看 数据库创建):
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
脚本设置了两个附加参数:
启用压缩
压缩七天以上的记录
所有这些参数都可以于安装之后在 Administration → General → Housekeeping 进行修改。
您可能需要运行TimescaleDB提供的timescaledb-tune工具对postgresql.conf
中的PostgreSQL配置参数进行优化。
时序数据库压缩
从Zabbix 5.0开始,原生数据库压缩已在PostgreSQL 10.2版以及 TimescaleDB 1.5版或更高版本的时序数据库所管理的全部Zabbix表中得到支持。 在升级或迁移到时序数据库的过程中,大型表的初始压缩可能需要很多时间。
推荐用户在使用压缩之前熟悉 TimescaleDB 压缩说明文档。
注意, 压缩是有一定限制的, 确切地说:
压缩块的编辑 (插入,删除,更新) 是不支持的
压缩表的架构更改是不支持的
压缩设置可以在位于Zabbix前端 Administration → General → Housekeeping 中的 History and trends compression 项中修改。
参数 | 默认 | 注释 |
---|---|---|
Enable compression | Enabled | 选中或取消选中该复选框不会立即激活/禁用压缩。由于压缩是由内置数据管理机制Housekeeper处理的,因此更改最多将在2倍HousekeepingFrequency 时间后生效 (zabbix_server.conf中设置)禁用压缩后,属于压缩周期的新块将不被压缩。但是,所有先前压缩的数据将保持压缩状态。要解压缩以前压缩的块,请遵循TimescaleDB 文档中的说明。 从具有TimescaleDB支持的旧版Zabbix升级时,默认情况下不会启用压缩。 |
Compress records older than | 7d | 此参数不能少于7天。 由于压缩块的不可变性,所有早于此值的后期数据(例如,代理延迟的数据)将被丢弃。 |