Qu’est-ce que Prometheus ?

février 12, 2025

Prometheus est un système de surveillance et d’alerte open source conçu pour collecter et traiter des métriques à partir d’applications et d’infrastructures. Prometheus fonctionne selon un modèle de type « pull », c’est-à-dire qu’il envoie périodiquement des requêtes HTTP pour collecter des données à partir de cibles configurées. Les données collectées sont stockées localement dans une base de données personnalisée et peuvent être interrogées à l’aide du langage PromQL. Prometheus est très efficace pour surveiller les systèmes distribués et est optimisé pour fonctionner avec des technologies modernes telles que Docker et Kubernetes.

Figure 1 : Architecture générale de Prometheus, comprenant les principaux composants tels que les bibliothèques clientes, les exportateurs, la découverte de services, le scraping, le stockage, les tableaux de bord, les règles d’enregistrement et les alertes, la gestion des alertes et le stockage à long terme.

Généralement, les applications ne génèrent pas automatiquement de métriques. Les développeurs doivent intégrer l’instrumentation dans le code source pour les créer. Les bibliothèques clientes simplifient ce processus. En quelques lignes de code, vous pouvez définir des métriques et intégrer la mesure directement dans le code source que vous contrôlez. C’est ce qu’on appelle l’instrumentation directe. Prometheus fournit des bibliothèques clientes pour les langages populaires tels que Go, Python, Java/JVM, Ruby et Rust. De plus, il existe de nombreuses bibliothèques tierces pour d’autres langages tels que C#/.Net, Node.js, Haskell et Erlang.

Il n’est pas toujours possible d’accéder au code source du logiciel pour y insérer du code, c’est-à-dire que vous ne pouvez pas effectuer de mesure directe. Un exportateur est un petit logiciel installé avec l’application dont vous souhaitez extraire des données. Il reçoit les requêtes de Prometheus, collecte les données de l’application, les convertit dans un format compréhensible par Prometheus et renvoie les résultats. Vous pouvez imaginer un exportateur comme un convertisseur de données entre l’application et Prometheus. Contrairement à l’intégration directe à l’aide de bibliothèques clientes, les exportateurs utilisent un type de mesure différent appelé « collecteurs personnalisés » ou « ConstMetrics ».

Une fois que vous avez intégré Prometheus à vos applications et configuré les exportateurs, Prometheus doit connaître l’emplacement exact des applications et des exportateurs pour pouvoir les surveiller. Dans un environnement dynamique comme le cloud, les services peuvent changer constamment (être créés ou supprimés). Vous ne pouvez donc pas fournir une liste unique d’applications et d’exportateurs. Cette liste deviendrait rapidement obsolète, c’est pourquoi nous avons besoin de la découverte de services. Prometheus s’intègre aux mécanismes de découverte de services courants tels que Kubernetes, EC2 et Consul, ce qui lui permet de trouver automatiquement les applications à surveiller. Si votre système n’utilise pas ces services, Prometheus propose également une méthode d’intégration générale pour d’autres systèmes.

Figure 2 : La découverte de services dans Prometheus permet de détecter et de surveiller automatiquement les services dans un environnement dynamique, garantissant une collecte de données précise et efficace.

Après avoir trouvé la liste des cibles à surveiller via la découverte de services et le reetiquetage, Prometheus doit extraire les données de ces cibles. Prometheus effectue cette opération en envoyant des requêtes HTTP, appelées « scraping », pour collecter les métriques. Lors de la collecte des données, Prometheus enregistre également des informations utiles telles que : le scraping a-t-il réussi ? Combien de temps a-t-il fallu pour terminer le scraping ? Le scraping est configuré pour se produire régulièrement, généralement toutes les 10 à 60 secondes pour chaque cible. Prometheus utilise un modèle de type « pull », dans lequel il collecte activement les données des cibles de surveillance (contrairement au modèle de type « push »).

Prometheus stocke les données directement sur son serveur, en utilisant une base de données personnalisée. Au lieu d’essayer de construire un système de stockage distribué complexe, Prometheus a opté pour un stockage local afin que le système soit plus facile à exploiter et plus fiable. La version 2.0 actuelle de Prometheus peut collecter des millions d’échantillons de données par seconde, ce qui est suffisamment puissant pour surveiller des milliers de machines avec un seul serveur Prometheus. Prometheus utilise un algorithme de compression puissant, avec un taux de compression atteignant 1,3 octet par échantillon de données réel. L’utilisation d’un disque SSD est recommandée pour améliorer la vitesse, mais ce n’est pas obligatoire. Prometheus stocke uniquement les données sur le serveur local. Vous êtes donc limité par la capacité du disque dur de cette machine. Cela peut poser problème si vous souhaitez conserver les données pendant une longue période. Prometheus n’offre pas de solution pour stocker les données sur plusieurs machines (stockage en cluster). Cependant, il dispose d’API de lecture et d’écriture à distance permettant de se connecter à des systèmes de stockage externes. Grâce à cela, vous pouvez interroger les données locales et distantes sans modifier la méthode d’interrogation.

Leave A Comment

Create your account