Découverte de Prometheus
Objectifs du chapitre et prérequis
1. Contexte et prérequis
Ce chapitre est une première découverte durant laquelle l’utilisateur va installer et lancer le moteur Prometheus. L’exporteur système ainsi que la configuration nécessaire seront abordés pour intégrer un point de collecte dans Prometheus.
2. Fichiers téléchargeables
Vous pouvez récupérer les exemples sur le dépôt GitHub suivant : https://github.com/EditionsENI/prometheus-grafana
Vous pouvez également récupérer ces fichiers dans l’archive chapitre-03.tar.gz depuis la page Informations générales.
Lancement de Prometheus sous Linux
1. Contexte
Le logiciel Prometheus est disponible sur de nombreuses plateformes. Les binaires sont disponibles sur Linux, Windows ou Mac mais il est également possible de le démarrer à l’aide de containers Docker.
Par la suite, les exemples s’appuieront sur l’utilisation d’une machine Linux Ubuntu 20.04 avec une architecture AMD64. Ces instructions sont très facilement transposables aux autres systèmes.
2. Installation de Prometheus
L’installation va se faire en respectant les étapes suivantes :
-
Téléchargement d’une archive de Prometheus compatible avec son système.
-
Décompression de l’archive dans un répertoire du système.
-
Lancement de Prometheus.
Pour la première étape, rendez-vous à l’adresse https://prometheus.io/download/ et téléchargez la dernière version disponible (2.26.0 au moment de l’écriture de ce livre).
Cette opération peut s’effectuer en ligne de commande à l’aide de la commande wget suivie de l’archive à télécharger. Voici ci-dessous un exemple avec la dernière version disponible :
$ wget
https://github.com/prometheus/prometheus/releases/download/
v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
La commande récupère un fichier prometheus-2.26.0.linux-amd64.tar.gz. La décompression se fait ensuite à l’aide de la commande tar et de l’option xfvz suivie de l’archive à décompresser.
Voici ci-dessous la commande complète :
$ tar xfvz prometheus-2.26.0.linux-amd64.tar.gz
La commande doit alors renvoyer le résultat suivant :
prometheus-2.26.0.linux-amd64/
prometheus-2.26.0.linux-amd64/NOTICE
prometheus-2.26.0.linux-amd64/prometheus
prometheus-2.26.0.linux-amd64/consoles/
prometheus-2.26.0.linux-amd64/consoles/node-cpu.html
prometheus-2.26.0.linux-amd64/consoles/prometheus-overview.html
prometheus-2.26.0.linux-amd64/consoles/node.html
prometheus-2.26.0.linux-amd64/consoles/node-overview.html
prometheus-2.26.0.linux-amd64/consoles/index.html.example
prometheus-2.26.0.linux-amd64/consoles/prometheus.html
prometheus-2.26.0.linux-amd64/consoles/node-disk.html
prometheus-2.26.0.linux-amd64/console_libraries/ ...
Les métriques dans Prometheus
1. Contexte
Le lecteur a abordé comment démarrer Prometheus afin que celui-ci collecte ses propres métriques. Comme expliqué dans le chapitre précédent, ces points de collecte sont des entrées HTTP qui se chargent d’exposer des métriques.
Ce chapitre donne quelques exemples de métriques existantes, les types disponibles ainsi que quelques bonnes pratiques sur le nom de ces dernières ou sur l’utilisation des labels.
2. Les types de métriques compteurs et jauges
Dans Prometheus, il existe deux types de métriques unitaires :
-
Type compteur (en anglais counter) : il s’agit généralement d’un nombre d’événements.
-
Type jauge (en anglais gauge) : valeur absolue pouvant augmenter ou diminuer.
Les métriques compteurs sont généralement utilisées pour stocker un nombre d’événements (erreurs, nombres de requêtes) et interrogées avec la fonction rate. Pour les jauges, il s’agit de métriques qui peuvent aussi bien augmenter que diminuer (un espace disque, une consommation mémoire, un nombre d’inœuds, etc.).
Ces métriques sont simples mais ne permettent pas d’obtenir d’informations très avancées (temps de réponse ou quantile par exemple). Pour obtenir plus d’informations, les librairies de Prometheus font appel aux métriques résumés et histogrammes.
3. Métriques résumés et histogrammes
a. Présentation des métriques résumés et histogrammes
Au-delà de ces types unitaires, Prometheus sait manipuler les types de métriques suivants :
-
Type résumé (en anglais summary) : il s’agit d’un couple de métriques contenant un nombre d’appels et le temps passé dans ces appels.
-
Type histogramme (en anglais histogram) : ensemble de métriques permettant la détermination des quantiles.
Dans les faits, il s’agit d’une composition de métriques à l’aide de plusieurs métriques portant des noms ou des labels différents. Cette composition est généralement gérée directement par les exporteurs Prometheus ou par les librairies qui...
Agent de surveillance système
1. Contexte
Le moteur Prometheus est lancé mais ce dernier ne fait que se surveiller lui-même. Un premier point de collecte intéressant à rajouter pourrait venir des métriques du système en lui-même.
Pour cela, il est nécessaire de démarrer un agent qui prendra en charge cette tâche. La suite du chapitre sera consacrée au lancement de ce nouvel agent ainsi qu’à son intégration dans la configuration existante de Prometheus.
Dans le contexte de Prometheus, les agents sont généralement désignés sous le nom d’exporteurs.
2. Lancement de l’exporteur système
a. Télécharger l’archive de l’exporteur
Pour Prometheus, l’exporteur en charge de la surveillance système porte le nom de node exporter. Il se présente sous la forme d’un binaire autosuffisant ne réclamant aucune dépendance. Son téléchargement se fait directement sur le site GitHub à l’adresse suivante : https://github.com/prometheus/node_exporter/releases/
Il est disponible pour trois familles de système Unix : Darwin (MacOS X), Linux et NetBSD. Pour chaque famille, il est disponible sous la forme de binaire compatible avec plusieurs architectures processeurs.
Linux dispose d’une dizaine de versions différentes. Dans le cas de la version v1.0.1 pour Linux amd64, l’archive portera le nom de node_exporter-1.0.1.linux-AMD64.tar.gz.
b. Décompression et lancement
Une fois l’archive récupérée, déposez-la à un emplacement adéquat et lancez la décompression à l’aide de la commande tar accompagnée des options suivantes :
-
Décompression d’une archive tar.gz avec affichage des fichiers décompressés : option xfvz.
-
Nom de l’archive à décompresser.
Voici ci-dessous un exemple de commande pour un exporteur Linux AMD64 en version 1.0.1 :
$ tar xfvz node_exporter-1.0.1.linux-amd64.tar.gz
La commande renvoie la liste des fichiers décompressés :...
Console de Prometheus
1. Contexte
Prometheus met à disposition une console embarquée. Cette dernière propose par défaut deux tableaux de bord :
-
Une console de suivi de Prometheus.
-
Une console de suivi des nœuds système.
Dans la mesure du possible, ne faites pas appel à cette console et préférez-lui plutôt Grafana. Ce produit offre de son côté beaucoup plus de possibilités et sera plus simple à prendre en main. L’installation et l’utilisation seront abordées dans les chapitres suivants.
2. Activation de la console
Par défaut, la console de Prometheus n’est pas accessible. Pour activer l’accès, il est nécessaire de créer un fichier index.html dans le sous-répertoire consoles des binaires de Prometheus. Toutefois, un fichier d’exemples existe, portant le nom index.html.example. Pour gagner du temps, ce fichier sera recopié.
Pour cela, suivez les opérations suivantes :
-
Se rendre dans le répertoire consoles des binaires de Prometheus.
-
Lancer la copie du fichier à l’aide de la commande cp.
Voici ci-dessous l’ensemble des commandes à lancer pour une version 2.26.0 des binaires Prometheus :
$ cd prometheus-2.26.0.linux-amd64/consoles
$ cp index.html.example index.html
Entrez l’adresse de Prometheus dans un navigateur (http://localhost:9090)....