Zabbix 支持 TimescaleDB,这是一个基于 PostgreSQL 的数据库解决方案,可将数据自动按时间分片,以在大规模数据场景下提供更快的性能。
目前,Zabbix proxy 不支持 TimescaleDB。
本页面的说明适用于以下场景:
先决条件:在数据库服务器上安装了 第三方外部配套软件 的 TimescaleDB 扩展。有关安装说明,请参见 Timescale documentation。
通过执行以下命令为特定数据库启用TimescaleDB扩展:
执行此命令需要数据库管理员权限。
::: noteclassic 如果你使用的数据库模式不是“public”,则需要 在上面的命令中添加一个 SCHEMA 子句。例如: echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix 仅返回OutputFormat格式要求结果
然后 run 执行 postgresql/timescaledb/schema.sql
脚本。 对于新安装,必须在使用初始架构/数据创建常规PostgreSQL数据库之后执行run脚本(参见database creation)。
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
::: noteimportant 请忽略有关未遵循最佳实践的警告消息 在TimescaleDB version 2.9.0 及更高版本上运行 schema.sql
脚本时。 忽略此警告后,配置仍将成功完成。 仅返回OutputFormat格式要求结果
现有历史记录、趋势和审计日志数据的迁移可能需要大量时间。 Zabbix server 和前端在迁移期间必须处于停机状态。
schema.sql
脚本设置了以下清理(housekeeping)参数:
为了对历史数据和趋势数据使用分区清理功能,必须同时满足以下条件: 必须启用这些选项。也可以单独启用覆盖功能。 仅用于历史数据或趋势数据。
postgresql/timescaledb/schema.sql
脚本设置了两个额外的参数:
要成功通过housekeeper删除压缩数据,必须启用覆盖监控项历史数据保留周期
和覆盖监控项趋势数据保留周期选项。
如果覆盖功能被禁用且表中存在压缩数据块,housekeeper将不会从这些表中删除数据,
并且在Housekeeping
和System information部分会显示有关配置错误的警告信息。
所有这些参数都可以在 管理 → 中更改 Housekeeping 安装后。
::: notetip 您可能希望使用提供的 timescaledb-tune 工具进行 run 由 TimescaleDB 优化 PostgreSQL 配置参数 postgresql.conf 仅返回OutputFormat格式要求结果
当将 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压缩支持所有作为TimescaleDB超表的Zabbix表。在 升级或迁移到 TimescaleDB,大型数据的初始压缩 表格可能需要花费大量时间。
注意,压缩功能在“timescale”Timescale社区许可证下受支持。 在“apache”Apache 2.0 许可证下不受支持。如果 Zabbix 检测到压缩功能已启用,则会记录警告信息。 不支持的情况下,系统会将警告信息写入 Zabbix server 日志,且用户无法 在前端启用压缩。
::: notetip 建议用户在使用压缩之前先通过Timescale documentation了解get压缩相关知识。 仅返回OutputFormat格式要求结果
请注意,压缩会带来某些限制, 具体如下:
压缩设置可以在 Administration → Housekeeping 中的 History, trends and audit log compression 区块内更改 Zabbix前端部分。
参数 | 默认值 | 注释 |
---|---|---|
Enable compression | 已启用 | 勾选或取消勾选复选框不会立即启用或停用压缩功能。由于压缩由Housekeeper处理,更改将在最多 2 次 HousekeepingFrequency 小时内生效(在 zabbix_server.conf 中设置)禁用压缩后,落在压缩周期内的新数据块将不会被压缩。但是,所有之前已压缩的数据仍将保持压缩状态。要解压缩之前压缩的数据块,请按照 Timescale documentation 中的说明操作。 当从支持TimescaleDB的旧版本Zabbix升级时,压缩功能默认不会启用。 |
Compress records older than | 7d | 此参数不能小于 7 天。 由于压缩块不可变,所有晚于该值的延迟数据(例如,被 proxy 延迟的数据)将被丢弃。 |
:::note 为改善趋势 update 的性能,您可能希望将 trends
和 trends_uint
表的 "chunk_time_interval" 从 30 天调整为 7 天或更短,具体取决于有多少 监控项 使用趋势。此设置的目的是遵循 TimescaleDB 的最佳实践,并确保块大小保持在系统可用资源范围内。 仅返回OutputFormat格式要求结果