Monitoring open source : le couple Prometheus / Grafana impose sa marque

Monitoring open source : le couple Prometheus / Grafana impose sa marque Avec la montée en puissance du DevOps, une nouvelle génération d'outils de supervision émerge s'adressant aussi bien aux exploitants informatiques qu'aux développeurs et au business.

La mouvance DevOps fait souffler un vent frais sur le paysage des outils open source de monitoring. Au sein des DSI, les "ops", ou experts de l'exploitation informatique, ne sont plus les seuls à surveiller l'état de santé des infrastructures IT. Les "dev " se doivent aussi d'en suivre les métriques. Une augmentation progressive de la charge CPU par exemple peut être liée, certes, à une augmentation du nombre d'utilisateurs mais aussi à une faille au niveau du code source que les développeurs devront corriger. Côté business, les équipes sont aussi de plus en plus demandeuses d'indicateurs de performance au fur et à mesure de la digitalisation de leur activité.

Dans ce contexte, les outils de supervision traditionnels de type Nagios et Centreon, avant tout dédiés aux "ops" et dotés d'interfaces d'un autre âge, montent leurs limites. Apparue au début des années 2010, une nouvelle génération de solutions, issues de l'open source, répond au défi du DevOps. Elles permettent de remonter tout type de métriques en provenance des applications, y compris des indicateurs métier (suivi de commande, prix moyen d'un panier d'achat, pourcentage de parcours client réussis...).

Comparatif des outils open source de monitoring
  Prometheus Grafana Kibana Telegraf
Fonction Collecte et stockage de métriques, gestion des alertes Outil de visualisation Outil de visualisation Collecte de métriques
Société d'origine SoundCloud Grafana Labs Elastic InfluxData
Modèle de licence Apache 2.0 Apache 2.02 Apache 2.0 MIT License
Ecosystème Intégration à Grafana, Nginx, PostgreSQL,  Kubernetes… Intégration à Prometheus, InfluxDB et aux services de monitoring des principaux cloud providers Stack réunissant Elasticsearch, Logstash, Kibana et Beats Stack Tick réunissant Telegraf, InfluxDB, Chronograf et Kapacitor
Points forts Couverture fonctionnelle complète, popularité, communauté active Facilité de prise en main, nombreux plugins, dashboards prêts à l'emploi, version entreprise L'association avec Elasticsearch, permet de traiter une grosse volumétrie de fichiers de logs Ecosystème riche en plugins, profondeur de l'historique
Limites Durée de rétention réduite Difficulté dans les premiers temps à configurer les sources de données Prise en main peu intuitive Passage à la version payante pour répondre à la croissance des traitements

Au sein de cette nouvelle catégorie de solutions, la plus connue a le nom d'un personnage de DC Comics : Prometheus. Créée par SoundCloud pour ses besoins de monitoring internes, elle s'articule autour d'une base de données taillée pour gérer les informations chronologiques (ou time series), qui va collecter et stocker des métriques. A la différence de Nagios dont les sondes envoient des données au serveur de supervision en mode push, Prometheus endosse une approche plus dynamique. A l'inverse, c'est le serveur Prometheus qui requêtera les applications à surveiller, en mode pull, avec un modèle d'extraction HTTP.

Prometheus, un incontournable

Via ses "exporters", Prometheus va exposer des métriques sur les machines physiques ou virtuelles à surveiller. CPU, Ram, espace disque, bande passante réseau... L'infrastructure IT n'a plus de secret pour elle. Côté supervision applicative, Prometheus relève, en appelant une URL, le nombre de requêtes par seconde ou le taux d'échecs.

"Prometheus sait de quelle façon et à quelle fréquence gérer la collecte des requêtes", observe Guillaume Membré, consultant technique au sein de la société de services Zenika. "Avec Nagios, les applications émettent elles-mêmes les données. Si elles en envoient trop souvent et/ou en même temps, le réseau peut arriver à saturation." Pour assurer cette collecte à intervalles réguliers, Prometheus intègre son propre langage de requêtage : PromQL.

L'outil dispose aussi de services de discovery pour détecter automatiquement de nouvelles machines sans intervention manuelle. Pour la gestion des alertes, Prometheus fait appel au module Alertmanager. L'utilisateur peut demander par exemple à être notifié si la charge CPU dépasse 60% durant X secondes par l'envoi d'un mail, d'un SMS ou d'un message sur Slack.

"Une communauté d'utilisateurs
extrêmement dynamique"

"La communauté Prometheus est extrêmement dynamique", note Guillaume Membré qui rappelle que le projet est adoubé par la Cloud native computing foundation. Autre point fort : son intégration à d'autres solutions open source comme le serveur web Nginx, la base de données PostgreSQL ou encore Kubernetes pour l'orchestration du clustering.

Pour Pierre-Yves Aillet, consultant formateur chez Zenika, Prometheus est devenu un incontournable grâce à son format d'exposition des métriques OpenMetrics. En passe de devenir un standard, il est notamment utilisé par OVH. "La vraie limite de Prometheus, c'est sa capacité à encaisser d'importantes charges de traitement", estime pour sa part Rémi Rey, consultant ops chez Octo Technology. "Il n'offre pas un historique élevé et préconise 15 jours de rétention seulement. Heureusement des projets comme Thanos et Cortex se sont greffés sur Prometheus avec la promesse d'un stockage illimité en passant par des services cloud type S3 d'Amazon."

Des outils pour la data visualisation

Prometheus est intimement lié à Grafana qui est son pendant naturel pour la visualisation des données. Parlant également le PromQL, cet outil de restitution va récupérer les métriques pour construire des tableaux de bord graphiques sur une période donnée.

Il arrive à Grafana de faire des infidélités à Prometheus. L'outil peut, en effet, dialoguer avec InfluxDB ou avec des services de monitoring propriétaires de cloud providers comme CloudWatch d'AWS. Ce qui lui permet soit dit en passant de surveiller l'état d'une machine virtuelle ou le taux d'erreur d'un service d'équilibrage de charge issus du cloud d'Amazon. "Sur un même tableau de bord, on va pouvoir mettre en corrélation des indicateurs provenant à la fois d'un environnement hybride, d'un cloud public et d'un cloud privé", constate Rémi Rey.

Bien documenté, Grafana propose sur son site des tableaux de bord prêts à l'emploi créés par sa communauté d'utilisateurs. Grafana Labs, la société derrière l'outil open source, commercialise une version commerciale de la solution, avec des plugins propriétaires et une déclinaison SaaS.

"Moins intuitif, Kibana n'offre pas la facilité d'utilisation de Grafana"

Le principal rival de Grafana s'appelle Kibana. Cet outil de visualisation de données fait partie d'une plateforme éditée par Elastic. Aux côtés de Kibana, elle se compose d'Elasticsearch (recherche orientée documents), de Logstash (collecte et analyse de logs) et de Beats (agents de transfert de données). Cette stack est parfois baptisée ELK, acronyme reprenant les premières lettres de ses principales briques.

Kibana va requêter et restituer sous forme de tableaux de bord les données recueillies sous forme de fichiers de logs par Elasticsearch. Parmi les informations remontées, on pourra retrouver le système d'exploitation ou le navigateur utilisé, l'heure et la date d'accès, le nombre d'octets transférés ou l'adresse IP.

"Alors que Prometheus stocke essentiellement des nombres associés à des valeurs  pour générer des indicateurs, Kibana, manipule des chaînes de caractères que sont les logs", note Guillaume Membré. "Le requêtage peut être un peu moins immédiat." Rémi Rey oppose lui aussi Prometheus, conçu pour stocker des métriques que l'on indexe sur une base de données horodatées, à Kibana qui va rechercher les métriques sur une plage de temps et les agrège la volée. "Moins intuitif, Kibana n'offre pas non plus la facilité d'utilisation de Grafana', estime-t-il. "En revanche, avec Elasticsearch, on peut rajouter des nœuds et obtenir un stockage pour une grosse volumétrie de données." Cette capacité de stockage plus importante pourra comprendre tout ou partie d'un volume de logs dans l'optique de générer des jauges ou des compteurs. "On catégorise les logs en fonction de leur contenu. Il se présente généralement sous la forme de textes au format Json", poursuit l'expert d'Octo Technology. "C'est un procédé programmatique assez verbeux qui prend de la place."

Elastic édite ses outils open source sous licence Apache 2.0 mais pourrait changer son modèle de licence à la suite du conflit qui l'oppose à AWS. Par rapport à la version communautaire, les versions payantes de l'éditeur californien proposent la gestion des droits d'accès ou des fonctionnalités de sécurité avancées.

Tick, le challenger

Enfin, ce panorama ne serait pas complet sans évoquer une autre stack de monitoring, proposée par InfluxData. Baptisée Tick, elle réunit Telegraf (gestion de la collecte), InfluxDB (base de données orientée séries temporelles), Chronograf (data visualisation) et Kapacitor (gestion des alertes). Comme Elastic et contrairement à Prometheus, Tick opère en mode push. En amont, l'outil Telegraf propose un daemon qui, placé sur les installations à superviser, va envoyer des données vers InfluxDB. Elles seront ensuite agrégées et data visualisées par Chronograf. "A la différence du mode pull où la charge n'augmente pas, ce mode push exige de bien dimensionner le cluster afin d'absorber le choc en cas d'afflux de données", rappelle Rémi Rey. A noter qu'InfluxData fait payer une partie des fonctionnalités, notamment le passage en mode clustering.