Configuration Prometheus

DockerBeginner
Pratiquer maintenant

Introduction

Prometheus est une puissante boîte à outils de surveillance et d'alerte open-source. Son comportement est contrôlé par un fichier de configuration, généralement nommé prometheus.yml. Ce fichier définit tout, de la fréquence de collecte des métriques, des cibles à collecter, et comment gérer les règles d'alerte.

Ce laboratoire fait suite au laboratoire "Installation de Prometheus", où vous avez appris à installer et exécuter Prometheus à l'aide de Docker. Maintenant que vous savez comment démarrer et exécuter Prometheus, ce laboratoire vous enseignera les bases de la configuration de Prometheus. Vous commencerez par inspecter un conteneur Prometheus exécuté avec une configuration par défaut. Ensuite, vous créerez votre propre fichier prometheus.yml personnalisé, lancerez un nouveau conteneur en utilisant ce fichier, et apprendrez à recharger la configuration sans redémarrer le service.

Vérifier que le conteneur Prometheus est en cours d'exécution

Dans cette étape, nous allons vérifier que le conteneur Prometheus initial, qui a été démarré par le script de configuration, est en cours d'exécution. Ce conteneur utilise la configuration par défaut intégrée.

Listons tous les conteneurs Docker en cours d'exécution pour voir notre conteneur prometheus-default.

docker ps

Vous devriez voir une sortie similaire à celle-ci, indiquant qu'un conteneur nommé prometheus-default est démarré et en cours d'exécution. La colonne PORTS indique que le port 9090 sur l'hôte est mappé au port 9090 dans le conteneur.

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                       NAMES
a1b2c3d4e5f6   prom/prometheus     "/bin/prometheus --c…"   15 seconds ago   Up 14 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus-default

Cela confirme que notre instance Prometheus initiale est active. Dans l'étape suivante, vous accéderez à l'interface utilisateur web de Prometheus pour voir la configuration par défaut en action.

Accéder à l'interface Web de Prometheus sur localhost:9090

Dans cette étape, vous accéderez à l'interface web de Prometheus, qui est maintenant en cours d'exécution et exposée sur le port 9090. L'environnement LabEx offre un moyen pratique d'accéder aux services web exécutés à l'intérieur de la machine virtuelle.

Cliquez sur le bouton + (Nouvel onglet) situé en haut de l'interface du laboratoire.

Sélectionnez l'option Web Service, et entrez 9090 comme port.

Cela ouvrira un nouvel onglet de navigateur connecté aux services exécutés dans votre environnement de laboratoire.

Étant donné que nous avons mappé le port 9090, l'interface utilisateur de Prometheus sera disponible. Vous devriez voir le Prometheus Expression Browser, qui est la page d'accueil principale. Cette interface vous permet d'écrire et d'exécuter des requêtes PromQL pour explorer les métriques.

Page d'accueil du Prometheus Expression Browser

La présence de cette page confirme que votre conteneur Prometheus fonctionne correctement et est accessible.

Créer le fichier prometheus.yml avec une configuration de scrape de base

Dans cette étape, vous allez créer un fichier de configuration Prometheus personnalisé nommé prometheus.yml. Ce fichier indiquera à Prometheus ce qu'il doit surveiller.

Maintenant que vous avez accédé à l'interface utilisateur web de Prometheus et confirmé qu'elle fonctionne, créons un fichier de configuration personnalisé que vous pourrez utiliser pour configurer Prometheus selon vos besoins.

Nous utiliserons l'éditeur de texte nano pour créer le fichier dans le répertoire ~/project.

nano prometheus.yml

Maintenant, copiez et collez la configuration YAML suivante dans l'éditeur nano. Cette configuration indique à Prometheus de récupérer les métriques de lui-même toutes les 5 secondes.

global:
  scrape_interval: 5s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Décomposons cette configuration :

  • global : Cette section définit les paramètres valides pour toutes les autres sections de configuration.
  • scrape_interval : Ceci définit le temps par défaut entre les récupérations (scrapes) à 5 secondes.
  • scrape_configs : Cette section définit l'ensemble des cibles et des paramètres pour la récupération (scraping).
  • job_name : C'est le nom attribué à la tâche (job), qui sera attaché comme label à toute série temporelle récupérée de cette cible.
  • static_configs : Ceci spécifie une liste de cibles à surveiller.
  • targets : Ceci liste les points d'accès (endpoints) à récupérer. Dans ce cas, il s'agit du serveur Prometheus lui-même.

Après avoir collé le contenu, enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, puis Y, et enfin Entrée.

Exécuter le conteneur Prometheus avec la configuration montée

Maintenant que nous avons notre fichier prometheus.yml personnalisé, nous devons exécuter un nouveau conteneur Prometheus qui l'utilise. Tout d'abord, arrêtons et supprimons l'ancien conteneur.

docker stop prometheus-default
docker rm prometheus-default

Ensuite, nous allons lancer un nouveau conteneur nommé prometheus-custom. Nous utiliserons le drapeau -v pour monter notre fichier local prometheus.yml dans le conteneur à l'emplacement attendu /etc/prometheus/prometheus.yml. Nous ajoutons également le drapeau --web.enable-lifecycle pour activer l'API de rechargement à chaud, que nous utiliserons à l'étape suivante.

docker run -d \
  --name prometheus-custom \
  -p 9090:9090 \
  -v ~/project/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --web.enable-lifecycle

Examinons les nouveaux drapeaux :

  • -v ~/project/prometheus.yml:/etc/prometheus/prometheus.yml : Il s'agit du montage de volume. Il mappe le fichier prometheus.yml du répertoire ~/project de votre machine hôte vers le chemin /etc/prometheus/prometheus.yml à l'intérieur du conteneur. Prometheus lira ce fichier au démarrage.
  • --web.enable-lifecycle : Ce drapeau de ligne de commande active l'API HTTP pour le rechargement de la configuration, accessible via le point d'accès /-/reload.

Vous pouvez vérifier que le nouveau conteneur est en cours d'exécution :

docker ps

Vous devriez voir le conteneur prometheus-custom dans la liste.

Recharger la configuration Prometheus via l'API

L'une des fonctionnalités puissantes de Prometheus est la capacité de recharger sa configuration sans redémarrage complet, ce qui évite toute interruption dans la collecte des métriques. Ceci est possible car nous avons activé l'API de cycle de vie avec le drapeau --web.enable-lifecycle.

Tout d'abord, modifions notre fichier de configuration. Nous allons changer le scrape_interval de 5s à 15s.

Ouvrez le fichier avec nano :

nano prometheus.yml

Changez la ligne scrape_interval en 15s :

global:
  scrape_interval: 15s ## Changé de 5s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Enregistrez le fichier et quittez nano (Ctrl+X, Y, Entrée).

Maintenant, au lieu de redémarrer le conteneur, nous allons envoyer une requête POST au point d'accès /-/reload en utilisant curl. Cela indique à l'instance Prometheus en cours d'exécution de recharger sa configuration à partir du fichier monté.

curl -X POST http://localhost:9090/-/reload

Si le rechargement réussit, vous ne verrez aucune sortie. Ce succès silencieux signifie que Prometheus a appliqué la nouvelle configuration.

Vérifier les métriques collectées sur la page Cibles

Dans cette dernière étape, nous allons vérifier que notre configuration personnalisée est active en consultant l'interface web de Prometheus.

L'environnement LabEx fournit un onglet "Web Terminal" ou un mécanisme similaire pour accéder aux services web exécutés à l'intérieur de la VM. Ouvrez l'interface utilisateur de Prometheus en naviguant vers http://localhost:9090 dans le navigateur fourni par l'interface du laboratoire.

Une fois l'interface chargée, cliquez sur le menu Status dans la barre de navigation supérieure, puis sélectionnez Targets.

Sur la page Targets, vous verrez les cibles de scraping définies dans votre fichier prometheus.yml. Vous devriez voir une cible sous le job prometheus.

  • Endpoint : http://localhost:9090/metrics
  • State : L'état doit être UP avec un fond vert.
  • Last Scrape / Scrape Duration : Ces colonnes indiquent quand le dernier scraping a eu lieu et combien de temps il a pris. Vous pouvez observer que le temps entre les scrapings est maintenant d'environ 15 secondes, reflétant le changement que nous avons rechargé à l'étape précédente.
Prometheus Targets Page

Cela confirme que Prometheus a chargé avec succès notre fichier de configuration personnalisé, qu'il scrape la cible spécifiée et qu'il a appliqué le rechargement de la configuration.

Résumé

Félicitations ! Vous avez terminé avec succès ce laboratoire sur la configuration de Prometheus.

Dans ce laboratoire, vous avez appris à :

  • Créer un fichier de configuration prometheus.yml personnalisé.
  • Utiliser les montages de volumes Docker (-v) pour fournir une configuration personnalisée à un conteneur Prometheus.
  • Activer l'API de cycle de vie de Prometheus pour permettre le rechargement à chaud (hot-reloading).
  • Recharger la configuration de Prometheus à la volée à l'aide d'une simple commande curl.
  • Vérifier la configuration active en consultant la page Targets dans l'interface web de Prometheus.

Ce sont des compétences fondamentales pour gérer et exploiter Prometheus dans n'importe quel environnement.