6 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 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 esempio:
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 database PostgreSQL standard è stato creato con lo 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 sono seguite durante l'esecuzione dello script schema.sql sulla versione 2.9.0 e successive di TimescaleDB.
Nonostante questo avviso, la configurazione verrà completata correttamente.
La migrazione dei dati storici, dei trend e del registro di audit esistenti può richiedere molto tempo. server e frontend di Zabbix devono essere inattivi per tutta la durata della migrazione.
Lo script schema.sql imposta i seguenti parametri di housekeeping:
- Override item history period
- Override item trend period
Per utilizzare l'housekeeping partizionato per history e trends, entrambe queste opzioni devono essere abilitate. È anche possibile abilitare l'override singolarmente, solo per history o solo per trends.
Lo script postgresql/timescaledb/schema.sql imposta due parametri aggiuntivi:
- Enable compression
- Compress records older than 7 days
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 nuovi hypertable di TimescaleDB, il server Zabbix non configura automaticamente tali hypertable (ad esempio, durante l'aggiornamento da Zabbix 6.4 a 7.0.3, poiché le versioni 7.0.0 e 7.0.2 hanno introdotto nuovi hypertable).
Per configurare i nuovi hypertable di TimescaleDB, seguire questi passaggi:
- Avviare il server Zabbix; questo aggiorna il database esistente.
- Verificare nel file di log del server che l'aggiornamento del database sia completato; una volta completato, arrestare il server Zabbix. Si noti che il server registra un avviso se tenta di abilitare la compressione per una tabella che non è un hypertable.
- Eseguire lo script
postgresql/timescaledb/schema.sql; questo configura i nuovi hypertable di TimescaleDB. Si noti che, a partire da Zabbix 7.0.0, la posizione e il nome dello script sono cambiati dapostgresql/timescaledb.sqlapostgresql/timescaledb/schema.sql.
Ignorare i messaggi di avviso che informano che le best practice non sono seguite durante l'esecuzione dello script schema.sql sulla versione 2.9.0 e successive di TimescaleDB.
Indipendentemente da questo avviso, la configurazione verrà completata correttamente.
Compressione 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, nel log del server Zabbix viene scritto un messaggio di avviso e gli utenti non possono abilitare la compressione nel frontend.
Si consiglia agli utenti di familiarizzare con la compressione nella documentazione di TimescaleDB prima di utilizzarla.
Si noti che la compressione impone alcune limitazioni, in particolare:
- Le modifiche ai chunk compressi (insert, delete, update) non sono consentite
- Le modifiche dello schema per le tabelle compresse non sono consentite.
Le impostazioni di compressione possono essere modificate nel blocco Compressione della cronologia, delle tendenze e del registro di audit nella sezione Amministrazione > Housekeeping del frontend di Zabbix.
| Parameter | Default | Comments |
|---|---|---|
| Enable compression | Enabled | Selezionare o deselezionare la casella di controllo non attiva/disattiva immediatamente la compressione. Poiché la compressione è gestita dall'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 già compressi rimarranno compressi. Per decomprimere i chunk precedentemente compressi, 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. |
| Compress records older than | 7d | Questo parametro non può essere inferiore a 7 giorni. A causa dell'immutabilità dei chunk compressi, tutti i dati in ritardo (ad esempio i dati ritardati da un proxy) più vecchi di questo valore verranno scartati. |
:::note
Per migliorare le prestazioni di aggiornamento delle tendenze, potrebbe essere opportuno ridurre il valore di "chunk_time_interval" per le tabelle trends e trends_uint da 30 giorni a 7 giorni o meno, a seconda di quanti item utilizzano le tendenze.
Lo scopo di questa impostazione è aderire alle best practice di TimescaleDB e garantire che la dimensione del chunk rimanga entro le risorse disponibili del sistema.
:::