La version 2.0 de Prometheus, le système de surveillance open source pour les conteneurs de type Docker fonctionnant dans les architectures cloud, comporte des changements architecturaux majeurs qui améliorent les performances. Cette mouture officielle fait suite à la version 1.6 sortie plus tôt cette année.
Les changements les plus remarquables apportés par Prometheus 2.0 :
- Un nouveau format de stockage des métriques accumulées par Prometheus.
- Un mode de gestion des données obsolètes. Ces datas périmés sont source de problèmes, car les données communiquées par Prometheus ne correspondent pas à l'état réel du cluster.
- Des sauvegardes instantanées efficaces de la totalité de la base de données.
La plupart de ces changements ne devraient pas obliger les utilisateurs expérimentés de Prometheus à réorganiser leurs environnements. Les nouvelles fonctions se situent « sous le capot », et ne modifient pas le workflow de manière significative, même s’ils induisent quelques changements de rupture (voir ici).
Un format de stockage time series plus efficace
Prometheus est essentiellement connu comme base de stockage de métriques. Le système permet de collecter des statistiques sur l'exécution de conteneurs et de les stocker en mode chronologique indexé. Parce que ces métriques en séries chronologiques arrivent à grande vitesse et proviennent de nombreuses sources, il est difficile de les agréger correctement. Si bien que l'écriture des données sur disque devient un goulot d'étranglement majeur. Prometheus 2.0 résout ce problème en partitionnant les données par plages chronologiques plutôt que par source de données. Ce format de stockage se traduit par une sollicitation beaucoup moins importante du processeur et du disque, une latence plus facile à gérer pour les requêtes et un mécanisme de nettoyage des données obsolètes plus efficace. Encore une fois, tout se passe en sous-main et dans la majorité des déploiements de Prometheus, il n’y a rien à faire pour tirer parti de ces améliorations, mis à part le déploiement de Prometheus 2.0 lui-même.
Une meilleure gestion des données obsolètes des conteneurs
Un autre problème rencontré par les utilisateurs de Prometheus concerne la difficulté du système à gérer les données obsolètes. Par exemple, les utilisateurs sont parfois bombardés d'alertes envoyées pour signaler la panne d'un service, même quand le service est déjà rétabli. Un autre problème lié à la latence est que si une ressource disparaît puis réapparaît de la surveillance après un certain délai, elle peut être décomptée deux fois et produire de fausses statistiques. Prometheus 2.0 résout ce problème en introduisant des règles plus explicites pour la gestion des événements provenant de sources obsolètes. La logique de cette procédure est particulièrement complexe (voir la diapo), mais l'utilisateur final n'a pas à se préoccuper de tous ces détails.
Des instantanés pour effectuer des sauvegardes complètes de la base de données
Le nouveau moteur de stockage de Prometheus 2.0 permet de prendre des instantanés très pertinents de la base de données. Pour déclencher un instantané, il suffit de stimuler un point de terminaison spécifique de l'API Prometheus. Selon Fabian Reinartz, le développeur de Prometheus, ces instantanés occupent une petite taille - un pourcentage infime de la base de données totale - et peuvent être copiés pour être conservés. « En cas de panne du disque ou autres, il est possible de démarrer de nouveaux serveurs Prometheus à partir de la sauvegarde de l’instantané avec une perte de données minimale », explique le développeur.
Pour télécharger Prometheus
Les fichiers binaires précompilés et les images Docker peuvent être téléchargés à partir de la page officielle du projet Prometheus. Le code source du projet et tous ses sous-projets connexes sont disponibles sur GitHub.