Zabbix 支持 TimescaleDB,这是一个基于 PostgreSQL 的数据库解决方案,可将数据自动按时间分片,以在大规模数据场景下提供更快的性能。
目前,Zabbix proxy 不支持 TimescaleDB。
本页面的说明适用于以下场景:
前提条件: 数据库服务器上已安装supported version的TimescaleDB扩展。 有关安装说明,请参阅TimescaleDB documentation。
在安装TimescaleDB之前,请从official PostgreSQL仓库安装受支持的PostgreSQL版本。
为指定数据库启用TimescaleDB扩展,执行以下命令:
执行此命令需要数据库管理员权限。
如果您使用的数据库模式不是'public',则需要在上述命令中添加SCHEMA子句。 例如: echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
然后 run postgresql/timescaledb/schema.sql 脚本. 对于新安装的环境,必须在常规PostgreSQL数据库创建并初始化模式/数据后执行run脚本(参见database creation)。
在TimescaleDB version 2.9.0及以上版本运行schema.sql脚本时,请忽略有关未遵循最佳实践的警告信息。 无论此警告如何,配置都将成功完成。
现有历史数据、趋势数据及审计日志数据的迁移可能耗时较长 Zabbix server和前端在迁移期间必须保持关闭状态
schema.sql脚本设置了以下housekeeping参数:
要使用针对历史和趋势的分区化数据清理功能,必须同时启用这两个选项。 也可以单独仅为历史数据或仅为趋势数据启用覆盖功能.
postgresql/timescaledb/schema.sql脚本设置了两个额外参数:
要成功通过管家清理压缩数据,必须同时启用覆盖监控项历史周期和覆盖监控项趋势周期选项。 若覆盖功能被禁用且表存在压缩块,管家将不会从这些表中删除数据,同时会在Housekeeping和System information部分显示配置错误的警告信息。
所有参数均可在安装后通过管理 > Housekeeping进行修改.
建议使用TimescaleDB提供的run工具来优化postgresql.conf中的PostgreSQL配置参数.
当将Zabbix升级至包含新TimescaleDB超表的version版本时,Zabbix server不会自动配置这些超表(例如从Zabbix 6.4升级到7.0.3时,因为7.0.0和7.0.2版本引入了新的超表)。
要配置新的TimescaleDB超表,请按以下步骤操作:
postgresql/timescaledb/schema.sql脚本;这将配置新的TimescaleDB超表。 注意:从Zabbix 7.0.0开始,脚本位置和名称已从postgresql/timescaledb.sql变更为postgresql/timescaledb/schema.sql。在TimescaleDB version 2.9.0及以上版本运行schema.sql脚本时,请忽略关于未遵循最佳实践的警告信息。 无论是否出现此警告,配置都将成功完成。
所有作为TimescaleDB超表的Zabbix表均支持原生TimescaleDB压缩功能。 在升级或迁移至TimescaleDB过程中,对大表的初始压缩可能耗费大量时间。
请注意压缩功能仅在"timescale" Timescale社区许可下支持,在"apache" Apache 2.0许可下不受支持。 若Zabbix检测到系统不支持压缩功能,将在Zabbix server日志中记录警告信息,且前端界面将禁用压缩选项。
建议用户在使用压缩功能前,先通过TimescaleDB documentation文档get压缩相关原理。
需注意压缩功能存在以下限制:
压缩参数可通过前端界面管理>数据管家中的历史数据、趋势数据及审计日志压缩模块进行配置。
| 参数 | 默认值 | 说明 |
|---|---|---|
| Enable compression | 启用 | 勾选框状态变更不会立即生效。由于压缩由管家进程处理,配置变更最长需要2倍HousekeepingFrequency小时(该值在zabbix_server.conf中设置)才能生效禁用压缩后,符合压缩时间条件的新数据块将不再压缩,但已压缩数据仍保持压缩状态。如需解压已有数据块,请参照TimescaleDB documentation文档操作 从旧版Zabbix升级至支持TimescaleDB的版本时,压缩功能默认处于关闭状态 |
| Compress records older than | 7天 | 该值不得小于7天 由于压缩块的不可变性,所有超过该时限的延迟数据(如因proxy导致延迟的数据)将被丢弃 |
为优化趋势update性能,建议根据使用趋势功能的监控项数量,将trends和trends_uint表的"chunk_time_interval"从30天调整为7天或更短。 此设置遵循TimescaleDB最佳实践,确保数据块大小始终适配系统可用资源。