Zabbix 支持 TimescaleDB,这是一种基于 PostgreSQL 的数据库解决方案,可自动将数据分割为基于时间的块,以支持大规模下的更快性能。
目前,Zabbix proxy 不支持 TimescaleDB。
本页的说明可用于以下场景:
先决条件:在数据库服务器上安装了支持版本的TimescaleDB扩展。有关安装说明,请参阅Timescale文档)。
通过执行以下命令启用特定数据库的TimescaleDB扩展:
运行此命令需要数据库管理员权限。
如果您使用的是除'public'之外的数据库模式,您需要 在上述命令中添加一个SCHEMA子句。例如:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
然后运行postgresql/timescaledb/schema.sql
脚本。 对于新安装,必须在使用初始模式/数据创建常规PostgreSQL数据库后运行脚本(参见数据库创建)。
在TimescaleDB版本2.9.0及更高版本上运行schema.sql
脚本时,请忽略警告消息,这些消息告知未遵循最佳实践。 尽管有此警告,配置仍将成功完成。
现有历史记录、趋势和审计日志数据的迁移可能需要很长时间。 Zabbix服务器和前端在迁移期间必须关闭。
schema.sql
脚本设置以下管家参数:
为了使用历史记录和趋势的分区式管家,必须启用这两个选项。也可以单独启用覆写,仅用于历史记录或仅用于趋势。
postgresql/timescaledb/schema.sql
脚本设置另外两个参数:
仅当同时启用 覆盖监控项历史周期 和 覆盖监控项趋势周期 选项时才能使用压缩。 如果覆盖被禁用并且表具有压缩块,管家将不会从这些表中删除数据,并且有关不正确配置的警告将显示在 管家 和 [系统信息] (/manual/web_interface/frontend_sections/reports/status_of_zabbix) 部分。
安装后,所有这些参数都可以在 管理 → 通用 → 管家 中更改。
您可能需要运行 TimescaleDB 提供的 timescaledb-tune 工具来优化 postgresql.conf
中的 PostgreSQL 配置参数。
在将Zabbix升级到包含新的TimescaleDB hypertables的版本时,Zabbix服务器不会自动配置这些hypertables(例如,从Zabbix 6.4升级到7.0.3时,因为7.0.0和7.0.2版本引入了新的hypertables)。
要配置新的TimescaleDB hypertables,请遵循以下步骤:
postgresql/timescaledb/schema.sql
脚本;这会配置新的TimescaleDB hypertables。请注意,自Zabbix 7.0.0版本起,脚本的位置和名称已从postgresql/timescaledb.sql
更改为postgresql/timescaledb/schema.sql
。请忽略在TimescaleDB 2.9.0及更高版本上运行schema.sql
脚本时出现的警告信息,这些信息提示未遵循最佳实践。 尽管有此警告,配置仍会成功完成。
TimescaleDB原生压缩支持所有Zabbix表格,这些表格是TimescaleDB hypertables。在升级或迁移至TimescaleDB期间,大型表格的初始压缩可能需要大量时间。
请注意,压缩在"timescale" Timescale Community许可证下得到支持,而在"apache" Apache 2.0许可证下不支持。如果Zabbix检测到不支持压缩,则会在Zabbix server日志中写入警告消息,用户无法在前端启用压缩。
建议用户在使用压缩前,熟悉Timescale文档中的压缩相关内容。
请注意,压缩施加了某些限制,具体如下:
可以在Zabbix前端的Administration → Housekeeping部分的历史记录、趋势和审核日志压缩块中更改压缩设置。
参数 | 默认值 | 注释 |
---|---|---|
启用压缩 | 启用 | 勾选或取消勾选复选框不会立即激活/停用压缩。因为压缩由Housekeeper处理,更改将在最多2倍HousekeepingFrequency 小时后生效(在zabbix_server.conf中设置)停用压缩后,落入压缩周期的新块将不会被压缩。但是,所有先前压缩的数据将保持压缩状态。要解压缩先前压缩的块,请遵循Timescale文档中的说明。 从支持TimescaleDB的Zabbix旧版本升级时,默认不会启用压缩。 |
压缩超过以下时间的记录 | 7天 | 此参数不能少于7天。 由于压缩块的不可变性,所有晚于该值的旧数据(例如,由proxy延迟的数据)将被丢弃。 |
为了提高趋势更新性能,您可能需要将trends
和trends_uint
表格的"chunk_time_interval"从30天降低至7天或更少,具体取决于使用趋势的监控项数量。此设置的目的是遵循TimescaleDB的最佳实践,确保块大小保持在系统可用资源范围内。