这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.

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

然后运行 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 天以上的记录

要成功地通过管家删除压缩数据,必须同时启用“覆盖监控项历史周期”和“覆盖监控项趋势周期”选项。 如果禁用了覆盖功能,并且表中有压缩的数据块,管家将不会从这些表中删除数据,并且在管家系统信息部分的管理界面中将显示有关配置不正确的警告。

安装后,所有这些参数都可以在 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 天。

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