Qu’est-ce que Prométhée et pourquoi est-il si populaire ? – CloudSavvy IT
Prometheus est une solution de surveillance open source permettant de collecter et d’agréger des métriques sous forme de données de séries chronologiques. En termes plus simples, chaque article dans un magasin Prometheus est un événement métrique accompagné de l’horodatage auquel il s’est produit.
Prometheus a été développé à l’origine chez Soundcloud mais est maintenant un projet communautaire soutenu par la Cloud Native Computing Foundation (CNCF). Il a rapidement pris de l’importance au cours de la dernière décennie, car sa combinaison de fonctionnalités d’interrogation et d’architecture native du cloud en a fait la pile de surveillance idéale pour les applications modernes.
Dans cet article, nous expliquerons le rôle de Prometheus, découvrirons comment il stocke et expose les données, et soulignerons où s’arrête la responsabilité de Prometheus. Une partie de sa popularité est due à l’interopérabilité du logiciel avec d’autres plates-formes qui peuvent afficher des données dans des formats plus pratiques.
Sommaire
Que fait Prométhée ?
Prometheus stocke les événements en temps réel. Ces événements peuvent être tout ce qui concerne votre application, comme la consommation de mémoire, l’utilisation du réseau ou des demandes entrantes individuelles.
L’unité de données fondamentale est une « métrique ». Chaque métrique se voit attribuer un nom par lequel elle peut également être référencée et un ensemble d’étiquettes. Les étiquettes sont des paires de données clé-valeur arbitraires qui peuvent être utilisées pour filtrer les métriques dans votre base de données.
Les mesures sont toujours basées sur l’un des quatre principaux types d’instruments :
- Compteur – Une valeur qui augmente régulièrement, sans jamais diminuer ni se réinitialiser.
- Jauge – Une valeur qui peut changer dans n’importe quelle direction à tout moment.
- Histogramme – Un échantillonnage de plusieurs valeurs qui fournit une somme de toutes les valeurs stockées, ainsi que le nombre d’événements enregistrés.
- Résumé – Un résumé fonctionne de la même manière qu’un histogramme, mais prend en charge des quantiles configurables pour une surveillance agrégée sur des périodes glissantes.
Prometheus détermine la valeur actuelle de vos métriques à l’aide d’un mécanisme d’extraction de données basé sur l’extraction. Il interroge périodiquement la source de données qui soutient chaque métrique, puis stocke le résultat en tant que nouvel événement dans la base de données de séries chronologiques. L’application surveillée est responsable de la mise en œuvre du point de terminaison utilisé comme source de données ; ces fournisseurs de données sont généralement décrits comme exportateurs.
Le modèle basé sur le pull simplifie l’intégration de Prometheus dans vos applications. Tout ce que vous avez à faire est de fournir un point de terminaison compatible qui fait apparaître le courant valeur de la métrique à collecter. Prometheus gère tout le reste. Bien que cela puisse entraîner des inefficacités – par exemple, si Prometheus interroge à nouveau le point de terminaison avant que ses données ne soient modifiées – cela signifie que votre code n’a pas besoin de gérer le transport des métriques.
En savoir plus sur les exportateurs
Les exportateurs sont chargés d’exposer les métriques de votre application prêtes à être collectées par Prometheus. De nombreux utilisateurs commenceront par un simple déploiement de Node Exporter qui collecte les métriques système de base à partir de l’hôte Linux sur lequel il est installé.
Une grande variété d’exportateurs est disponible, dont beaucoup sont fournis par Prometheus lui-même ou par des fournisseurs officiels de la communauté. Que vous surveilliez un moteur de base de données populaire comme MySQL, PostgreSQL et MongoDB, ou que vous suiviez un serveur HTTP, un moteur de journalisation ou un bus de messagerie, il y a de fortes chances qu’un exportateur existe déjà.
Vous pouvez suivre les propres métriques de votre application en écrivant votre propre exportateur. Il n’y a vraiment aucune limite avec cette approche – vous pouvez capturer le temps passé sur une page de destination, le volume des ventes, les enregistrements d’utilisateurs ou tout autre élément important pour votre système.
Les exportateurs sont de simples points de terminaison d’API HTTP, ils peuvent donc être construits dans n’importe quel langage de programmation. Prometheus fournit des bibliothèques clientes officielles pour Go, Java/Scala, Python et Ruby qui facilitent l’instrumentation de votre code. Des initiatives communautaires ont également fourni des bibliothèques non officielles pour la plupart des autres langues populaires.
Interrogation des données Prometheus
Les données dans Prometheus sont interrogées à l’aide de PromQL, un langage de requête intégré qui vous permet de sélectionner, d’analyser et de formater des métriques à l’aide de divers opérateurs et fonctions. Comme Prometheus utilise le stockage de séries chronologiques, il existe une prise en charge des sélections de plage et de durée basées sur le temps qui facilitent le travail de surfaçage des données ajoutées au cours d’une période spécifique.
Voici un exemple qui fait apparaître tous les memory_consumption
événements au cours de la dernière heure :
memory_consumption[1h]
Cet exemple affiche uniquement les événements de consommation de mémoire enregistrés au cours de la dernière heure.
Vous pouvez filtrer par libellé en ajoutant des paires clé-valeur à l’intérieur des accolades :
memory_consumption{app="api"}[1h]
Les fonctions intégrées offrent des possibilités d’analyse plus précise. Voici un exemple qui utilise le rate()
fonction pour calculer le taux d’augmentation de la memory_consumption
métrique sur la période sélectionnée :
rate(memory_consumption[1h])
Les données Prometheus sont accessibles via l’interface utilisateur Web intégrée, généralement exposée sur le port 9090, ou l’API HTTP. Ce dernier fournit un moyen robuste d’obtenir des données de Prometheus dans d’autres outils tels que des solutions de tableau de bord.
Alertes
Prometheus est livré avec un composant Alertmanager qui peut vous envoyer des notifications lorsque les métriques changent. Il prend en charge les politiques basées sur des règles qui déterminent quand une alerte doit être envoyée.
Vous pouvez recevoir des alertes sur votre adresse e-mail, des webhooks HTTP arbitraires et des plateformes de messagerie populaires telles que Slack. Alertmanager inclut une prise en charge intégrée pour l’agrégation et la mise en sourdine des alertes répétitives afin que vous ne soyez pas inondé lorsque plusieurs événements se produisent dans un court laps de temps.
Alertmanager est configuré indépendamment du système principal Prometheus. Vous configurez les règles d’alerte dans Prometheus, déterminant les conditions dans lesquelles une métrique doit envoyer une alerte à Alertmanager. Ce dernier composant décide alors si l’alerte doit être délivrée à chaque plate-forme configurée.
Que ne peut pas faire Prométhée ?
Bien que Prometheus soit une solution de surveillance complète, il existe certains rôles pour lesquels elle n’est pas adaptée. Prometheus est conçu avec la fiabilité et la performance comme principes fondamentaux. Cela conduit à des compromis dans la précision des mesures.
Prometheus ne garantit pas que les données collectées seront exactes à 100 %. Il est destiné aux scénarios à volume élevé où des événements abandonnés occasionnels n’influencent pas la situation dans son ensemble. Si vous suivez des statistiques sensibles qui doivent être correctes, vous devez utiliser une autre plate-forme pour ces métriques. Vous pouvez toujours adopter Prometheus pour les valeurs les moins critiques de votre système.
De plus, Prometheus n’est peut-être pas le seul composant que vous souhaitez dans votre pile de surveillance. Il se concentre sur le stockage et l’interrogation de vos événements, principalement à l’aide d’API HTTP. L’interface utilisateur Web intégrée fournit des fonctionnalités graphiques de base, mais ne peut pas prendre en charge les tableaux de bord personnalisés avancés. Les scénarios de visualisation de données sont généralement gérés en déployant une instance Grafana en parallèle ; cela fournit des capacités de tableau de bord et d’analyse métrique avec l’intégration Prometheus intégrée.
Conclusion
Dans sa forme la plus simple, Prometheus est un magasin de données de séries chronologiques qui peut être utilisé pour gérer toutes les données temporelles séquentielles. Il est le plus souvent utilisé pour surveiller les métriques d’autres applications de votre pile. Bien que Prometheus soit un système efficace pour stocker et interroger des métriques, il est généralement intégré à d’autres solutions pour alimenter des tableaux de bord graphiques et des visualisations avancées. Sa popularité est due à sa capacité à travailler avec des métriques personnalisées, à prendre en charge des requêtes riches et à interagir avec d’autres membres de l’écosystème natif du cloud.
Prometheus vise une fiabilité maximale. Il est conçu pour être votre outil de prédilection lors d’un incident qui vous aide à comprendre pourquoi d’autres composants échouent. Les nœuds Prometheus individuels dans un déploiement en cluster sont entièrement autonomes et ne dépendent pas du stockage distant. En raison de sa fiabilité, Prometheus ne garantit pas l’exactitude des données. Cet inconvénient doit être votre principale considération lors de la planification d’un nouveau déploiement.
Bien que nous n’ayons pas couvert les étapes pratiques de l’installation de Prometheus dans cet article, la documentation officielle fournit un guide de démarrage rapide complet si vous souhaitez essayer le système vous-même. Prometheus est généralement déployé en tant que conteneur Docker, mais est également disponible à partir de la source ou sous forme de binaires précompilés pour les distributions Linux populaires. L’approche Dockerized est la plus facile à utiliser car elle inclut tous les composants de base dans une configuration prête à l’emploi.