5 TimescaleDB 设置

概述

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

目前Zabbix不支持TimescaleDB proxy.

本页指南可用于创建TimescaleDB数据库 用于从现有的PostgreSQL表迁移到TimescaleDB。

配置

我们假设TimescaleDB扩展已安装在数据库服务器上 (安装说明请参阅TimescaleDB documentation)。

还需要通过执行以下命令为特定数据库启用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

然后run postgresql/timescaledb.sql脚本。 对于新安装,必须在创建具有初始模式/数据的常规 PostgreSQL数据库后run此脚本(参见 database creation):

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

请忽略在TimescaleDB version 2.9.0及更高版本上运行 timescaledb.sql脚本时提示未遵循最佳实践配置的警告信息。 尽管有此警告,配置仍将成功完成。

现有历史和趋势数据的迁移可能需要很长时间。 在此期间Zabbix server和前端必须停止运行。

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

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

要为历史和趋势使用分区管家功能, 必须同时启用这两个选项。也可以单独启用 仅历史或仅趋势的覆盖。

对于PostgreSQL version 10.2或更高版本以及TimescaleDB version 1.5或 更高版本,timescaledb.sql脚本设置两个额外参数:

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

要成功通过管家服务移除压缩数据,必须同时启用覆盖监控项历史周期覆盖监控项趋势周期选项。 如果覆盖功能被禁用且表存在压缩块,管家服务将不会从这些表中移除数据,并且会在管理界面的管家服务System information部分显示关于配置错误的警告信息。

所有参数均可在安装后通过管理常规数据清理界面进行修改

建议使用TimescaleDB提供的run工具来优化postgresql.conf中的PostgreSQL配置参数

TimescaleDB压缩

从Zabbix 5.0开始支持原生的TimescaleDB压缩功能,要求 PostgreSQL version 10.2或更高版本以及TimescaleDB version 1.5或更高版本, 适用于所有由TimescaleDB管理的Zabbix表。在升级或迁移至TimescaleDB时, 对大表的初始压缩可能需要大量时间。

请注意压缩功能仅在"timescale" Timescale社区许可证下支持, 而不支持在"apache" Apache 2.0许可证下。从Zabbix 6.0.7开始, Zabbix会检测是否支持压缩。如果不支持,会在Zabbix server日志中写入 警告信息,且用户无法在前端启用压缩功能。

建议用户在使用压缩功能前get熟悉TimescaleDB documentation中的压缩相关内容。

需注意压缩功能存在以下特定限制:

  • 不允许对压缩块进行修改(插入、删除、更新)
  • 不允许对压缩表进行模式变更

压缩设置可在Zabbix前端的管理常规Housekeeping部分的 历史与趋势数据压缩区块中进行调整。

参数 默认值 说明
Enable compression 启用 勾选或取消复选框不会立即激活/停用压缩。由于压缩由Housekeeper处理,变更将在最多2倍HousekeepingFrequency小时(在zabbix_server.conf中设置)后生效

禁用压缩后,落入压缩周期的新块将不会被压缩。但所有先前压缩的数据仍保持压缩状态。要解压先前压缩的块,请遵循TimescaleDB documentation中的说明。

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

由于压缩块的不可变性,所有晚于此时间(例如因proxy延迟)的旧数据将被丢弃。