Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Zabbix est un systÚme de surveillance. Comme tout autre systÚme, il est confronté à trois problÚmes principaux de tous les systÚmes de surveillance : la collecte et le traitement des données, le stockage de l'historique, et son nettoyage.

Les étapes de collecte, de traitement et d'enregistrement des données prennent du temps. Un peu, mais pour un grand systÚme, cela peut se traduire par de grands délais. Le problÚme du stockage est une question d'accÚs aux données. Elles sont utilisées pour les rapports, les vérifications et les déclencheurs. Les retards d'accÚs aux données affectent également les performances. Lorsque la base de données se développe, il faut supprimer les données obsolÚtes. La suppression est une opération lourde qui consomme également une partie des ressources.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Les problĂšmes de dĂ©lais lors de la collecte et du stockage dans Zabbix sont rĂ©solus par le cache : plusieurs types de caches, le cache dans la base de donnĂ©es. Pour rĂ©soudre le troisiĂšme problĂšme, le cache ne convient pas, c'est pourquoi Zabbix utilise TimescaleDB. Cela sera expliquĂ© par Andrey Guschin — ingĂ©nieur de support technique Zabbix SIA. Andrey travaille chez Zabbix depuis plus de 6 ans et fait face directement Ă  la performance.

Comment fonctionne TimescaleDB, quelles performances peut-elle offrir par rapport à un PostgreSQL classique ? Quel est le rÎle de Zabbix pour une base de données TimescaleDB ? Comment démarrer à partir de zéro et comment migrer depuis PostgreSQL, et quelle configuration offre les meilleures performances ? Tout cela est abordé ci-dessous.

Lire la vidéo

Défis de performance

Chaque systÚme de surveillance est confronté à des défis de performance spécifiques. Je vais parler de trois d'entre eux : la collecte et le traitement des données, le stockage, et le nettoyage de l'historique.

Collecte et traitement des donnĂ©es rapides. Un bon systĂšme de surveillance doit pouvoir obtenir rapidement toutes les donnĂ©es et les traiter en fonction des expressions dĂ©clencheurs — selon ses propres critĂšres. AprĂšs traitement, le systĂšme doit Ă©galement sauvegarder ces donnĂ©es rapidement dans la base de donnĂ©es pour un usage futur.

Stockage de l'historique. Un bon systÚme de surveillance doit stocker l'historique dans la base de données et fournir un accÚs facile aux métriques. L'historique est nécessaire pour l'utiliser dans les rapports, les graphiques, les déclencheurs, les seuils et les éléments de données calculés pour les alertes.

Nettoyage de l'historique. Parfois, il arrive un jour oĂč vous n'avez plus besoin de conserver les mĂ©triques. Pourquoi conserver des donnĂ©es collectĂ©es il y a 5 ans, un mois ou deux : certains nƓuds ont Ă©tĂ© supprimĂ©s, certains hĂŽtes ou mĂ©triques ne sont plus nĂ©cessaires car obsolĂštes et ne sont plus collectĂ©s. Un bon systĂšme de surveillance doit conserver des donnĂ©es historiques et les supprimer de temps en temps pour Ă©viter que la base de donnĂ©es ne devienne trop volumineuse.

La suppression des données obsolÚtes est un sujet sensible qui a un impact fort sur les performances de la base de données.

Mise en cache dans Zabbix

Dans Zabbix, le premier et le deuxiĂšme appels sont rĂ©solus grĂące Ă  la mise en cache. Pour la collecte et le traitement des donnĂ©es, la mĂ©moire vive est utilisĂ©e. Pour le stockage — l'historique dans les dĂ©clencheurs, les graphiques et les Ă©lĂ©ments de donnĂ©es calculĂ©s. Du cĂŽtĂ© de la base de donnĂ©es, il existe un certain cache pour les requĂȘtes principales, par exemple, pour les graphiques.

La mise en cache du cĂŽtĂ© du serveur Zabbix lui-mĂȘme est :

  • ConfigurationCache;
  • ValueCache;
  • HistoryCache;
  • TrendsCache.

Examinons-les plus en détail.

ConfigurationCache

C'est le cache principal oĂč nous stockons les mĂ©triques, les hĂŽtes, les Ă©lĂ©ments de donnĂ©es, les dĂ©clencheurs — tout ce qui est nĂ©cessaire pour le prĂ©traitement et la collecte de donnĂ©es.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Tout cela est stockĂ© dans le ConfigurationCache pour Ă©viter de crĂ©er des requĂȘtes excessives dans la base de donnĂ©es. AprĂšs le dĂ©marrage du serveur, nous mettons Ă  jour ce cache, crĂ©ons et mettons pĂ©riodiquement Ă  jour les configurations.

Collecte des données

Le schĂ©ma est assez vaste, mais l'essentiel est les collecteurs. Ce sont diffĂ©rents « pollers » — processus de collecte. Ils sont responsables de diffĂ©rents types de collecte : ils collectent des donnĂ©es via SNMP, IPMI, et transmettent tout cela au prĂ©traitement.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDBLes collecteurs sont encerclés par une ligne orange.

Dans Zabbix, il existe des éléments de données agrégés calculés qui sont nécessaires pour agréger les vérifications. Si nous les avons, nous récupérons les données pour eux directement depuis le ValueCache.

Prétraitement HistoryCache

Tous les collecteurs utilisent le ConfigurationCache pour obtenir des tùches. Ensuite, ils les transmettent au prétraitement.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Le prétraitement utilise le ConfigurationCache pour obtenir les étapes de prétraitement. Il traite ces données de différentes maniÚres.

AprĂšs le traitement des donnĂ©es avec le prĂ©traitement, nous les sauvegardons dans le HistoryCache pour traitement. C'est la fin de la collecte de donnĂ©es et nous passons au principal processus dans Zabbix — history syncer, car c'est une architecture monolithique.

Remarque : le prĂ©traitement est une opĂ©ration assez lourde. À partir de la version 4.2, il a Ă©tĂ© dĂ©placĂ© sur le proxy. Si vous avez un Zabbix trĂšs volumineux avec un grand nombre d'Ă©lĂ©ments de donnĂ©es et une frĂ©quence de collecte Ă©levĂ©e, cela facilite considĂ©rablement le travail.

ValueCache, historique et cache des tendances

Le synchroniseur d'historique est le processus principal qui traite de maniÚre atomique chaque élément de données, c'est-à-dire chaque valeur.

Le synchroniseur d'historique prend les valeurs du Cache d'historique et vérifie s'il existe des déclencheurs pour les calculs dans la Configuration. S'il y en a, il calcule.

Le synchroniseur d'historique crĂ©e un Ă©vĂ©nement, une escalade, pour gĂ©nĂ©rer des alertes si nĂ©cessaire selon la configuration, et les enregistre. S'il y a des dĂ©clencheurs pour un traitement ultĂ©rieur, alors il mĂ©morise cette valeur dans le ValueCache, afin de ne pas se rĂ©fĂ©rer Ă  la table d’historique. Ainsi, le ValueCache se remplit des donnĂ©es nĂ©cessaires pour le calcul des dĂ©clencheurs et des Ă©lĂ©ments calculĂ©s.

Le synchroniseur d'historique enregistre toutes les données dans la base de données, et celle-ci les envoie sur le disque. Le processus de traitement se termine ici.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Mise en cache dans la base de données

Du cÎté de la base de données, il existe différents caches lorsque vous souhaitez voir des graphiques ou des rapports sur les événements :

  • Innodb_buffer_pool du cĂŽtĂ© de MySQL ;
  • shared_buffers du cĂŽtĂ© de PostgreSQL ;
  • effective_cache_size du cĂŽtĂ© d'Oracle ;
  • shared_pool du cĂŽtĂ© de DB2.

Il existe encore beaucoup d'autres caches, mais ce sont les principaux pour toutes les bases de donnĂ©es. Ils permettent de garder en mĂ©moire vive les donnĂ©es souvent nĂ©cessaires pour les requĂȘtes. Ils ont leurs propres technologies pour cela.

La performance de la base de données est critique

Le serveur Zabbix collecte constamment des données et les enregistre. Lors du redémarrage, il lit également l'historique pour remplir le ValueCache. Il utilise des scripts et des rapports Zabbix API, qui est construit sur la base de l'interface Web. L'API Zabbix interroge la base de données et obtient les données nécessaires pour les graphiques, les rapports, les listes d'événements et les problÚmes récents.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Pour la visualisation — Grafana. C'est une solution populaire parmi nos utilisateurs. Elle peut envoyer directement des requĂȘtes via l'API Zabbix Ă  la base de donnĂ©es et crĂ©e une certaine concurrence pour l'obtention des donnĂ©es. Par consĂ©quent, une configuration plus fine et de meilleure qualitĂ© de la base de donnĂ©es est nĂ©cessaire pour rĂ©pondre Ă  la rapide dĂ©livrance de rĂ©sultats et au test.

Housekeeper

Le troisiĂšme appel de performance dans Zabbix est le nettoyage de l'historique par Housekeeper. Il respecte tous les paramĂštres — dans les Ă©lĂ©ments de donnĂ©es, il est indiquĂ© combien de temps conserver la dynamique des changements (tendances) en jours.

Nous calculons TrendsCache à la volée. Lorsque les données arrivent, nous les agrégeons sur une heure et les enregistrons dans les tables pour la dynamique des changements de tendances.

Le Housekeeper s'exécute et supprime des informations de la base de données via des « selects » ordinaires. Ce n'est pas toujours efficace, comme le montrent les graphiques de performance des processus internes.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Le graphique rouge montre que le synchroniseur d'historique est constamment occupé. Le graphique orange en haut représente le Housekeeper, qui s'exécute en continu. Il attend que la base de données supprime toutes les lignes qu'il a spécifiées.

Quand faut-il désactiver le Housekeeper ? Par exemple, s'il y a un « Item ID » et qu'il faut supprimer les 5 000 derniÚres lignes sur une certaine période. Bien sûr, cela se fait par index. Mais en général, le dataset est trÚs volumineux, et la base de données lit toujours depuis le disque et le charge en cache. Cela représente toujours une opération trÚs coûteuse pour la base de données et, selon la taille de la base, cela peut entraßner des problÚmes de performance.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Le Housekeeper peut ĂȘtre simplement dĂ©sactivĂ©. Dans l'interface Web, il existe un paramĂštre dans « Administration gĂ©nĂ©rale » pour le Housekeeper. Nous dĂ©sactivons le Housekeeping interne pour l'historique interne des tendances et il ne gĂšre plus cela.

Le Housekeeper a été désactivé, les graphiques se sont stabilisés - quels problÚmes pourraient survenir dans ce cas et que pourrait-il faire pour résoudre le troisiÚme appel de performance ?

Partitionnement - ou sectionnement

En général, le partitionnement est configuré de différentes maniÚres sur chaque base de données relationnelle que j'ai mentionnée. Chacune a sa propre technologie, mais elles se ressemblent dans l'ensemble. La création d'une nouvelle partition entraßne souvent certains problÚmes.

En général, les partitions sont configurées en fonction de la « setup » - la quantité de données générées par jour. En rÚgle générale, le partitionnement est établi sur une journée, c'est le minimum. Pour les tendances, une nouvelle partition est établie sur un mois.

Les valeurs peuvent changer en cas de trÚs grande « setup ». Si la petite « setup » est de moins de 5 000 nvps (nouvelles valeurs par seconde), la moyenne est entre 5 000 et 25 000, tandis que la grande est au-dessus de 25 000 nvps. Ce sont de grandes et trÚs grandes installations qui nécessitent un réglage minutieux de la base de données.

Sur de trĂšs grandes installations, un segment d'une journĂ©e peut ne pas ĂȘtre optimal. J'ai vu des partitions sur MySQL dĂ©passant 40 Go ou plus par jour. C'est un volume de donnĂ©es trĂšs Ă©levĂ© qui peut poser des problĂšmes, et il doit ĂȘtre rĂ©duit.

Quels sont les avantages du partitionnement ?

Partitionnement des tables. Cela consiste souvent en des fichiers sĂ©parĂ©s sur le disque. Le plan de requĂȘtes choisit de maniĂšre plus optimale une partition. En gĂ©nĂ©ral, la partition est utilisĂ©e par plage — c'est Ă©galement vrai pour Zabbix. Nous utilisons ici un «timestamp» — le temps depuis le dĂ©but de l'Ă©poque. Ce sont des nombres ordinaires. Vous dĂ©finissez le dĂ©but et la fin de la journĂ©e — c'est la partition.

Suppression rapide — SUPPRIMER. Un fichier/sous-table est sĂ©lectionnĂ©, plutĂŽt qu'un Ă©chantillon de lignes Ă  supprimer.

AccĂ©lĂšre considĂ©rablement la rĂ©cupĂ©ration des donnĂ©es SELECT — utilise une ou plusieurs partitions, plutĂŽt que toute la table. Si vous demandez des donnĂ©es datant de deux jours, elles sont rĂ©cupĂ©rĂ©es depuis la base de donnĂ©es plus rapidement, car il suffit de charger en cache et de fournir un seul fichier, au lieu d'une grande table.

Souvent, cela accĂ©lĂšre Ă©galement de nombreuses bases de donnĂ©es INSERT — les insertions dans la sous-table.

TimescaleDB

Pour la version 4.2, nous avons examiné TimescaleDB. C'est une extension pour PostgreSQL avec une interface native. L'extension fonctionne efficacement avec des données de séries temporelles, tout en conservant les avantages des bases de données relationnelles. TimescaleDB partitionne également automatiquement.

Dans TimescaleDB, il existe le concept de hypertable (hypertable), que vous crĂ©ez. Elle contient des chunks — partitions. Les chunks sont des fragments de l'hypertable gĂ©rĂ©s automatiquement, qui n'affectent pas les autres fragments. Chaque chunk a sa propre plage temporelle.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

TimescaleDB vs PostgreSQL

TimescaleDB fonctionne vraiment efficacement. Les dĂ©veloppeurs de l'extension affirment qu'ils utilisent un algorithme de traitement des requĂȘtes plus appropriĂ©, notamment pour les inserts. Lorsque les tailles des inserts de dataset augmentent, l'algorithme maintient des performances constantes.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

AprÚs 200 millions de lignes, PostgreSQL commence généralement à fortement ralentir et perd en performance jusqu'à 0. TimescaleDB permet d'insérer des «inserts» efficacement, quel que soit le volume de données.

Installation

Installer TimescaleDB est assez simple pour tous les paquets. Dans documentation tout est dĂ©crit en dĂ©tail — cela dĂ©pend des paquets officiels de PostgreSQL. TimescaleDB peut Ă©galement ĂȘtre construit et compilĂ© manuellement.

Pour la base de données Zabbix, il suffit d'activer l'extension :

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

Vous activez l' extension et la créez pour la base de données Zabbix. La derniÚre étape consiste à créer l'hypertable.

Migrez les tables d'historique vers TimescaleDB

Il existe une fonction spéciale pour cela create_hypertable:

SELECT create_hypertable('history', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_unit', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_log', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_text', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('history_str', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('trends', 'clock', chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable('trends_unit', 'clock', chunk_time_interval => 86400, migrate_data => true);
UPDATE config SET db_extension='timescaledb', hk_history_global=1, hk_trends_global=1

La fonction a trois paramĂštres. Le premier — la table dans la base de donnĂ©es, pour laquelle il faut crĂ©er une hypertable. Le deuxiĂšme — le champ, selon lequel il faut crĂ©er chunk_time_interval — l'intervalle des partitions de chunks Ă  utiliser. Dans mon cas, l'intervalle est d'un jour — 86 400.

Le troisiĂšme paramĂštre — migrer_donnĂ©es. Si vous mettez true, toutes les donnĂ©es actuelles sont transfĂ©rĂ©es dans les chunks dĂ©jĂ  créés. J'ai utilisĂ© migrer_donnĂ©es. J'avais environ 1 To, ce qui a pris plus d'une heure. MĂȘme dans certains cas lors des tests, j'ai supprimĂ© les anciennes donnĂ©es d'historique inutiles pour ne pas les transfĂ©rer.

La derniĂšre Ă©tape — UPDATE: dans db_extension nous fixons timescaledb, afin que la base de donnĂ©es comprenne qu'il existe cette extension. Zabbix l'active et utilise correctement la syntaxe et les requĂȘtes Ă  la base de donnĂ©es — ces fonctionnalitĂ©s nĂ©cessaires pour TimescaleDB.

Configuration matérielle

J'ai utilisĂ© deux serveurs. Le premier — machine VMware. Elle est assez petite : 20 processeurs IntelÂź XeonÂź CPU E5-2630 v 4 @ 2.20GHz, 16 Go de RAM et un disque SSD de 200 Go.

J'ai installĂ© PostgreSQL 10.8 dessus avec l'OS Debian 10.8-1.pgdg90+1 et un systĂšme de fichiers xfs. J'ai fait les rĂ©glages minimaux pour utiliser cette base de donnĂ©es, exceptĂ© ce que Zabbix va utiliser lui-mĂȘme.

Sur cette mĂȘme machine se trouvaient le serveur Zabbix, PostgreSQL et les agents de charge. J'avais 50 agents actifs qui utilisaient LoadableModule, afin de gĂ©nĂ©rer trĂšs rapidement diffĂ©rents rĂ©sultats : chiffres, chaĂźnes. Je remplissais la base avec une grande quantitĂ© de donnĂ©es.

Initialement, la configuration contenait 5 000 Ă©lĂ©ments de donnĂ©es par hĂŽte. Presque chaque Ă©lĂ©ment contenait un dĂ©clencheur, afin que cela ressemble Ă  de vraies installations. Dans certains cas, il y avait plus d'un dĂ©clencheur. Pour un nƓud du rĂ©seau, il y avait 3 000 Ă  7 000 dĂ©clencheurs.

L'intervalle de mise Ă  jour des Ă©lĂ©ments de donnĂ©es — 4 Ă  7 secondesJ'ai rĂ©gulĂ© la charge en utilisant non seulement 50 agents, mais j'en ai ajoutĂ© d'autres. De plus, grĂące aux Ă©lĂ©ments de donnĂ©es dynamiques, j'ai ajustĂ© la charge et rĂ©duit l'intervalle de mise Ă  jour Ă  4 secondes.

PostgreSQL. 35 000 nvps

Mon premier lancement sur ce matĂ©riel s'est fait avec PostgreSQL pur — 35 000 valeurs par seconde. Comme on peut le voir, l'insertion des donnĂ©es prend des fractions de seconde — tout fonctionne bien et rapidement. La seule chose est que le disque SSD de 200 Go se remplit rapidement.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Voici le tableau de bord standard de performance de Zabbix — serveurs.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Le premier graphique bleu montre le nombre de valeurs par seconde. Le second graphique à droite montre la charge des processus de collecte. Le troisiÚme indique la charge des processus internes de collecte : history syncers et Housekeeper, qui a fonctionné ici pendant une durée suffisante.

Le quatriĂšme graphique montre l'utilisation de HistoryCache. C'est une sorte de tampon avant l'insertion dans la base de donnĂ©es. Le cinquiĂšme graphique vert indique l'utilisation de ValueCache, c'est-Ă -dire combien de hits de ValueCache pour les dĂ©clencheurs — ce sont plusieurs milliers de valeurs par seconde.

PostgreSQL. 50 000 nvps

Ensuite, j'ai augmentĂ© la charge Ă  50 000 valeurs par seconde sur ce mĂȘme matĂ©riel.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Lors du chargement avec Housekeeper, l'insertion de 10 000 valeurs s'écrivait en 2 à 3 secondes.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB
Housekeeper commence déjà à interférer avec le fonctionnement.

D'aprùs le troisiùme graphique, on peut voir que, dans l'ensemble, la charge des trappeurs et des history syncers est encore à 60 %. Sur le quatriùme graphique, HistoryCache commence à se remplir assez activement pendant le fonctionnement de Housekeeper. Il est rempli à 20 % — soit environ 0,5 Go.

PostgreSQL. 80 000 nvps

Ensuite, j'ai augmenté la charge à 80 000 valeurs par seconde. Cela représente environ 400 000 éléments de données et 280 000 déclencheurs.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB
L'insertion avec la charge de trente history syncers est déjà suffisamment élevée.

J'ai également augmenté divers paramÚtres : history syncers, caches.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Sur mon matĂ©riel, la charge des history syncers atteignait son maximum. HistoryCache s'est rapidement rempli de donnĂ©es — des donnĂ©es ont Ă©tĂ© accumulĂ©es dans le tampon pour traitement.

Tout ce temps, j'ai surveillé l'utilisation du processeur, de la mémoire vive et d'autres paramÚtres systÚme, et j'ai découvert que l'utilisation des disques était maximale.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

J'ai atteint l'utilisation des capacités maximales du disque sur ce matériel et cette machine virtuelle. Avec une telle intensité, PostgreSQL a commencé à vider les données assez activement, et le disque n'était plus capable de fonctionner correctement pour les écritures et les lectures.

DeuxiĂšme serveur

J'ai pris un autre serveur qui avait déjà 48 processeurs et 128 Go de RAM. Je l'ai optimisé en installant 60 history syncer, et j'ai obtenu des performances acceptables.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

En fait, c'est dĂ©jĂ  la limite de performance oĂč il faut prendre des mesures.

TimescaleDB. 80 000 nvps

Mon principal objectif est d'évaluer les capacités de TimescaleDB sous la charge de Zabbix. 80 000 valeurs par seconde, c'est beaucoup, surtout avec une fréquence de collecte des métriques (à part Yandex, bien sûr) et un « setup » assez important.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Sur chaque graphique, il y a un creux — c'est lors de la migration des donnĂ©es. AprĂšs ces creux, le profil de charge de history syncer sur le serveur Zabbix a Ă©normĂ©ment changĂ© — il a chutĂ© de trois fois.

TimescaleDB permet d'insérer des données presque trois fois plus vite et d'utiliser moins d'HistoryCache.

En conséquence, les données vous parviendront en temps opportun.

TimescaleDB. 120 000 nvps

Ensuite, j'ai augmentĂ© le nombre d'Ă©lĂ©ments de donnĂ©es Ă  500 000. Mon principal objectif Ă©tait d'Ă©valuer les capacitĂ©s de TimescaleDB — j'ai obtenu une valeur estimĂ©e de 125 000 valeurs par seconde.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

C'est un « setup » fonctionnel qui peut fonctionner longtemps. Mais comme mon disque n'était que de 1,5 To, je l'ai rempli en quelques jours.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Le plus important, c'est qu'en mĂȘme temps, de nouvelles partitions de TimescaleDB Ă©taient créées.

Pour les performances, cela est complÚtement imperceptible. Lorsque des partitions sont créées dans MySQL, par exemple, c'est tout autre chose. Cela se produit généralement la nuit, car cela bloque les insertions globales, les opérations sur les tables et peut causer une dégradation du service. Ce n'est pas le cas avec TimescaleDB.

À titre d'exemple, je vais montrer un graphique parmi de nombreux autres dans la communautĂ©. Sur l'image, TimescaleDB est activĂ©, ce qui a permis de rĂ©duire la charge d'utilisation de io.weight sur le processeur. L'utilisation des Ă©lĂ©ments des processus internes a Ă©galement diminuĂ©. D'ailleurs, c'est une machine virtuelle classique sur des disques classiques, et non sur SSD.

Haute performance et partitionnement natif : Zabbix avec support de TimescaleDB

Conclusions

TimescaleDB est une bonne solution pour de petits « setup », qui sont limités par les performances du disque. Cela permettra de continuer à bien fonctionner jusqu'à ce que la base de données soit migrée sur un matériel plus rapide.

TimescaleDB est facile à configurer, offre un gain de performance, fonctionne bien avec Zabbix et présente des avantages par rapport à PostgreSQL..

Si vous utilisez PostgreSQL et que vous ne prévoyez pas de le changer, je recommande d'utiliser PostgreSQL avec l'extension TimescaleDB en tandem avec Zabbix.Cette solution fonctionne efficacement jusqu'à des « setup » moyens.

Quand nous parlons de « haute performance », nous faisons rĂ©fĂ©rence Ă  HighLoad++. Il ne reste plus longtemps Ă  attendre pour dĂ©couvrir les technologies et pratiques permettant aux services de gĂ©rer des millions d'utilisateurs. La liste des rapports pour les 7 et 8 novembre est dĂ©jĂ  Ă©tablie, mais les meetups peuvent encore ĂȘtre proposĂ©s.

Abonnez-vous Ă  notre newsletter et telegram, oĂč nous dĂ©voilons des astuces pour la prochaine confĂ©rence, et dĂ©couvrez comment en tirer le meilleur parti.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster