Zabbix支持TimescaleDB,这是一种基于PostgreSQL的数据库解决方案 将数据自动分区为基于时间的块以支持更快的 大规模性能
目前Zabbix不支持TimescaleDB proxy.
本页指南可用于创建TimescaleDB数据库 用于从现有的PostgreSQL表迁移到TimescaleDB。
我们假设TimescaleDB扩展已安装在数据库服务器上 (安装说明请参阅TimescaleDB documentation)。
还需要通过执行以下命令为特定数据库启用TimescaleDB扩展:
运行此命令需要数据库管理员权限。
如果使用非'public'的数据库模式 需要在上述命令中添加SCHEMA子句。例如:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
然后run postgresql/timescaledb.sql
脚本。 对于新安装,必须在创建具有初始模式/数据的常规 PostgreSQL数据库后run此脚本(参见 database creation):
请忽略在TimescaleDB version 2.9.0及更高版本上运行 timescaledb.sql
脚本时提示未遵循最佳实践配置的警告信息。 尽管有此警告,配置仍将成功完成。
现有历史和趋势数据的迁移可能需要很长时间。 在此期间Zabbix server和前端必须停止运行。
timescaledb.sql
脚本设置以下管家参数:
要为历史和趋势使用分区管家功能, 必须同时启用这两个选项。也可以单独启用 仅历史或仅趋势的覆盖。
对于PostgreSQL version 10.2或更高版本以及TimescaleDB version 1.5或 更高版本,timescaledb.sql
脚本设置两个额外参数:
要成功通过管家服务移除压缩数据,必须同时启用覆盖监控项历史周期和覆盖监控项趋势周期选项。 如果覆盖功能被禁用且表存在压缩块,管家服务将不会从这些表中移除数据,并且会在管理界面的管家服务和System information部分显示关于配置错误的警告信息。
所有参数均可在安装后通过管理→常规→数据清理界面进行修改
建议使用TimescaleDB提供的run工具来优化postgresql.conf
中的PostgreSQL配置参数
从Zabbix 5.0开始支持原生的TimescaleDB压缩功能,要求 PostgreSQL version 10.2或更高版本以及TimescaleDB version 1.5或更高版本, 适用于所有由TimescaleDB管理的Zabbix表。在升级或迁移至TimescaleDB时, 对大表的初始压缩可能需要大量时间。
请注意压缩功能仅在"timescale" Timescale社区许可证下支持, 而不支持在"apache" Apache 2.0许可证下。从Zabbix 6.0.7开始, Zabbix会检测是否支持压缩。如果不支持,会在Zabbix server日志中写入 警告信息,且用户无法在前端启用压缩功能。
建议用户在使用压缩功能前get熟悉TimescaleDB documentation中的压缩相关内容。
需注意压缩功能存在以下特定限制:
压缩设置可在Zabbix前端的管理→常规→Housekeeping部分的 历史与趋势数据压缩区块中进行调整。
参数 | 默认值 | 说明 |
---|---|---|
Enable compression | 启用 | 勾选或取消复选框不会立即激活/停用压缩。由于压缩由Housekeeper处理,变更将在最多2倍HousekeepingFrequency 小时(在zabbix_server.conf中设置)后生效禁用压缩后,落入压缩周期的新块将不会被压缩。但所有先前压缩的数据仍保持压缩状态。要解压先前压缩的块,请遵循TimescaleDB documentation中的说明。 从支持TimescaleDB的旧版Zabbix升级时,压缩功能默认不会启用。 |
Compress records older than | 7天 | 该参数不能少于7天 由于压缩块的不可变性,所有晚于此时间(例如因proxy延迟)的旧数据将被丢弃。 |