[comment]: # ({6b30eb7c-98c082ce})
# 7 Configuration de TimescaleDB

[comment]: # ({/6b30eb7c-98c082ce})

[comment]: # ({36fb6804-acb21280})
#### 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.

::: notewarning
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](#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](#upgrading-timescaledb-schema)).

[comment]: # ({/36fb6804-acb21280})

[comment]: # ({082fb7aa-f731725c})
#### Configuration

**Prérequis** : extension TimescaleDB d’une [version prise en charge](/manual/installation/requirements#thirdparty-external-surrounding-software) installée sur le serveur de base de données.
Pour les instructions d’installation, voir la [documentation TimescaleDB](https://docs.tigerdata.com/self-hosted/latest/install/).

::: notewarning
Avant d’installer TimescaleDB, installez une version PostgreSQL prise en charge depuis le dépôt [PostgreSQL officiel](https://www.postgresql.org/download/).
:::

Activez l’extension TimescaleDB pour la base de données spécifique en exécutant :

```bash
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.

::: noteclassic
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. :<br>
`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](/manual/appendix/install/db_scripts)).

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

::: noteimportant
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.
:::

La migration des données existantes d’historique, de tendances et de journal d’audit peut prendre beaucoup de temps.
Le serveur Zabbix et l’interface doivent être arrêtés pendant toute la durée de la migration.

Le script `schema.sql` définit les paramètres de nettoyage suivants :

-   Remplacer la période d’historique des éléments
-   Remplacer la période de tendances des éléments

Pour utiliser le nettoyage 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 de plus de 7 jours

[comment]: # ({/082fb7aa-f731725c})

[comment]: # ({5c6ac2c3-60e46db2})
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*](/manual/web_interface/frontend_sections/administration/housekeeping) et [*System information*](/manual/web_interface/frontend_sections/reports/status_of_zabbix).

[comment]: # ({/5c6ac2c3-60e46db2})

[comment]: # ({56721869-8c3a80a9})
Tous ces paramètres peuvent être modifiés dans *Administration* > [*Housekeeping*](/manual/web_interface/frontend_sections/administration/housekeeping) après l'installation.

::: notetip
Vous pouvez exécuter l'outil timescaledb-tune fourni par TimescaleDB afin d'optimiser les paramètres de configuration PostgreSQL dans votre `postgresql.conf`.
:::

[comment]: # ({/56721869-8c3a80a9})

[comment]: # ({0bea3ea4-d6ee4f10})
##### Mise à niveau du schéma TimescaleDB

Lors de la mise à niveau de Zabbix vers une version contenant de nouveaux hypertables TimescaleDB, le serveur Zabbix ne configure pas automatiquement ces hypertables (par exemple, lors d'une mise à niveau de Zabbix 6.4 vers 7.4, car les versions 7.0.0 et 7.0.2 ont introduit de nouveaux hypertables).

Pour configurer les nouveaux hypertables TimescaleDB, suivez ces étapes :

1. Démarrez le serveur Zabbix ; cela met à niveau la base de données existante.
2. 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 enregistre un avertissement s'il tente d'activer la compression pour une table qui n'est pas un hypertable.
3. Exécutez le script `postgresql/timescaledb/schema.sql` ; cela configure les nouveaux hypertables TimescaleDB.
Notez que, depuis Zabbix 7.0.0, l'emplacement et le nom du script ont changé de `postgresql/timescaledb.sql` à `postgresql/timescaledb/schema.sql`.

::: noteimportant
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.
:::

[comment]: # ({/0bea3ea4-d6ee4f10})

[comment]: # ({dc9d91b5-2012f0a6})
#### 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.

::: notetip
Il est recommandé aux utilisateurs de se familiariser avec la compression dans la [documentation TimescaleDB](https://docs.tigerdata.com/use-timescale/latest/compression/) 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](/manual/appendix/config/zabbix_server))<br><br>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](https://docs.tigerdata.com/use-timescale/latest/compression/).<br><br>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.<br><br>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.
:::

[comment]: # ({/dc9d91b5-2012f0a6})
