这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

5 TimescaleDB 配置

概述

Zabbix支持TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可自动将数据分为基于时间的块,以支持更快的大规模性能。

目前,Zabbix代理不支持 TimescaleDB 。

此章节会介绍创建 TimescaleDB 数据库或从现有的 PostgreSQL 表迁移到 TimescaleDB

配置

我们假设数据库服务器上已经安装了 TimescaleDB 扩展(参见安装说明)。

还必须通过执行以下命令为特定数据库启用 TimescaleDB 扩展:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

运行此命令需要数据库管理员权限。

如果您使用“public”以外的数据库模式,则需要在上面的命令中添加一个 SCHEMA 子句。 例如: echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

然后运行位于 database/postgresql 中的“timescaledb.sql”脚本。 对于新安装,必须在使用初始模式/数据创建常规 PostgreSQL 数据库后运行脚本(请参阅 数据库创建):

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix

请忽略通知在 TimescaleDB 2.9.0 及更高版本上运行“timescaledb.sql”脚本时未遵循最佳实践的警告消息。 不管此警告如何,配置都将成功完成。

现有历史和趋势数据的迁移可能需要很长时间。 Zabbix 服务器和前端在迁移期间必须关闭。

timescaledb.sql 脚本设置以下管理参数:

  • 覆盖项目历史时期
  • 覆盖项目趋势期

为了对历史和趋势使用分区管理,必须启用这两个选项。 也可以单独为仅历史或仅趋势启用覆盖。

对于 PostgreSQL 10.2 或更高版本和 TimescaleDB 1.5 或更高版本,timescaledb.sql 脚本设置了两个附加参数:

  • 启用压缩
  • 压缩超过 7 天的记录

仅当同时启用 Override item history periodOverride item trend period 选项时才能使用压缩。 如果覆盖被禁用并且表具有压缩块,管家将不会从这些表中删除数据,并且有关不正确配置的警告将显示在 Housekeeping 和 [System information] (/manual/web_interface/frontend_sections/reports/status_of_zabbix) 部分。

安装后,所有这些参数都可以在 AdministrationGeneralHousekeeping 中更改。

您可能需要运行 TimescaleDB 提供的 timescaledb-tune 工具来优化 postgresql.conf 中的 PostgreSQL 配置参数。

TimescaleDB 压缩

从 Zabbix 5.0 开始,PostgreSQL 版本 10.2 或更高版本以及 TimescaleDB 版本 1.5 或更高版本开始支持由 TimescaleDB 管理的所有 Zabbix 表的原生 TimescaleDB 压缩。 在升级或迁移到 TimescaleDB 期间,大表的初始压缩可能会花费很多时间。

请注意,“timescale”Timescale Community 许可支持压缩,“apache”Apache 2.0 许可不支持压缩。 从 Zabbix 6.0.7 开始,Zabbix 检测是否支持压缩。 如果不支持,则会在 Zabbix 服务器日志中写入一条警告消息,并且用户无法在前端启用压缩。

鼓励用户在使用压缩之前熟悉 TimescaleDB 压缩文档。

请注意,压缩有一定的限制,特别是:

  • · 不允许对压缩块进行修改(插入、删除、更新)
  • · 不允许更改压缩表的schema。

可以在 Zabbix 前端的 管理一般管家 部分的 历史和趋势压缩 块中更改压缩设置。

参数 默认 注释
启用压缩 已启用 选中或取消选中该复选框不会立即激活/停用压缩。 因为压缩是由 Housekeeper 处理的,所以更改将在最多 2 倍的 HousekeepingFrequency 小时内生效(设置在 zabbix_server.conf

禁用压缩后,落入压缩周期的新块将不会被压缩。 但是,所有以前压缩的数据将保持压缩状态。 要解压缩以前压缩的块,请按照 TimescaleDB 文档中的说明进行操作。

从支持 TimescaleDB 的旧版本 Zabbix 升级时, 默认情况下不会启用压缩。
Compress records older than 7d 此参数不能少于 7 天。

由于压缩块的不变性,所有早于此值的延迟数据(例如,代理延迟的数据)都将被丢弃。