2022 Zabbix中国峰会
2022 Zabbix中国峰会

6 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

对于已经安装,想要从之前的版本升级到Zabbix 7.0版本: 1. 启动Zabbix server,这样会升级已存在的数据库。 2. 确认server的数据库升级日志文件是成功的,确认成功后,停止Zabbix server,继续进行下一步。 3. 运行postgresql/timescaledb/schema.sql脚本(自Zabbix7.0.0版本,该脚本的路径和命名从postgresql/timescaledb.sql改变为postgresql/timescaledb/schema.sql)。 注意:如果启动后没有运行该脚本Zabbix server会记录warning日志。

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

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

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

  • 覆盖监控项历史周期
  • 覆盖监控项趋势周期

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

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

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

仅当同时启用 覆盖监控项历史周期覆盖监控项趋势周期 选项时才能使用压缩。 如果覆盖被禁用并且表具有压缩块,管家将不会从这些表中删除数据,并且有关不正确配置的警告将显示在 管家 和 [系统信息] (/manual/web_interface/frontend_sections/reports/status_of_zabbix) 部分。

安装后,所有这些参数都可以在 管理通用管家 中更改。

您可能需要运行 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 检测是否支持压缩, 如果不支持,则会在 Zabbix 服务器日志中写入一条警告消息,并且用户无法在前端启用压缩。

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

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

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

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

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

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

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

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