7 Configurazione di TimescaleDB

Panoramica

Zabbix supporta TimescaleDB, una soluzione di database basata su PostgreSQL che partiziona automaticamente i dati in blocchi basati sul tempo per supportare prestazioni più elevate su larga scala.

Attualmente, TimescaleDB non è supportato da Zabbix proxy.

Le istruzioni in questa pagina possono essere utilizzate per i seguenti scenari:

  • Creazione di un database TimescaleDB o migrazione dalle tabelle PostgreSQL esistenti a TimescaleDB (vedere Configurazione).
  • Aggiornamento dello schema di un database TimescaleDB esistente durante l'aggiornamento di Zabbix (vedere Aggiornamento dello schema TimescaleDB).

Configurazione

Prerequisiti: estensione TimescaleDB di una versione supportata installata sul server del database. Per le istruzioni di installazione, vedere la documentazione di TimescaleDB.

Prima di installare TimescaleDB, installare una release PostgreSQL supportata dal repository ufficiale di PostgreSQL.

Abilitare l'estensione TimescaleDB per il database specifico eseguendo:

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

L'esecuzione di questo comando richiede privilegi di amministratore del database.

Se si utilizza uno schema del database diverso da 'public', è necessario aggiungere una clausola SCHEMA al comando sopra. Ad es.:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

Quindi eseguire lo script postgresql/timescaledb/schema.sql. Per le nuove installazioni, lo script deve essere eseguito dopo che il normale database PostgreSQL è stato creato con schema/dati iniziali (vedere creazione del database).

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

Ignorare i messaggi di avviso che informano che le best practice non vengono seguite durante l'esecuzione dello script schema.sql su TimescaleDB versione 2.9.0 e successive. Nonostante questo avviso, la configurazione verrà completata correttamente.

La migrazione dei dati esistenti di cronologia, trend e log di audit può richiedere molto tempo. Zabbix server e frontend devono essere arrestati per tutta la durata della migrazione.

Lo script schema.sql imposta i seguenti parametri di housekeeping:

  • Sovrascrivi il periodo della cronologia degli item
  • Sovrascrivi il periodo dei trend degli item

Per utilizzare l'housekeeping partizionato per cronologia e trend, entrambe queste opzioni devono essere abilitate. È anche possibile abilitare la sovrascrittura singolarmente, solo per la cronologia oppure solo per i trend.

Per PostgreSQL e TimescaleDB, lo script postgresql/timescaledb/schema.sql imposta due parametri aggiuntivi:

  • Abilita la compressione
  • Comprimi i record più vecchi di 7 giorni

Per rimuovere correttamente i dati compressi tramite housekeeper, devono essere abilitate entrambe le opzioni Override item history period e Override item trend period. Se l'override è disabilitato e le tabelle contengono chunk compressi, housekeeper non rimuoverà i dati da queste tabelle e verranno visualizzati avvisi di configurazione non corretta nelle sezioni Housekeeping e System information.

Tutti questi parametri possono essere modificati in Administration > Housekeeping dopo l'installazione.

Potresti voler eseguire lo strumento timescaledb-tune fornito da TimescaleDB per ottimizzare i parametri di configurazione di PostgreSQL nel tuo postgresql.conf.

Aggiornamento dello schema TimescaleDB

Quando si aggiorna Zabbix a una versione che contiene nuove hypertable di TimescaleDB, Zabbix server non configura automaticamente tali hypertable (ad esempio, durante l'aggiornamento da Zabbix 6.4 a 8.0, poiché le versioni 7.0.0 e 7.0.2 hanno introdotto nuove hypertable).

Per configurare le nuove hypertable di TimescaleDB, seguire questi passaggi:

  1. Avviare Zabbix server; in questo modo viene aggiornato il database esistente.
  2. Verificare nel file di log del server che l'aggiornamento del database sia stato completato; una volta completato, arrestare Zabbix server. Si noti che il server registra un avviso se tenta di abilitare la compressione per una tabella che non è una hypertable.
  3. Eseguire lo script postgresql/timescaledb/schema.sql; questo configura le nuove hypertable di TimescaleDB. Si noti che, a partire da Zabbix 7.0.0, il percorso e il nome dello script sono cambiati da postgresql/timescaledb.sql a postgresql/timescaledb/schema.sql.

Ignorare i messaggi di avviso che indicano che le best practice non vengono seguite durante l'esecuzione dello script schema.sql su TimescaleDB versione 2.9.0 e successive. Nonostante questo avviso, la configurazione verrà completata correttamente.

Compressione di TimescaleDB

La compressione nativa di TimescaleDB è supportata per tutte le tabelle Zabbix che sono hypertable di TimescaleDB. Durante l'aggiornamento o la migrazione a TimescaleDB, la compressione iniziale delle tabelle di grandi dimensioni può richiedere molto tempo.

Si noti che la compressione è supportata con la licenza Timescale Community "timescale" e non è supportata con la licenza Apache 2.0 "apache". Se Zabbix rileva che la compressione non è supportata, viene scritto un messaggio di avviso nel log del server Zabbix e gli utenti non possono abilitare la compressione nel frontend.

Si consiglia agli utenti di acquisire familiarità con la compressione nella documentazione di TimescaleDB prima di utilizzare la compressione.

Si noti che esistono alcune limitazioni imposte dalla compressione, in particolare:

  • Non sono consentite modifiche ai chunk compressi (insert, delete, update)
  • Non sono consentite modifiche allo schema per le tabelle compresse.

Le impostazioni di compressione possono essere modificate nel blocco Compressione di cronologia, trend e log di audit nella sezione Amministrazione > Housekeeping del frontend di Zabbix.

Parametro Predefinito Commenti
Abilita compressione Abilitata Selezionare o deselezionare la casella di controllo non attiva/disattiva immediatamente la compressione. Poiché la compressione è gestita da Housekeeper, le modifiche avranno effetto entro un massimo di 2 volte HousekeepingFrequency ore (impostato in zabbix_server.conf)

Dopo aver disabilitato la compressione, i nuovi chunk che rientrano nel periodo di compressione non verranno compressi. Tuttavia, tutti i dati precedentemente compressi rimarranno compressi. Per decomprimere i chunk compressi in precedenza, seguire le istruzioni nella documentazione di TimescaleDB.

Durante l'aggiornamento da versioni precedenti di Zabbix con supporto TimescaleDB, la compressione non sarà abilitata per impostazione predefinita.
Comprimi record più vecchi di 7d Questo parametro non può essere inferiore a 7 giorni.

A causa dell'immutabilità dei chunk compressi, tutti i dati tardivi (ad esempio dati ritardati da un proxy) più vecchi di questo valore verranno scartati.

:::note Per ottenere prestazioni migliori nell'aggiornamento dei trend, è possibile ridurre "chunk_time_interval" per le tabelle trends e trends_uint da 30 giorni a 7 giorni o meno, a seconda di quanti item utilizzano i trend. Lo scopo di questa impostazione è aderire alle best practice di TimescaleDB e garantire che la dimensione dei chunk rimanga entro le risorse disponibili del sistema. :::