5 TimescaleDB 配置

概述

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

目前,Zabbix代理不支持 TimescaleDB 。

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

配置

我们假设数据库服务器上已经安装了 TimescaleDB 扩展 (详见installation instructions).

TimescaleDB 必须通过数据库管理员权限运行此命令:

  1. 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):

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

迁移历史和趋势数据可能需要花费大量时间。 Zabbix 服务器和前端在迁移期间必须关闭。

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

  • Override item history period
  • Override item trend period

为了将用于历史和趋势的内置数据管理进行分区,这两个选项都必须打开。可以仅对趋势使用TimescaleDB分区 (by setting Override item trend period) 或仅用于历史记录 (Override item history period).

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

  • Enable compression
  • Compress records older than 7 days

安装好后可以在 AdministrationGeneralHousekeeping 更改这些参数.

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

TimescaleDB 压缩

从 Zabbix 5.0(对于 PostgreSQL 10.2 或更高版本)和 TimescaleDB 1.5 或更高版本(对于由 TimescaleDB 管理的所有 Zabbix 表),都支持 TimescaleDB 压缩。在升级或迁移到 TimescaleDB 期间,数据量大的表的初始压缩可能花费大量时间。

推荐用户使用压缩之前,熟悉该文档 TimescaleDB

请注意,压缩会带来某些限制,特别是:

  • 不允许压缩块修改 (inserts, deletes, updates)
  • 不允许对压缩表的结构进行更改.

阻止 History and trends compression 压缩可以在前端设置 AdministrationGeneralHousekeeping .

参数默认值备注
Enable compressionEnabled选中或取消选中该复选框不会立即激活/停用压缩. 由于压缩由 Housekeeper 处理, 更改最多将在2倍 HousekeepingFrequency时间后生效 (set in zabbix_server.conf)

禁用压缩后,新块将不会压缩。但是,所有以前压缩的数据都将保持压缩状态。要解压缩以前压缩的块,请按照该说明进行操作TimescaleDB.

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

由于压缩块的不可变性,早于此值的所有延迟数据将被丢弃(e.g. 代理延迟的数据) .