7 Configuration de TimescaleDB
Aperçu
Zabbix prend en charge TimescaleDB, une solution de base de données basée sur PostgreSQL qui partitionne automatiquement les données en segments temporels afin d’offrir de meilleures performances à grande échelle.
Actuellement, TimescaleDB n’est pas pris en charge par le proxy Zabbix.
Les instructions de cette page peuvent être utilisées dans les scénarios suivants :
- Création d’une base de données TimescaleDB ou migration de tables PostgreSQL existantes vers TimescaleDB (voir Configuration).
- Mise à niveau du schéma d’une base de données TimescaleDB existante lors de la mise à niveau de Zabbix (voir Mise à niveau du schéma TimescaleDB).
Configuration
Prérequis : extension TimescaleDB d’une version prise en charge installée sur le serveur de base de données. Pour les instructions d’installation, consultez la documentation TimescaleDB.
Avant d’installer TimescaleDB, installez une version PostgreSQL prise en charge depuis le dépôt PostgreSQL officiel.
Activez l’extension TimescaleDB pour la base de données concernée en exécutant :
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
L’exécution de cette commande nécessite des privilèges d’administrateur de base de données.
Si vous utilisez un schéma de base de données autre que 'public', vous devez ajouter une clause SCHEMA à la commande ci-dessus.
Par ex. :
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix
Exécutez ensuite le script postgresql/timescaledb/schema.sql.
Pour les nouvelles installations, le script doit être exécuté après la création de la base de données PostgreSQL standard avec le schéma/les données initiaux (voir création de la base de données).
cat /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Veuillez ignorer les messages d’avertissement indiquant que les bonnes pratiques ne sont pas respectées lors de l’exécution du script schema.sql sur TimescaleDB version 2.9.0 et ultérieure.
Malgré cet avertissement, la configuration sera terminée avec succès.
La migration des données existantes d’historique, de tendances et du journal d’audit peut prendre beaucoup de temps. Le serveur Zabbix et le frontend doivent être arrêtés pendant toute la durée de la migration.
Le script schema.sql définit les paramètres de nettoyage automatique suivants :
- Remplacer la période d’historique des éléments
- Remplacer la période de tendances des éléments
Pour utiliser le nettoyage automatique partitionné pour l’historique et les tendances, ces deux options doivent être activées. Il est également possible d’activer le remplacement individuellement, soit uniquement pour l’historique, soit uniquement pour les tendances.
Pour PostgreSQL et TimescaleDB, le script postgresql/timescaledb/schema.sql définit deux paramètres supplémentaires :
- Activer la compression
- Compresser les enregistrements datant de plus de 7 jours
Pour que le housekeeper supprime correctement les données compressées, les options Override item history period et Override item trend period doivent toutes deux être activées. Si le remplacement est désactivé et que les tables contiennent des chunks compressés, le housekeeper ne supprimera pas les données de ces tables, et des avertissements concernant une configuration incorrecte seront affichés dans les sections Housekeeping et System information.
Tous ces paramètres peuvent être modifiés dans Administration > Housekeeping après l'installation.
Vous pouvez exécuter l'outil timescaledb-tune fourni par TimescaleDB afin d'optimiser les paramètres de configuration PostgreSQL dans votre postgresql.conf.
Mise à niveau du schéma TimescaleDB
Lors de la mise à niveau de Zabbix vers une version contenant de nouvelles hypertables TimescaleDB, le serveur Zabbix ne configure pas automatiquement ces hypertables (par exemple, lors d'une mise à niveau de Zabbix 6.4 vers 8.0, car les versions 7.0.0 et 7.0.2 ont introduit de nouvelles hypertables).
Pour configurer les nouvelles hypertables TimescaleDB, suivez ces étapes :
- Démarrez le serveur Zabbix ; cela met à niveau la base de données existante.
- Vérifiez dans le fichier journal du serveur que la mise à niveau de la base de données est terminée ; une fois terminée, arrêtez le serveur Zabbix. Notez que le serveur consigne un avertissement s'il tente d'activer la compression pour une table qui n'est pas une hypertable.
- Exécutez le script
postgresql/timescaledb/schema.sql; cela configure les nouvelles hypertables TimescaleDB. Notez que, depuis Zabbix 7.0.0, l'emplacement et le nom du script ont été modifiés depostgresql/timescaledb.sqlàpostgresql/timescaledb/schema.sql.
Veuillez ignorer les messages d'avertissement indiquant que les bonnes pratiques ne sont pas respectées lors de l'exécution du script schema.sql sur TimescaleDB version 2.9.0 et ultérieure.
Malgré cet avertissement, la configuration sera effectuée avec succès.
Compression TimescaleDB
La compression native de TimescaleDB est prise en charge pour toutes les tables Zabbix qui sont des hypertables TimescaleDB. Lors de la mise à niveau ou de la migration vers TimescaleDB, la compression initiale des grandes tables peut prendre beaucoup de temps.
Notez que la compression est prise en charge avec la licence Timescale Community "timescale" et qu'elle n'est pas prise en charge avec la licence Apache 2.0 "apache". Si Zabbix détecte que la compression n'est pas prise en charge, un message d'avertissement est écrit dans le journal du serveur Zabbix et les utilisateurs ne peuvent pas activer la compression dans l'interface web.
Il est recommandé aux utilisateurs de se familiariser avec la compression dans la documentation TimescaleDB avant d'utiliser la compression.
Notez qu'il existe certaines limitations imposées par la compression, notamment :
- Les modifications des chunks compressés (insertions, suppressions, mises à jour) ne sont pas autorisées
- Les modifications de schéma pour les tables compressées ne sont pas autorisées.
Les paramètres de compression peuvent être modifiés dans le bloc Compression de l'historique, des tendances et du journal d'audit de la section Administration > Housekeeping de l'interface web Zabbix.
| Paramètre | Par défaut | Commentaires |
|---|---|---|
| Activer la compression | Activé | Cocher ou décocher la case n'active/désactive pas immédiatement la compression. Comme la compression est gérée par le Housekeeper, les modifications prendront effet dans un délai pouvant aller jusqu'à 2 fois HousekeepingFrequency heures (défini dans zabbix_server.conf)Après la désactivation de la compression, les nouveaux chunks qui entrent dans la période de compression ne seront pas compressés. Cependant, toutes les données précédemment compressées resteront compressées. Pour décompresser des chunks précédemment compressés, suivez les instructions de la documentation TimescaleDB. Lors d'une mise à niveau depuis d'anciennes versions de Zabbix avec prise en charge de TimescaleDB, la compression ne sera pas activée par défaut. |
| Compresser les enregistrements antérieurs à | 7d | Ce paramètre ne peut pas être inférieur à 7 jours. En raison de l'immuabilité des chunks compressés, toutes les données tardives (par exemple, des données retardées par un proxy) plus anciennes que cette valeur seront ignorées. |
:::note
Pour de meilleures performances de mise à jour des tendances, vous pouvez réduire le "chunk_time_interval" des tables trends et trends_uint de 30 jours à 7 jours ou moins, selon le nombre d'éléments utilisant les tendances.
L'objectif de ce paramètre est de respecter les bonnes pratiques de TimescaleDB et de garantir que la taille des chunks reste dans les limites des ressources disponibles du système.
:::