Note de lecture : Prometheus: Up & Running, par Brian Brazil

Note : 4 ; Une approche “culture système” avec des allures de manuel de référence qui ne facilite pas la compréhension globale.

La littérature sur Prometheus est fort maigre, malgré le poids qu’a pris ce système de monitoring, porté entre autres par le cloud en général et par la percée de Kubernetes avec lequel il s’intègre parfaitement, en particulier. Cet ouvrage vient combler cette lacune. Comme nous le verrons, il s’adresse avant tout à un public orienté « opérations », qui manque singulièrement d’une vue en grand.

Pourtant l’auteur n’a pas été avare : l’ouvrage compte 350 pages an 20 chapitres structurés en 4 parties. La première d’entre elles, l’introduction ne compte que 2 chapitres sur 35 pages. Cela débute par une présentation de l’outil. On y dresse le paysage du monitoring, les fonctionnalités attendues pour arriver sur l’architecture de l’outil lui-même. Un chapitre très instructif. On plonge directement dans l’exercice préféré de l’auteur dans les premiers pas proposés au chapitre 2. Certes on voit comment installer le produit et commencer à l’utiliser, mais en alignant les commandes, sans perspective ni contexte. C’est assez frustrant.

La seconde partie traite du monitoring des applications. Elle compte 4 chapitres sur environ 55 pages. Il est d’abord question d’instrumenter les programmes au chapitre 3. Via de courts exemples en Python, on voit comment mettre en place les différents instruments (compteur, gauge, buckets, etc.) et comment configurer Prometheus pour les récupérer. C’est super-basique mais cela fait le boulot. C’est toujours côté client que le chapitre 5 se situe en passant en revue les modes d’exposition et ce en différents langages. Le texte est à mi-chemin entre le guide d’utilisation et le manuel de référence, il lui manque une vue de haut niveau des cinématiques de scrapping.

Les labels sont un concept important de Prometheus et le chapitre 5 leur est consacré. On passe certes en revue tout ce qui les concernent, mais sans vraiment comprendre comment tout cela s’intègre. Un exemple synthétisant cela aurait été bienvenu. A la place nous avons de nouveau le « manuel de référence ». On sort de Prometheus sensu-stricto pour aborder le dashboard dans Grafana, mais c’est une bonne idée. Plus encore qu’avant, je regrette l’absence d’un « fil rouge » sur lequel on aurait construit ce dashboard progressivement.

La 3ème partie est dédiée à l’infrastructure Prometheus et compte 6 chapitres. Le chapitre 7 adresse les « node exporters ». Ils permettent de collecter des métriques système et le style du chapitre ne laisse pas de place au doute : il s’adresse aux ingénieurs système. Le service discovery abordé au chapitre 8 est aussi très orienté système, mais il est surtout confus. On passe rapidement sur les différents SD avec l’impression d’avoir fait des impasses pour aborder le relabelling sans vraiment comprendre la manière dont les deux se complètent… Kubernetes a droit à son propre chapitre et c’est bien normal. Mais si le monitoring des différents éléments est bien abordé, l’angle « ingénierie système » nous empêche de comprendre les stratégies de monitoring à aborder en fonction des problématiques : cAdvisor, pod, service, etc. Le texte regarde trop les choses par le petit bout de la lorgnette.

Retour aux exporters au chapitre 10, qui s’inscrit dans la (dis)continuité du chapitre 7. Il expose clairement les différentes options qui s’offrent à nous et elles sont nombreuses et intéressantes. Un très bon chapitre malgré le côté catalogue. Prometheus s’interface avec d’autres systèmes de monitoring (heureusement) tels que JMX, InfluxDB, SatD, etc. C’est le sujet du chapitre 11. Un propos qui n’est pas évident à suivre et s’adresse aux praticiens aguerris du monitoring. En fait, j’ai préféré le chapitre 12 qui nous propose d’écrire notre propre exporter, même si c’est en Python.

La 4ème partie est consacrée au langage de requête de Prometheus, PromQL. Ce sont 5 chapitres qui sont dévolus à cela. Le chapitre 13 se veut une introduction, mais c’est d’avantage un tour d’horizon avec une approche « manuel de référence » et ce n’est pas le meilleur angle d’attaque. Mais la compréhension de ce propos conditionne la lecture des 4 chapitres suivants. L’approche « manuel de référence » est plus marquée encore au chapitre 14 qui nous fait découvrir les opérateurs d’agrégation. C’est exhaustif mais aride.

Les opérateurs binaires sont au menu du chapitre 15. Il couvre les scalaires et les opérations portant sur les ensembles. La prose se digère sans trop de problème mais reste aride. Dans le genre « catalogue », le chapitre 16 traitant des fonctions serait plutôt très bien placé. Il fait le boulot et il n’y a pas grand-chose de palpitant à en dire. Cette partie se conclue sur un chapitre 17 traitant des règles d’enregistrement régissant des choses telles que la fréquence de récupération des métriques. Ce n’est pas vraiment du PomQL mais j’imagine qu’il fallait bien mettre cela quelque part…

La 5ème partie traite de l’alerting et se contente de 2 chapitres. Il débute par un chapitre éponyme qui rentre en profondeur et, une fois n’est pas coutume, de manière plutôt pédagogique et progressive dans les règles régissant le déclenchement des alertes. Un fois l’alerte déclenchée, elle passe dans les mains de l’alert manager qui est un menu du chapitre 19. A cheval entre le tutorial et le style « guide de l’ingénieur système », le texte nous fait découvrir les notions de pipeline et de routage des alertes et nous invite même à écrire notre Webhook d’alertes en Python ! Dans l’ensemble, c’est bien fait !

Enfin la dernière partie de l’ouvrage traite du déploiement sur un seul chapitre. Il s’agit de considérations stratégiques ici, telles que la « fédération de Prometheus » pour habiller tout un datacenter ou stoker les anciennes métriques, gérer l’authentification etc. Le texte ne rentre pas en profondeur sur ces sujets qui seraient plutôt l’objet d’un titre dédié.

Cette lecture a été assez frustrante pour moi, de par son angle très « système ». Difficile de se rendre compte de l’usage, des mises en œuvre au niveau des applications monitorées, etc. L’angle architecture est peu abordé et l’angle « cas d’utilisation » est lui totalement absent. Or c’est lui que j’aurais voulu voir de prime abord. C’est donc un texte ciblant bien l’ingénieur système et mal l’architecte SI.

Référence complète : Prometheus: Up & Running – Brian Brazil – O’Reilly 2018 – ISBN : 978 1 492 03414 8

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.