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

6 TimescaleDB 配置

概述

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

目前,Zabbix proxy不支持 TimescaleDB 。

此章节会介绍创建 TimescaleDB 数据库或从现有的 PostgreSQL 表迁移到 TimescaleDB。

配置

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

还必须通过执行以下命令为特定的数据库启用 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/schema.sql 脚本。 该脚本必须在使用初始模式/数据创建常规 PostgreSQL 数据库之后运行(请参阅 数据库创建)。

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

对于现有安装,从以前的版本(例如,从 6.0 升级到 7.0.0 或从 6.4 升级到 7.0.2,或从 7.0.0 升级到 7.0.2)升级到 Zabbix 7.0.0 或 7.0.2 时:

  1. 启动 Zabbix 服务器;这将升级现有的数据库。
  2. 检查服务器日志文件,确认数据库升级成功;如果成功,停止 Zabbix 服务器并进行下一步。
  3. 运行 postgresql/timescaledb/schema.sql 脚本(自 Zabbix 7.0.0 起,脚本的位置和名称已从 postgresql/timescaledb.sql 更改为 postgresql/timescaledb/schema.sql)。 请注意,如果在未运行此脚本的情况下启动 Zabbix 服务器,它将记录警告。

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

现有历史、趋势和审计日志数据的迁移可能需要大量时间。 在迁移期间,Zabbix 服务器和前端必须关闭。

schema.sql 脚本设置了以下清理参数:

  • 覆盖项目历史周期
  • 覆盖项目趋势周期

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

postgresql/timescaledb/schema.sql 脚本还设置了两个额外的参数:

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

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

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

您可能需要运行 TimescaleDB 提供的 timescaledb-tune 工具来优化 postgresql.conf 中的 PostgreSQL 配置参数。

Upgrading TimescaleDB schema

When upgrading Zabbix to a version that contains new TimescaleDB hypertables, Zabbix server does not automatically configure those hypertables (for example, when upgrading from Zabbix 6.4 to 7.0.3, as versions 7.0.0 and 7.0.2 have introduced new hypertables).

To configure new TimescaleDB hypertables, follow these steps:

  1. Start Zabbix server; this upgrades the existing database.
  2. Check the server log file that the database upgrade is completed; when completed, stop Zabbix server. Note that the server logs a warning if it attempts to enable compression for a table that is not a hypertable.
  3. Run the postgresql/timescaledb/schema.sql script; this configures the new TimescaleDB hypertables. Note that, since Zabbix 7.0.0, the script's location and name have changed from postgresql/timescaledb.sql to postgresql/timescaledb/schema.sql.

Please ignore warning messages informing that the best practices are not followed while running schema.sql script on TimescaleDB version 2.9.0 and higher. Regardless of this warning, the configuration will be completed successfully.

TimescaleDB 压缩

TimescaleDB 的原生压缩支持所有作为 TimescaleDB 超表的 Zabbix 表。在升级或迁移到 TimescaleDB 期间,对大型表的初始压缩可能需要大量时间。

请注意,压缩在“timescale”Timescale 社区许可证下受支持,而在“apache”Apache 2.0 许可证下不受支持。如果 Zabbix 检测到不支持压缩,会将警告消息写入 Zabbix server 日志,并且用户无法在前端启用压缩。

在使用压缩之前,建议用户在 Timescale 文档 中熟悉压缩相关内容。

请注意,压缩存在一定的限制,具体如下:

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

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

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

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

从支持 TimescaleDB 的 Zabbix 旧版本升级时,默认情况下不会启用压缩。
压缩超过 7 天 此参数不能小于 7 天。

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