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 period 和 Override item trend period 选项时才能使用压缩。 如果覆盖被禁用并且表具有压缩块,管家将不会从这些表中删除数据,并且有关不正确配置的警告将显示在 Housekeeping 和 [System information] (/manual/web_interface/frontend_sections/reports/status_of_zabbix) 部分。
安装后,所有这些参数都可以在 Administration → General → Housekeeping 中更改。
您可能需要运行 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 天。 由于压缩块的不变性,所有早于此值的延迟数据(例如,代理延迟的数据)都将被丢弃。 |