Zabbix支持TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可自动将数据分为基于时间的块,以支持更快的大规模性能。
目前,Zabbix proxy不支持 TimescaleDB 。
此章节会介绍创建 TimescaleDB 数据库或从现有的 PostgreSQL 表迁移到 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 数据库之后运行(请参阅 数据库创建)。
对于现有安装,从以前的版本(例如,从 6.0 升级到 7.0.0 或从 6.4 升级到 7.0.2,或从 7.0.0 升级到 7.0.2)升级到 Zabbix 7.0.0 或 7.0.2 时:
postgresql/timescaledb/schema.sql
脚本(自 Zabbix 7.0.0 起,脚本的位置和名称已从 postgresql/timescaledb.sql
更改为 postgresql/timescaledb/schema.sql
)。 请注意,如果在未运行此脚本的情况下启动 Zabbix 服务器,它将记录警告。在 TimescaleDB 2.9.0 及更高版本上运行 schema.sql
脚本时,请忽略告知未遵循最佳实践的警告消息。 尽管有此警告,配置仍将成功完成。
现有历史、趋势和审计日志数据的迁移可能需要大量时间。 在迁移期间,Zabbix 服务器和前端必须关闭。
schema.sql
脚本设置了以下清理参数:
为了对历史和趋势使用分区清理,这两个选项都必须启用。也可以单独为历史或趋势启用覆盖。
postgresql/timescaledb/schema.sql
脚本还设置了两个额外的参数:
When upgrading Zabbix to a version that contains new TimescaleDB hypertables, Zabbix server does not automatically configure those hypertables (for example, when upgrading from Zabbix 6.4 to 7.2, as versions 7.0.0 and 7.0.2 have introduced new hypertables).
To configure new TimescaleDB hypertables, follow these steps:
postgresql/timescaledb/schema.sql
script; this configures the new TimescaleDB hypertables. Note that, since Zabbix 7.0.0, the script's location and name have changed from postgresql/timescaledb.sql
to postgresql/timescaledb/schema.sql
.Please ignore warning messages informing that the best practices are not followed while running schema.sql
script on TimescaleDB version 2.9.0 and higher. Regardless of this warning, the configuration will be completed successfully.
仅当同时启用 覆盖监控项历史周期 和 覆盖监控项趋势周期 选项时才能使用压缩。 如果覆盖被禁用并且表具有压缩块,管家将不会从这些表中删除数据,并且有关不正确配置的警告将显示在 管家 和 [系统信息] (/manual/web_interface/frontend_sections/reports/status_of_zabbix) 部分。
安装后,所有这些参数都可以在 管理 → 通用 → 管家 中更改。
您可能需要运行 TimescaleDB 提供的 timescaledb-tune 工具来优化 postgresql.conf
中的 PostgreSQL 配置参数。
TimescaleDB 的原生压缩支持所有作为 TimescaleDB 超表的 Zabbix 表。在升级或迁移到 TimescaleDB 期间,对大型表的初始压缩可能需要大量时间。
请注意,压缩在“timescale”Timescale 社区许可证下受支持,而在“apache”Apache 2.0 许可证下不受支持。如果 Zabbix 检测到不支持压缩,会将警告消息写入 Zabbix server 日志,并且用户无法在前端启用压缩。
在使用压缩之前,建议用户在 Timescale 文档 中熟悉压缩相关内容。
请注意,压缩存在一定的限制,具体如下:
压缩设置可以在 Zabbix 前端的“管理”→“清理”部分的“历史和趋势压缩”块中更改。
参数 | 默认值 | 注释 |
---|---|---|
启用压缩 | 启用 | 选中或取消选中复选框不会立即激活/停用压缩。因为压缩由管理员处理,更改将在最多 2 倍的“HousekeepingFrequency”小时内生效(在 zabbix_server.conf 中设置) 禁用压缩后,落入压缩周期的新块将不会被压缩。但是,所有先前压缩的数据将保持压缩状态。要解压缩先前压缩的块,请遵循 Timescale 文档 中的说明。 从支持 TimescaleDB 的 Zabbix 旧版本升级时,默认情况下不会启用压缩。 |
压缩超过 | 7 天 | 此参数不能小于 7 天。 由于压缩块的不可变性,所有晚于此值的延迟数据(例如,由代理延迟的数据)都将被丢弃。 |