概述
Zabbix支持TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可自动将数据分为基于时间的块,以支持更快的大规模性能。
目前,Zabbix代理不支持 TimescaleDB 。
此章节会介绍创建 TimescaleDB 数据库或从现有的 PostgreSQL 表迁移到 TimescaleDB
配置
我们假设数据库服务器上已经安装了 TimescaleDB 扩展 (详见installation instructions).
TimescaleDB 必须通过数据库管理员权限运行此命令:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
如果你使用的数据库schema不是 'public' 模式,则需要通过以上命令添加SCHEMA子句. E.g.:echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
然后在database/postgresql 库中运行 timescaledb.sql
脚本 。对于新安装的数据库,必须在使用chema/data 创建常规 PostgreSQL 数据库后运行脚本 (详见 database creation):
cat /usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
迁移历史和趋势数据可能需要花费大量时间。 Zabbix 服务器和前端在迁移期间必须关闭。
timescaledb.sql
脚本设置以下内置数据管理housekeeping 参数:
为了将用于历史和趋势的内置数据管理进行分区,这两个选项都必须打开。可以仅对趋势使用TimescaleDB分区 (by setting Override item trend period) 或仅用于历史记录 (Override item history period).
对于 PostgreSQL 10.2 或更高的版本和 TimescaleDB 1.5 及更高版本,timescaledb.sql 脚本会设置两个附加参数:
安装好后可以在 Administration → General → Housekeeping 更改这些参数.
您可能希望运行 TimescaleDB 提供的 timescaledb-tune 工具来优化postgresql.conf
中的 PostgreSQL 参数。
TimescaleDB 压缩
从 Zabbix 5.0(对于 PostgreSQL 10.2 或更高版本)和 TimescaleDB 1.5 或更高版本(对于由 TimescaleDB 管理的所有 Zabbix 表),都支持 TimescaleDB 压缩。在升级或迁移到 TimescaleDB 期间,数据量大的表的初始压缩可能花费大量时间。
推荐用户使用压缩之前,熟悉该文档 TimescaleDB。
请注意,压缩会带来某些限制,特别是:
阻止 History and trends compression 压缩可以在前端设置 Administration → General → Housekeeping .
参数 | 默认值 | 备注 |
---|---|---|
Enable compression | Enabled | 选中或取消选中该复选框不会立即激活/停用压缩. 由于压缩由 Housekeeper 处理, 更改最多将在2倍 HousekeepingFrequency 时间后生效 (set in zabbix_server.conf)禁用压缩后,新块将不会压缩。但是,所有以前压缩的数据都将保持压缩状态。要解压缩以前压缩的块,请按照该说明进行操作TimescaleDB. 当从支持TimescaleDB的旧版本的Zabbix升级时,默认情况下不会启用压缩。 |
Compress records older than | 7d | 此参数配置不能少于 7 天. 由于压缩块的不可变性,早于此值的所有延迟数据将被丢弃(e.g. 代理延迟的数据) . |