7 Configuración de TimescaleDB

Descripción general

Zabbix es compatible con TimescaleDB, una solución de base de datos basada en PostgreSQL que particiona automáticamente los datos en fragmentos basados en el tiempo para admitir un rendimiento más rápido a gran escala.

Actualmente, Zabbix proxy no es compatible con TimescaleDB.

Las instrucciones en esta página pueden utilizarse para los siguientes escenarios:

Configuración

Requisitos previos: extensión TimescaleDB de una versión compatible instalada en el server de base de datos. Para obtener instrucciones de instalación, consulte la documentación de TimescaleDB.

Antes de instalar TimescaleDB, instale una versión compatible de PostgreSQL desde el repositorio oficial de PostgreSQL.

Habilite la extensión TimescaleDB para la base de datos específica ejecutando:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

La ejecución de este comando requiere privilegios de administrador de la base de datos.

Si utiliza un esquema de base de datos distinto de 'public', debe añadir una cláusula SCHEMA al comando anterior. P. ej.:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

A continuación, ejecute el script postgresql/timescaledb/schema.sql. En instalaciones nuevas, el script debe ejecutarse después de que la base de datos PostgreSQL normal haya sido creada con el esquema/datos iniciales (consulte creación de la base de datos).

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

Ignore los mensajes de advertencia que informan de que no se siguen las mejores prácticas al ejecutar el script schema.sql en TimescaleDB versión 2.9.0 y posteriores. A pesar de esta advertencia, la configuración se completará correctamente.

La migración de los datos existentes de history, trends y audit log puede llevar mucho tiempo. El server de Zabbix y el frontend deben estar detenidos durante el período de migración.

El script schema.sql establece los siguientes parámetros de housekeeping:

  • Anular el período de history del item
  • Anular el período de trends del item

Para utilizar housekeeping particionado para history y trends, ambas opciones deben estar habilitadas. También es posible habilitar la anulación de forma individual, ya sea solo para history o solo para trends.

Para PostgreSQL y TimescaleDB, el script postgresql/timescaledb/schema.sql establece dos parámetros adicionales:

  • Habilitar compresión
  • Comprimir registros con más de 7 días

Para eliminar correctamente los datos comprimidos mediante el housekeeper, se deben habilitar ambas opciones: Anular el período de historial del item y Anular el período de tendencias del item. Si la anulación está deshabilitada y las tablas tienen fragmentos comprimidos, el housekeeper no eliminará los datos de estas tablas y se mostrarán advertencias sobre una configuración incorrecta en las secciones Housekeeping e Información del sistema.

Todos estos parámetros se pueden cambiar en Administración > Mantenimiento después de la instalación.

Es posible que desee ejecutar la herramienta timescaledb-tune proporcionada por TimescaleDB para optimizar los parámetros de configuración de PostgreSQL en su postgresql.conf.

Actualización del esquema de TimescaleDB

Al actualizar Zabbix a una versión que contiene nuevos hypertables de TimescaleDB, el server de Zabbix no configura automáticamente esos hypertables (por ejemplo, al actualizar de Zabbix 6.4 a 7.4, ya que las versiones 7.0.0 y 7.0.2 han introducido nuevos hypertables).

Para configurar los nuevos hypertables de TimescaleDB, siga estos pasos:

  1. Inicie el server de Zabbix; esto actualiza la base de datos existente.
  2. Compruebe en el archivo de registro del server que la actualización de la base de datos se ha completado; cuando haya finalizado, detenga el server de Zabbix. Tenga en cuenta que el server registra una advertencia si intenta habilitar la compresión para una tabla que no es un hypertable.
  3. Ejecute el script postgresql/timescaledb/schema.sql; esto configura los nuevos hypertables de TimescaleDB. Tenga en cuenta que, desde Zabbix 7.0.0, la ubicación y el nombre del script han cambiado de postgresql/timescaledb.sql a postgresql/timescaledb/schema.sql.

Ignore los mensajes de advertencia que informan de que no se siguen las prácticas recomendadas al ejecutar el script schema.sql en TimescaleDB versión 2.9.0 y posteriores. A pesar de esta advertencia, la configuración se completará correctamente.

Compresión de TimescaleDB

La compresión nativa de TimescaleDB es compatible con todas las tablas de Zabbix que son hypertables de TimescaleDB. Durante la actualización o migración a TimescaleDB, la compresión inicial de las tablas grandes puede llevar mucho tiempo.

Tenga en cuenta que la compresión es compatible con la licencia comunitaria "timescale" de Timescale y no es compatible con la licencia Apache 2.0 "apache". Si Zabbix detecta que la compresión no es compatible, se escribe un mensaje de advertencia en el log del server de Zabbix y los usuarios no pueden habilitar la compresión en el frontend.

Se recomienda a los usuarios familiarizarse con la compresión en la documentación de TimescaleDB antes de usarla.

Tenga en cuenta que existen ciertas limitaciones impuestas por la compresión, en particular:

  • No se permiten modificaciones en chunks comprimidos (inserciones, eliminaciones, actualizaciones)
  • No se permiten cambios de esquema en tablas comprimidas.

Los ajustes de compresión se pueden cambiar en el bloque Compresión de historial, tendencias y log de auditoría en la sección Administración > Mantenimiento del frontend de Zabbix.

Parameter Default Comments
Enable compression Enabled Marcar o desmarcar la casilla no activa ni desactiva la compresión de inmediato. Como la compresión es gestionada por el Housekeeper, los cambios surtirán efecto en un máximo de 2 veces HousekeepingFrequency horas (configurado en zabbix_server.conf)

Después de deshabilitar la compresión, los nuevos chunks que entren en el período de compresión no se comprimirán. Sin embargo, todos los datos previamente comprimidos permanecerán comprimidos. Para descomprimir chunks previamente comprimidos, siga las instrucciones de la documentación de TimescaleDB.

Al actualizar desde versiones anteriores de Zabbix con soporte para TimescaleDB, la compresión no estará habilitada de forma predeterminada.
Compress records older than 7d Este parámetro no puede ser inferior a 7 días.

Debido a la inmutabilidad de los chunks comprimidos, todos los datos tardíos (por ejemplo, datos retrasados por un proxy) que sean anteriores a este valor se descartarán.

:::note Para mejorar el rendimiento de actualización de tendencias, puede reducir el "chunk_time_interval" de las tablas trends y trends_uint de 30 días a 7 días o menos, dependiendo de cuántos items utilicen tendencias. El propósito de este ajuste es seguir las mejores prácticas de TimescaleDB y garantizar que el tamaño del chunk se mantenga dentro de los recursos disponibles del sistema. :::