Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Bonjour à tous. Voici la transcription de la présentation du Big Monitoring Meetup 4.

Prometheus – un systùme de surveillance de divers systùmes et services, qui permet aux administrateurs systùme de collecter des informations sur les paramùtres actuels des systùmes et de configurer des alertes pour recevoir des notifications en cas d'anomalies dans le fonctionnement des systùmes.

La prĂ©sentation comparera Thanos et VictoriaMetrics — des projets pour le stockage Ă  long terme des mĂ©triques Prometheus.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Lire la vidéo

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Je vais d'abord parler de Prometheus. C'est un systÚme de surveillance qui collecte des métriques à partir de cibles définies et les stocke dans un stockage local. Prometheus peut enregistrer des métriques dans un stockage distant, générer des alertes et créer des rÚgles d'enregistrement.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Limitations de Prometheus :

  • Il n'a pas de vue de requĂȘte globale. C'est quand vous avez plusieurs instances indĂ©pendantes de Prometheus. Elles collectent des mĂ©triques. Et vous souhaitez interroger toutes ces mĂ©triques collectĂ©es Ă  partir des diffĂ©rentes instances de Prometheus. Prometheus ne le permet pas.
  • La performance de Prometheus est limitĂ©e Ă  un seul serveur. Prometheus ne peut pas automatiquement se mettre Ă  l'Ă©chelle sur plusieurs serveurs. Vous devez manuellement rĂ©partir vos cibles entre plusieurs Prometheus.
  • Le volume de mĂ©triques dans Prometheus est limitĂ© Ă  un seul serveur pour la mĂȘme raison qu'il ne peut pas se mettre Ă  l'Ă©chelle automatiquement sur plusieurs serveurs.
  • Il n'est pas si facile d'organiser la sauvegarde des donnĂ©es dans Prometheus.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Quelles sont les solutions Ă  ces problĂšmes / tĂąches ?

Les solutions sont les suivantes :

Toutes ces solutions visent le stockage distant des données collectées par Prometheus. Elles abordent le problÚme de stockage distant de la diapositive précédente de différentes maniÚres. Dans cette présentation, je ne parlerai que des deux premiÚres solutions : Thanos et VictoriaMetrics.

Pour la premiÚre fois, des informations sur Thanos sont apparues dans ce lien. L'architecture y est décrite Thanos et comment cela fonctionne.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos prend les données que Prometheus a sauvegardées sur le disque local et les copie dans S3, dans GCS ou dans un autre stockage d'objets.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Ainsi, Thanos fournit une vue de requĂȘte globale. Vous pouvez interroger les donnĂ©es sauvegardĂ©es dans le stockage d'objets depuis plusieurs instances de Prometheus.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos prend en charge PromQL et l'API de requĂȘte de Prometheus..

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos utilise le code de Prometheus pour le stockage des données.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos est dĂ©veloppĂ© par les mĂȘmes dĂ©veloppeurs que Prometheus.

À propos de VictoriaMetrics. Voici lien, oĂč nous avons parlĂ© pour la premiĂšre fois de VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics obtient des données de plusieurs Prometheus via l'API write à distance un protocole pris en charge par Prometheus.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics fournit une vue de requĂȘte globale, car plusieurs instances de Prometheus peuvent Ă©crire des donnĂ©es dans une seule instance de VictoriaMetrics. Par consĂ©quent, vous pouvez interroger toutes ces donnĂ©es.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics prend Ă©galement en charge, tout comme Thanos, le PromQL et l'API de requĂȘte de Prometheus.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Contrairement à Thanos, le code source de VictoriaMetrics a été écrit de zéro et optimisé pour la vitesse et l'utilisation des ressources.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics, contrairement Ă  Thanos, peut Ă©voluer Ă  la fois verticalement et horizontalement. Il y a une version Ă  nƓud unique, qui se dĂ©veloppe verticalement. Vous pouvez commencer avec un processeur et 1 Go de RAM et progressivement augmenter jusqu'Ă  une centaine de processeurs et 1 To de RAM. VictoriaMetrics peut utiliser toutes ces ressources. Sa performance augmentera d'environ 100 fois par rapport Ă  un systĂšme Ă  un cƓur.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

L'histoire de Thanos a commencé en novembre 2017, avec le premier commit public. Avant cela, Thanos a été développé en interne par la société improbable.io.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

En juin 2019, un lancement emblĂ©matique 0.5.0 a eu lieu, oĂč le protocole gossip a Ă©tĂ© supprimĂ©. Il a Ă©tĂ© retirĂ© de Thanos car il a montrĂ© des performances peu satisfaisantes. Souvent, le cluster Thanos ne fonctionnait pas correctement, les nƓuds ne se connectant pas correctement en raison du protocole gossip. C'est pourquoi il a Ă©tĂ© dĂ©cidĂ© de l'enlever. Je pense que c'Ă©tait la bonne dĂ©cision.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Dans le mĂȘme mois de juin 2019, ils ont soumis la demande numĂ©ro 256 dans Fondation Cloud Native Computing.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Et aprÚs quelques mois, Thanos a été accepté dans Fondation Cloud Native Computing, qui comprend Prometheus, Kubernetes et d'autres projets populaires.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

En janvier 2018, le développement de VictoriaMetrics a commencé.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

En septembre 2018, j'ai mentionné VictoriaMetrics publiquement pour la premiÚre fois.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

En dĂ©cembre 2018, la version Ă  nƓud unique a Ă©tĂ© publiĂ©e.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

En mai 2019 les sources ont Ă©tĂ© publiĂ©es en version Ă  nƓud unique et en version cluster. En juin 2019, tout comme Thanos, nous avons soumis une demande Ă  la fondation CNCF sous le numĂ©ro

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

. Nous avons soumis notre demande un jour avant que Thanos ne soumette la sienne. 255Mais, malheureusement, nous n'avons toujours pas été acceptés. Nous avons besoin de l'aide de la communauté.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Examinons les diapositives les plus importantes montrant l'architecture de Thanos et VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Commençons par Thanos. Les composants jaunes sont des composants de Prometheus. Tout le reste est des composants de Thanos. Commençons par le composant le plus important. Thanos Sidecar est le composant qui s'installe à cÎté de chaque Prometheus. Il s'occupe de charger les données de Prometheus du stockage local vers S3 ou un autre stockage d'objets.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics fournit une vue de requĂȘte globale, car plusieurs instances de Prometheus peuvent Ă©crire des donnĂ©es dans une seule instance de VictoriaMetrics. Par consĂ©quent, vous pouvez interroger toutes ces donnĂ©es.

Il existe Ă©galement un composant appelĂ© Thanos Store Gateway, capable de lire ces donnĂ©es Ă  partir de l'Object Storage lors des requĂȘtes entrantes de Thanos Query. Thanos Query implĂ©mente PromQL et l'API Prometheus. Autrement dit, il se prĂ©sente Ă  l'extĂ©rieur comme Prometheus. Il accepte les requĂȘtes PromQL, les envoie au Thanos Store Gateway, qui extrait les donnĂ©es nĂ©cessaires de l'Object Storage et les renvoie.

Cependant, dans notre Object Storage, nous stockons des données sans les deux derniÚres heures en raison des particularités de l'implémentation de Thanos Sidecar, qui ne peut pas charger les deux derniÚres heures dans l'Object Storage S3, car pour ces deux derniÚres heures, Prometheus n'a pas encore créé de fichiers dans le stockage local.

Comment contourner ce problĂšme ? Thanos Query, en plus d'envoyer des requĂȘtes au Thanos Store Gateway, envoie parallĂšlement des requĂȘtes Ă  chaque Thanos Sidecar situĂ© Ă  proximitĂ© de Prometheus.

Et Thanos Sidecar, Ă  son tour, relaye les requĂȘtes vers Prometheus et extrait les donnĂ©es des deux derniĂšres heures.

En plus de ces composants, il y a un autre composant optionnel sans lequel Thanos fonctionnerait mal. C'est Thanos Compact, qui s'occupe de la fusion de petits fichiers dans l'Object Storage en fichiers plus volumineux, qui ont été chargés ici par les Thanos Sidecars. Thanos Sidecar charge des fichiers contenant des données pour une période de deux heures. Si ces fichiers ne sont pas fusionnés en fichiers plus volumineux, leur nombre peut augmenter de maniÚre significative. Plus il y a de tels fichiers, plus il faut de mémoire pour Thanos Store Gateway, et plus les ressources nécessaires pour le transfert de données sur le réseau et les métadonnées augmentent. Le fonctionnement de Thanos Store Gateway devient inefficace. C'est pourquoi il est impératif de lancer Thanos Compact, qui fusionne les petits fichiers en fichiers plus volumineux, afin de réduire leur nombre et de diminuer la surcharge sur Thanos Store Gateway.

Il y a également un composant appelé Thanos Ruler. Il exécute les rÚgles d'alerte de Prometheus et peut calculer les rÚgles d'enregistrement de Prometheus pour enregistrer à nouveau des données dans l'Object Storage. Cependant, il n'est pas recommandé d'utiliser ce composant, car il tend à renvoyer des données incomplÚtes..

Voilà à quoi ressemble le schéma simple de Thanos.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Comparons maintenant avec le schéma de VictoriaMetrics.

VictoriaMetrics propose 2 versions : une version Single-node et une version cluster. La version Single-node fonctionne sur un seul ordinateur. Dans la version Single-node, il n'y a pas ces composants, juste un binaire unique. Ce binaire apparaĂźt dans la diapositive sous la forme de ce carrĂ©. Tout ce qui se trouve Ă  l'intĂ©rieur du carrĂ© reprĂ©sente le contenu du fichier binaire de la version Single-node. Vous n'avez pas besoin de vous en soucier. Il vous suffit de lancer le binaire — et tout fonctionne.

La version cluster est plus complexe. Elle comprend trois composants diffĂ©rents : vmselect, vminsert et vmstorage. Leurs noms indiquent clairement leurs fonctions respectives. Le composant Insert reçoit des donnĂ©es dans diffĂ©rents formats : via l'API remote write de Prometheus, le protocole line d'Influx, le protocole Graphite et celui d'OpenTSDB. Le composant Insert les reçoit, les analyse et les rĂ©partit entre les composants de stockage existants oĂč les donnĂ©es sont ensuite conservĂ©es. Le composant Select, quant Ă  lui, prend des requĂȘtes en PromQL. Il implĂ©mente PromQL, ainsi que l'API de requĂȘtes de Prometheus, et peut ĂȘtre utilisĂ© comme une alternative Ă  Prometheus dans Grafana ou d'autres clients API de Prometheus. Select prend une requĂȘte promql, l'analyse, lit les donnĂ©es nĂ©cessaires pour effectuer cette requĂȘte Ă  partir des nƓuds de stockage, les traite et renvoie la rĂ©ponse.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Comparons la complexité d'installation de Thanos et de VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Commençons par Thanos. Avant de commencer à utiliser Thanos, il faut créer un bucket dans un stockage d'objets, tel que S3 ou GCS, afin que le Thanos Sidecar puisse y enregistrer des données.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Ensuite, pour chaque instance de Prometheus, il est nécessaire d'installer le Thanos Sidecar. Il ne faut pas oublier de désactiver la compression des données dans Prometheus. La compression des données compresse périodiquement les données dans le stockage local de Prometheus pour réduire la consommation de ressources.

Lorsque vous installez le Thanos Sidecar sur vos instances de Prometheus, vous devez dĂ©sactiver cette compression des donnĂ©es, car le Thanos Sidecar ne fonctionne pas correctement lorsque la compression des donnĂ©es est activĂ©e. Cela signifie que votre Prometheus commence Ă  enregistrer des donnĂ©es par blocs de deux heures et cesse de fusionner ces blocs en plus gros. Par consĂ©quent, si vous effectuez des requĂȘtes dĂ©passant la durĂ©e des deux derniĂšres heures, elles ne fonctionneront pas aussi efficacement que si la compression des donnĂ©es Ă©tait activĂ©e.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

C'est pourquoi Thanos recommande de réduire la durée de conservation des données dans le stockage local à 6-8 heures afin de diminuer cette surcharge de nombreux petits blocs.

AprÚs avoir installé le Thanos Sidecar, vous devez installer deux composants pour chaque bucket de stockage d'objets. Ce sont Thanos Compactor et Thanos Store Gateway.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

AprÚs cela, il est nécessaire d'installer Thanos Query et de le configurer pour qu'il puisse se connecter à tous les Thanos Store Gateway disponibles, ainsi qu'à tous les Thanos Sidecar.

Il peut y avoir un petit problĂšme ici.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Vous devez configurer une connexion fiable et sécurisée de Thanos Query à ces composants. Si vous avez des Prometheus situés dans différents centres de données ou dans des VPC distincts, les connexions externes y sont interdites. Cependant, pour faire fonctionner Thanos Query, vous devez trouver un moyen d'établir cette connexion.

Si vous avez de nombreux centres de donnĂ©es, la fiabilitĂ© de l'ensemble du systĂšme en souffre. Thanos Query doit maintenir des connexions avec tous les Thanos Sidecar situĂ©s dans diffĂ©rents centres de donnĂ©es. À chaque requĂȘte entrante, il enverra des requĂȘtes Ă  tous les Thanos Sidecar. Si la connexion est interrompue, vous obtiendrez soit un ensemble de donnĂ©es incomplet, soit un message disant que le « cluster ne fonctionne pas ».

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Avec VictoriaMetrics, c'est un peu plus simple. Pour la version à nƓud unique, il suffit de lancer un binaire et tout fonctionne.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Pour la version en cluster, il suffit de lancer les trois types de composants mentionnĂ©s ci-dessus en quantitĂ©s nĂ©cessaires ou d'utiliser helm chart pour automatiser le lancement des composants dans Kubernetes. Nous prĂ©voyons Ă©galement de crĂ©er un opĂ©rateur Kubernetes. Le helm chart ne couvre pas certains cas et peut vous causer des problĂšmes. Par exemple, il permet de rĂ©duire le nombre de nƓuds de stockage, ce qui entraĂźne une perte de donnĂ©es.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

AprĂšs avoir lancĂ© un binaire ou la version en cluster, il vous suffit d'ajouter Ă  la configuration de Prometheus la configuration pour l'URL de remote write, afin qu'il commence Ă  enregistrer les donnĂ©es Ă  la fois dans le stockage local et dans le stockage distant. Comme vous l'avez remarquĂ©, cette configuration doit ĂȘtre beaucoup plus fiable par rapport Ă  la configuration Thanos. Nous n'avons pas besoin de maintenir une connexion de VictoriaMetrics Ă  tous les Prometheus, car les Prometheus se connectent eux-mĂȘmes Ă  VictoriaMetrics et transmettent les donnĂ©es.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Examinons la prise en charge de Thanos et de VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos doit surveiller Sidecar pour s'assurer qu'il continue de charger les donnĂ©es dans l'Object Storage. Il peut arrĂȘter ce chargement en raison d'erreurs de tĂ©lĂ©chargement, par exemple si votre connexion rĂ©seau Ă  l'Object Storage est temporairement interrompue ou si l'Object Storage devient temporairement indisponible. À ce moment-lĂ , Thanos Sidecar le remarquera, signalera l'erreur, peut se fermer et ensuite cesser de fonctionner. Si vous ne le surveillez pas, les donnĂ©es cesseront d'ĂȘtre transmises Ă  l'Object Storage. Si le temps de rĂ©tention (6 Ă  8 heures recommandĂ©) s'Ă©coule, vous perdrez les donnĂ©es qui n'ont pas Ă©tĂ© transfĂ©rĂ©es dans l'Object Storage.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Les compresseurs Thanos peuvent cesser de fonctionner en raison de concurrences avec Sidecar.Les compresseurs prennent des données de l'Object Storage et les fusionnent en morceaux de données plus volumineux. Comme les compresseurs ne sont pas synchronisés avec les Sidecars, il peut se produire ce qui suit : le Sidecar n'a pas encore fini d'écrire un bloc, le Compactor décide que ce bloc est complÚtement écrit. Le Compactor commence à le lire. Il lit le bloc de maniÚre incomplÚte et cesse de fonctionner. Voir les détails. ici.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Le Store Gateway peut renvoyer des donnĂ©es inconsistantes en raison des courses entre le Compactor et les Sidecars. C'est le mĂȘme problĂšme puisque le Store Gateway n'est pas synchronisĂ© avec les Compactors et les Sidecars. Par consĂ©quent, des conditions de course peuvent se produire lorsque le Store Gateway ne voit pas certaines donnĂ©es, ou voit des donnĂ©es supplĂ©mentaires.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Le composant Query dans Thanos renvoie par dĂ©faut un rĂ©sultat partiel si certains Sidecars ou le Store Gateway ne sont pas disponibles Ă  ce moment-lĂ . Vous obtiendrez une partie des donnĂ©es et ne saurez mĂȘme pas que vous n'avez pas reçu toutes les donnĂ©es. C'est ainsi qu'il fonctionne par dĂ©faut. Dans une situation similaire, VictoriaMetrics retourne les donnĂ©es marquĂ©es comme partielles.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Contrairement Ă  Thanos, VictoriaMetrics perd rarement des donnĂ©es. MĂȘme si la connexion de Prometheus Ă  VictoriaMetrics est interrompue, ce n'est pas un problĂšme, car Prometheus continue d'Ă©crire les nouvelles donnĂ©es entrantes dans le Write Ahead Log, dont la taille est de 2 heures. Si vous restaurez la connexion Ă  VictoriaMetrics dans les deux heures, les donnĂ©es ne seront pas perdues. Prometheus peut continuer Ă  Ă©crire des donnĂ©es aprĂšs la restauration de la connexion Ă  VictoriaMetrics..

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Contrairement Ă  Thanos, qui enregistre les donnĂ©es dans un stockage d'objets seulement aprĂšs deux heures, Prometheus rĂ©plique automatiquement les donnĂ©es via le protocole remote write dans un stockage distant, tel que VictoriaMetrics. Vous n'avez pas Ă  craindre la perte de stockage local dans Prometheus. Si jamais il perd le stockage local, vous ne perdrez au pire que les derniĂšres secondes de donnĂ©es qui n'ont pas eu le temps d'ĂȘtre enregistrĂ©es dans le stockage distant.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Kubernetes gÚre automatiquement le cluster contrairement à Thanos. Tous les composants de Thanos sont difficiles à placer dans un seul cluster Kubernetes, à la différence des composants cluster de VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

La mise Ă  jour vers une nouvelle version de VictoriaMetrics est trĂšs simple. Il suffit d'arrĂȘter VictoriaMetrics, de mettre Ă  jour les binaires et de relancer. Lors de l'arrĂȘt via le signal SIGINT, tous les binaires de VictoriaMetrics effectuent un arrĂȘt en douceur. Ils sauvegardent correctement les donnĂ©es nĂ©cessaires et ferment correctement les connexions entrantes pour ne rien perdre. Vous ne perdrez donc rien lors de la mise Ă  jour.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Il est trÚs simple d'étendre le cluster de VictoriaMetrics. Il suffit d'ajouter les composants nécessaires et de continuer à travailler.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

À propos des Ă©cueils dans Thanos et VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos a plusieurs Ă©cueils. Prometheus doit conserver les donnĂ©es des deux derniĂšres heures. Si elles sont perdues, vous les perdez complĂštement, car elles n'ont pas encore eu le temps d'ĂȘtre enregistrĂ©es dans un stockage d'objets tel que S3.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Le composant Store Gateway et le composant compactor peuvent nécessiter beaucoup de mémoire pour travailler avec un grand stockage d'objets s'il y a de nombreux petits fichiers. Plus le nombre et le volume de fichiers sont élevés, plus la mémoire vive requise par Store Gateway et compactor pour stocker les méta-informations est importante. Thanos a de nombreux problÚmes concernant cela. Le Store Gateway et le compactor tombent en panne avec des volumes de données enregistrées moyens..

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos se vantent qu'il peut se dĂ©velopper indĂ©finiment en fonction de vos Prometheus. En rĂ©alitĂ©, c'est faux. Toutes les requĂȘtes passent par le composant Query, qui doit interroger en parallĂšle tous les composants Store Gateway et tous les composants Sidecar, extraire les donnĂ©es et ensuite les prĂ©traiter. Évidemment, la vitesse des requĂȘtes est limitĂ©e par le maillon le plus faible, que ce soit le Store Gateway le plus lent ou le Sidecar le plus lent.

Ces composants peuvent ĂȘtre soutenus de maniĂšre inĂ©gale. Par exemple, vous avez un Prometheus qui collecte des millions de mĂ©triques par seconde. Et il y a un Prometheus qui en collecte des milliers par seconde. Prometheus, qui collecte des millions de mĂ©triques par seconde, sollicite beaucoup plus le serveur sur lequel il fonctionne. Par consĂ©quent, le Sidecar fonctionne plus lentement. Et en gĂ©nĂ©ral, tout fonctionne plus lentement lĂ -bas. Le composant de requĂȘte extraira les donnĂ©es trĂšs lentement. Par consĂ©quent, les performances de l'ensemble de votre cluster seront limitĂ©es par ce Sidecar lent.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Par dĂ©faut, Thanos fournit des donnĂ©es partielles si certains Sidecars ou Store Gateway ne sont pas disponibles. Par exemple, si vos Sidecars sont dispersĂ©s Ă  travers le monde dans diffĂ©rents centres de donnĂ©es, la probabilitĂ© de coupure de connexion et d'indisponibilitĂ© des composants augmente considĂ©rablement. Par consĂ©quent, dans la plupart des cas, vous recevrez des donnĂ©es partielles, mĂȘme sans le savoir.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics a aussi ses piÚges. Le premier piÚge est une option qui limite la quantité de mémoire vive utilisée par le cache de VictoriaMetrics. Par défaut, elle est fixée à 60 % de la mémoire vive de la machine sur laquelle VictoriaMetrics est exécuté ou 60 % de la RAM du pod VictoriaMetrics dans Kubernetes.

Si vous modifiez incorrectement cette valeur, vous pouvez nuire aux performances de VictoriaMetrics. Par exemple, si vous définissez une valeur trop basse, les données peuvent ne plus entrer dans le cache de VictoriaMetrics. Cela entraßnera un travail supplémentaire pour le processeur et le disque. Si vous rendez cette option trop grande, cela augmente, d'une part, la probabilité que VictoriaMetrics rencontre une erreur de mémoire insuffisante, et, d'autre part, cela laissera trÚs peu de mémoire vive pour le cache de fichiers dans le systÚme d'exploitation. Or, VictoriaMetrics dépend de ce cache de fichiers pour ses performances. S'il est insuffisant, cela peut considérablement augmenter la charge sur le disque. Donc, conseil : ne modifiez pas ce paramÚtre sans nécessité absolue.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

La deuxiĂšme option. C'est le retentionPeriod – pĂ©riode, qui est par dĂ©faut fixĂ©e Ă  1 mois. C'est le temps pendant lequel VictoriaMetrics conserve les donnĂ©es. À l'expiration de ce dĂ©lai, VictoriaMetrics supprime les donnĂ©es.

Beaucoup lancent VictoriaMetrics sans ce paramÚtre et enregistrent des données pendant un mois. Puis ils se demandent : pourquoi les données ont-elles disparu le mois précédent ? Parce que le retentionPeriod par défaut est de 1 mois. Il est donc crucial de connaßtre et d'établir un bon retentionPeriod.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Passons en revue les possibilités uniques.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos possÚde une fonctionnalité appelée downsampling : des intervalles de 5 minutes et horaires, qui souvent ne fonctionnent pas correctement. Si on recherche sur Google et qu'on regarde leurs problÚmes sur GitHub, il y a beaucoup d'issues liées à ce downsampling, qui ne fonctionne parfois pas comme prévu ou ne fonctionne pas comme les utilisateurs s'y attendent.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos propose une dĂ©duplication des donnĂ©es pour les paires HA de Prometheus. Lorsque deux instances de Prometheus collectent les mĂȘmes mĂ©triques des mĂȘmes cibles, Thanos les stocke dans un Object Storage. Thanos dĂ©duplique correctement ces donnĂ©es, contrairement Ă  VictoriaMetrics.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Thanos a un composant d'alerte, qui était sur le schéma de Thanos. Mais il n'est pas recommandé pour une utilisation en production.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

L'avantage de Thanos est que le code de Thanos et de Prometheus est commun. Thanos et Prometheus ont Ă©tĂ© dĂ©veloppĂ©s par les mĂȘmes dĂ©veloppeurs. Lors des amĂ©liorations dans Thanos ou Prometheus, l'autre partie en bĂ©nĂ©ficie Ă©galement.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

La principale fonctionnalité de VictoriaMetrics est MetricsQL. C'est une extension de VictoriaMetrics pour PromQL, dont j'ai parlé lors du dernier grand meetup sur le monitoring.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

VictoriaMetrics supporte l'injection de données via de nombreux protocoles différents. VictoriaMetrics peut non seulement recevoir des données de Prometheus, mais aussi via les protocoles Influx, OpenTSDB et Graphite.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Les données de VictoriaMetrics occupent généralement beaucoup moins d'espace par rapport à Thanos et Prometheus.

Lorsque vous enregistrez des données réelles, les utilisateurs parlent d'une réduction de 2 à 5 fois de la taille des données sur disque par rapport à Prometheus et Thanos.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Un autre avantage de VictoriaMetrics est qu'elle est optimisée pour la vitesse.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Passons en revue le coût de l'infrastructure.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Un des avantages de Thanos est qu'il stocke les données dans des object storages, qui sont relativement bon marché.

Lorsqu'il s'agit de stocker des donnĂ©es dans un object storage, vous devez payer pour les opĂ©rations d'Ă©criture et de lecture des donnĂ©es (10 $ par million d'opĂ©rations). Lorsque vous Ă©crivez des donnĂ©es dans un object storage, vous en payez les frais d'hĂ©bergement pour le tĂ©lĂ©chargement des donnĂ©es sur Internet, si votre cluster n'est pas dans AWS — lĂ -bas, c'est gratuit. Lorsque vous lisez des donnĂ©es, vous payez entre 10 et 230 $ pour 1 To. Cela peut ĂȘtre significatif si vous demandez souvent des donnĂ©es historiques Ă  partir du cluster Thanos.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Pour le cluster Thanos, il est nécessaire de payer pour des serveurs pour les composants Compact, Store Gateway et Query, qui nécessitent beaucoup de mémoire et de CPU pour de grands volumes de données.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Pour VictoriaMetrics, les coûts sont les suivants. Si les données sont stockées sur des disques GCE HDD, cela revient à 40 $ par To. Pour VictoriaMetrics, des disques HDD ordinaires suffisent, il n'est pas nécessaire d'utiliser des SSD, qui coûtent cinq fois plus cher. VictoriaMetrics est optimisée pour les HDD.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Pour VictoriaMetrics, des serveurs sont nécessaires pour les composants : soit Single-node, soit pour des composants en cluster, qui, contrairement aux composants Thanos, nécessitent beaucoup moins de CPU et de RAM, ce qui sera donc moins cher.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Exemples d'implémentation.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Un exemple d'implémentation de Thanos est Gitlab. Gitlab fonctionne entiÚrement sur Thanos. Mais tout n'est pas si simple. Si l'on regarde leurs issues, on peut voir qu'ils rencontrent constamment des problÚmes opérationnels avec Thanos: ils manquent de mémoire pour les composants Store Gateway ou Query. Ils doivent constamment augmenter la mémoire.

Cela augmente les coûts pour résoudre ces problÚmes.

Une deuxiĂšme implĂ©mentation, qui pourrait ĂȘtre plus rĂ©ussie, est l'entreprise Improbable, qui a commencĂ© le dĂ©veloppement de Thanos. Ils ont publiĂ© le code source de Thanos. Improbable est une entreprise spĂ©cialisĂ©e dans le dĂ©veloppement de moteurs de jeu.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Les exemples publics d'implémentation de VictoriaMetrics sont :

  • wix.com, un constructeur de sites web
  • Adidas implĂ©mente VictoriaMetrics et a mĂȘme fait une prĂ©sentation lors du dernier PromCon 2019
  • TrafficStars — rĂ©seau publicitaire
  • Seznam.cz — un moteur de recherche tchĂšque populaire.

Et ensuite, il y a des entreprises inconnues que je ne peux pas nommer pour le moment. Elles n'ont pas donné leur accord.

  • Un grand dĂ©veloppeur de jeux. Plus grand qu'Improbable.
  • Un important dĂ©veloppeur de logiciels graphiques.
  • Une grande banque russe.
  • Un fabricant europĂ©en d'Ă©oliennes qui a rĂ©ussi Ă  tester VictoriaMetrics. Ce fabricant implĂ©mente VictoriaMetrics pour le suivi des donnĂ©es reçues des Ă©oliennes avec une vitesse de 50 Ă©chantillons par seconde pour chaque capteur. Chaque Ă©olienne a plusieurs centaines de capteurs. Ils ont plusieurs centaines d'Ă©oliennes.
  • Les lignes aĂ©riennes russes qui souhaitent implĂ©menter VictoriaMetrics, mais n'y parviennent pas. Nous sommes en phase de contrat avec eux.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetricsConclusions.

VictoriaMetrics et Thanos résolvent des problÚmes similaires, mais de maniÚres différentes :

  • Vue de requĂȘte globale
  • mise Ă  l'Ă©chelle horizontale
  • rĂ©tention arbitraire

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Merci.

Nous vous attendons sur notre canal telegram.

Choisir un stockage de données pour Prometheus : Thanos vs VictoriaMetrics

Seuls les utilisateurs enregistrés peuvent participer au sondage. Connectez-vous, s'il vous plaßt.

Quel est votre stockage Ă  long terme pour Prometheus ?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%autre4

17 utilisateurs ont voté. 16 utilisateurs se sont abstenus.

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