Introduction
Cibles et objectifs de l’ouvrage
Prometheus en lui-même n’est pas un outil particulièrement complexe à mettre en œuvre. Grafana est également relativement simple à mettre en place et ne réclame pas de connaissances particulières.
En revanche, l’intégration aux différentes briques à surveiller réclame une connaissance minimale. Le cumul de l’ensemble des briques à surveiller peut donc constituer un frein dans le déploiement de ces outils. Chaque cas sera soigneusement illustré d’exemples concrets.
Il est bien sûr préférable que le lecteur ait des connaissances préalables pour chaque thématique abordée. N’hésitez pas non plus à faire appel à des experts pour mettre en place les différentes surveillances abordées au fur et à mesure de cet ouvrage.
Prérequis techniques et ressources documentaires
1. Prérequis techniques
Tous les exemples dans ce livre s’appuient sur l’utilisation d’une distribution Ubuntu 24.04 LTS (Long Term Support). Il est fortement recommandé au lecteur de disposer d’un accès à ce type de machine et d’être en mesure de lancer des commandes d’administration en tant qu’utilisateur root.
Tous les exemples peuvent également s’adapter sans trop de problèmes à d’autres types de systèmes (Unix ou Windows). Charge au lecteur de réaliser les adaptations nécessaires le cas échéant.
2. Ressources documentaires
Ce livre contient énormément d’exemples permettant au lecteur de se mettre en situation :
-
Surveillance de systèmes Linux.
-
Surveillance de containers.
-
Surveillance de bases de données.
-
Etc.
Le code source de ces exemples est disponible dans un dépôt GitHub à l’adresse suivante : https://github.com/EditionsENI/prometheus-grafana
Il est également disponible sur le site des Éditions ENI sous la forme d’archives tar.gz.
L’écosystème gravitant autour de Prometheus est une cible mouvante. N’hésitez pas à vous rendre dans le dépôt GitHub du livre et à consulter les tickets ouverts et, le cas échéant, d’en ouvrir un si le problème n’a pas encore été couvert.
N’hésitez pas non plus à consulter les ressources documentaires du projet afin de vous tenir au courant des dernières évolutions : https://prometheus.io/
La racine des dépôts GitHub du projet constitue également un bon point d’entrée : https://github.com/prometheus
3. Récupération des fichiers d’exemples
Le dépôt GitHub du livre est consultable à l’adresse suivante : https://github.com/EditionsENI/prometheus-grafana...
Présentation générale
Ce livre est constitué de 21 chapitres. Chacun d’eux présente une fonctionnalité spécifique de Prometheus ou de Grafana. L’ordre des chapitres se veut naturel (même si certains peuvent être sautés) et permet au lecteur de partir dans un premier temps sur l’installation de Prometheus et Grafana pour ensuite s’acheminer vers la mise en place de la surveillance sur n’importe quelle brique.
1. Prérequis
Le chapitre Architecture de Prometheus est une introduction à l’architecture de Prometheus et Grafana ainsi qu’à quelques principes liés au format des métriques. Le chapitre donne également quelques rappels sur le fonctionnement du format YAML.
2. Mise en place de Prometheus et Grafana
Le chapitre Découverte de Prometheus propose de découvrir le fonctionnement de Prometheus. Le lecteur verra comment récupérer les binaires, procéder au lancement initial et découvrira les différents types de données disponibles.
Le chapitre Installation de Grafana est consacré à l’installation de Grafana, au branchement à Prometheus ainsi qu’à la découverte de l’interface de l’outil.
Les chapitres Découverte de Grafana et Intégration au système reviennent sur l’intégration de Prometheus au sein d’une distribution Linux. Une attention particulière est portée à la création de services système, à la mise en place de la surveillance système ainsi qu’aux problématiques comme la création d’utilisateurs système ou la création de points de montage.
Le chapitre Protection des accès est consacré à la protection des accès avec différents mécanismes (OAuth2 - Open Authorization 2.0, LDAP - Lightweight Directory Access Protocol, etc.), à la mise en place d’un proxy inverse Nginx ainsi qu’à l’utilisation de certificats Let’s Encrypt.
3. Surveillance des containers
Les chapitres Déploiement via containers, Supervision de containers et Découverte automatique sont consacrés à la thématique des containers avec notamment l’intégration de Prometheus et Docker Swarm. Le lecteur abordera la mise en place de la surveillance système, le suivi de la consommation des ressources système à l’aide de cAdvisor ainsi que la découverte automatique des containers du cluster Docker Swarm.
Les chapitres Intégration de Prometheus avec Kubernetes et Opérateur Prometheus pour Kubernetes reviennent également sur ces mêmes problématiques avec un déploiement dans le contexte Kubernetes. La mise en place d’un opérateur Kubernetes pour la gestion de Prometheus est également présentée avec son installation, sa gestion et l’installation d’exporteurs courants (Blackbox et Pushgateway).
Le mot anglais exporter se traduit littéralement par exportateur. Toutefois, en français, ce mot n’est utilisé que dans le contexte du commerce et jamais dans celui de l’informatique. Par la suite, le mot exporteur sera utilisé (dérivé du verbe exporter avec le suffixe -eur).
4. Gestion des tableaux de bord et des alertes
Le chapitre Ajout de tableaux de bord est consacré à la découverte du portail de Grafana ainsi qu’à l’automatisation de l’import des tableaux de bord. À noter qu’une partie du chapitre Suivi applications revient sur ce sujet en abordant la génération automatique de tableaux de bord à l’aide de code source au format Jsonnet.
Le chapitre Alertes et notifications aborde la mise en place du gestionnaire d’alertes et l’envoi de notifications par e-mail ou par Slack. La suite est consacrée aux mécanismes d’inhibition des alertes en fonction de l’heure et à la problématique des heures d’hiver et d’été.
5. Mise en place d’exporteurs avancés
Les chapitres Surveillance de base de données, Surveillance blackbox, SNMP et Pushgateway et Suivi d’applications modernes sont dédiés à la mise en place de différents types d’exporteurs :
-
Le suivi de base de données (PostgreSQL, MySQL).
-
Le suivi de composants externes HTTP.
-
Le suivi de composants réseau à l’aide du protocole SNMP.
-
Le suivi de composants à vie intermittente (batchs, IoT - Internet of Things -, etc.).
-
Le suivi de composants applicatifs (Spring Boot ou Flask).
6. Couplage de Prometheus avec le monde d’OpenTelemetry
Les trois chapitres suivants sont consacrés à la mise en place d’outils issus de la galaxie Grafana : Loki pour les logs, Tempo pour les traces et Alloy pour la collecte et la transformation des signaux.
Les produits Loki et Tempo sont d’abord abordés de façon indépendante, avant d’être réintégrés dans le cadre de fonctionnement du projet OpenTelemetry. L’objectif est d’enrichir les métriques à disposition de Prometheus ainsi...