Prometheus est une solution open-source (Apache 2.0) de monitoring et d’alerting développée à l’origine chez SoundCloud. Il a été le deuxième projet soutenu par la CNCF, juste après Kubernetes. Il est aujourd’hui massivement adopté et est supporté par une grande communauté d’utilisateurs et de contributeurs.
Ses caractéristiques les plus marquantes sont :
La fréquence de collecte est paramétrable suivante les targets groups, mais gardez en tête qu’il s’agira d’un mode best-effort. Avec l’accumulation de targets, il est possible que Prometheus vienne moins souvent que prévu collecter vos métriques, puisqu’il sera occupé à faire le tour de toutes vos targets.
Prometheus en lui-même est responsable uniquement :
Il est possible d’utiliser un Push Gateway si vous avez le besoin d’un intermédiaire qui stocke des valeurs en attente du prochain passage de Prometheus.
La partie alerting est assurée par un démon à part : l’Alert Manager.
La partie visualisation / dashboarding est déléguée à un autre composant, capable de requêter Prometheus en PromQL via son API. Le plus généralement, il s’agit de Grafana, qui mériterait une série de billets à lui tout seul.
Prometheus collecte des métriques certes, mais auprès de qui ? Les émetteurs de métriques sont appelés des exporters. Ils peuvent prendre la forme de démons légers qui mettent à disposition les métriques. Si vous souhaitez exposer nativement des données de vos applications, il existe aussi des librairies à intégrer dans vos bases de code.
L’un des plus simples et qui vous fournira un bon cas d'école est le node exporter. Il vous renseignera sur les organes vitaux d’un host (CPU, RAM, IO, etc). Il vous permettra aussi de poser des fichiers au format Prometheus et les exposera pour vous à côté des métriques collectées.
À regarder également, le projet NetData qui découvre énormément de métriques et les expose au format Prometheus. Il peut servir de sonde à large spectre pour avoir un bon aperçu de la santé de votre parc de machines.
L’un des gros points forts de Prometheus est sa capacité à découvrir de nouvelles targets à collecter, en se basant sur des outils de service discovery. On configure Prometheus pour être capable d’interroger le Service Discovery et il tiendra à jour sa liste de targets en suivant les évolutions du registre de service auquel il est branché. Parmi les intégrations intéressantes, on peut mettre en lumière :
Le modèle choisi par Prometheus pour des déploiements d’envergure où un unique serveur ne suffit plus est celui de la fédération hiérachique.
Pour vous donner une idée, il s’agit de :
Chaque étage de fédération offre la possibilité de rajouter dynamiquement des labels pour pouvoir identifier quel serveur Prometheus a fait la collecte initiale de la métrique. Attention toutefois à l’accumulation des données et à a réseau sur le serveur de fédération.
Prometheus fait le choix de ne stocker ses données que sur le serveur qui porte le démon de collecte. Il n’y a pas de fonctionnalité de stockage multi-noeud par défaut. Il faut donc dimensionner son disque en fonction du nombre de métriques collectées et ajuster la durée de rétention avant suppression. Vous trouverez la règle pour calculer vos besoins sur la page dédiée au stockage dans la documentation officielle.
Si vous avez le besoin de stocker vos données dans des échelles supérieures, il faudra vous appuyer sur d’autres solutions de stockage avec lesquelles Prometheus viendra s’intégrer. Parmi les projets intéressants à évaluer, suivant vos besoins :
Ces 2 projets ont le même objectif mais proposent des fonctionnalités différentes. Je vous invite à les comparer pour déterminer lequel vous convient le mieux.
Prometheus est un excellent outil de collecte de métriques, rapide, fiable et simple à déployer. Ses intégrations Service Discovery et stockages externes en font un outil versatile qui a déjà fait émerger des projets compagnons (comme le Prometheus Operator pour Kubernetes).
Des outils plus traditionnels comme Centreon ont déjà des plugins pour venir collecter de la donnée auprès de Prometheus. L’adopter n’impliquera pas de jeter tout ce que vous avez déjà. Nous vous encourageons à tester Prometheus, juste pour voir s’il existe un périmètre de votre stratégie de monitoring qui pourrait bénéficier de ses avantages.
Have fun. Hack in peace.