Prometheus est un ensemble d'outils Open Source de surveillance et d'alerte qui a gagné en popularité parallèlement à la croissance de Kubernetes. Créé à l'origine chez SoundCloud, Prometheus peut retrouver ses origines dans un projet de surveillance de Google appelé Borgmon.
Prometheus est l'un des principaux acteurs de la collecte de métriques à partir de vos applications et de votre infrastructure à l'aide d'un modèle pull. Cela signifie que Prometheus enverra régulièrement une requête à vos cibles. Les métriques collectées seront ensuite stockées dans une base de données de séries temporelles. Dans les instances Prometheus autogérées, vous fournissez l'infrastructure permettant de collecter, de stocker et d'interroger les métriques. Dans les versions gérées de Prometheus, un fournisseur fournit toute l'infrastructure et un contrat de niveau de service pour la disponibilité du service.
Prometheus fournit un langage de requête appelé PromQL pour interroger vos données de séries temporelles. De nombreux projets utilisent PromQL, y compris Grafana et Alertmanager, pour vous aider dans des tâches analytiques et opérationnelles telles que la visualisation des données, la création d'alertes et le scaling de votre infrastructure de surveillance.
Prometheus permet de collecter des métriques à partir de vos applications et de votre infrastructure. Ces métriques peuvent servir à suivre l'état de vos systèmes, à identifier les problèmes potentiels et à les résoudre.
Voici quelques-uns des avantages spécifiques de l'utilisation de Prometheus :
Prometheus utilise un modèle pull pour collecter des métriques, ce qui signifie que le serveur Prometheus interroge les systèmes ou les applications qu'il surveille pour obtenir des métriques. Cette approche diffère du modèle push, utilisé par de nombreux autres systèmes de surveillance, dans lequel vous modifiez le code de l'application pour envoyer régulièrement des métriques au serveur.
Avec le modèle pull, les systèmes ou les applications surveillés n'ont pas besoin de connaître le serveur Prometheus. Il peut donc être ajouté à un système de surveillance sans modifier le code d'application. Le modèle pull ne collecte des métriques que lorsqu'elles sont nécessaires. Prometheus ne gaspille donc pas de ressources en collectant des métriques qui ne sont pas utilisées.
De plus, Prometheus peut détecter automatiquement les sources de données à l'aide des moyens suivants:
Une fois que Prometheus a découvert une ressource, il la récupère périodiquement pour obtenir des métriques. Les métriques sont ensuite stockées dans la base de données de Prometheus, où elles peuvent être interrogées et visualisées.
PromQL est un langage de requête puissant et flexible pour les métriques collectées par Prometheus. Il permet de créer des graphiques, des tables et des alertes ad hoc.
PromQL utilise un langage de requête fonctionnel qui permet à l'utilisateur de sélectionner et d'agréger des données de séries temporelles en temps réel. Le résultat d'une expression peut être affiché sous forme de graphe, affiché sous forme de données tabulaires dans le navigateur d'expressions de Prometheus, ou consommé par des systèmes externes via l'API HTTP.
Voici quelques-unes des utilisations de Prometheus et PromQL :
Voici quelques exemples de requêtes PromQL:
Pour connaître l'utilisation moyenne du processeur par seconde pour une application spécifique, vous pouvez utiliser la requête suivante:
Pour obtenir le nombre de requêtes envoyées à un point de terminaison spécifique, vous pouvez utiliser la requête suivante:
Pour obtenir le nombre total d'erreurs renvoyées par un point de terminaison spécifique, vous pouvez utiliser la requête suivante: