Configuration de Node Exporter

DockerBeginner
Pratiquer maintenant

Introduction

Ce laboratoire étend votre surveillance à un service externe. Vous allez configurer Node Exporter, un exportateur Prometheus pour les métriques matérielles et système d'exploitation. La configuration fournira un conteneur Prometheus fonctionnel issu du laboratoire précédent. Vous exécuterez un conteneur Node Exporter et l'ajouterez comme nouvelle cible dans votre fichier prometheus.yml. À la fin de ce laboratoire, vous serez en mesure d'interroger les métriques système au niveau de l'hôte dans l'interface utilisateur de Prometheus.

Télécharger l'image Docker Node Exporter

Dans cette étape, vous allez télécharger l'image Docker officielle de Node Exporter. Node Exporter est un exportateur Prometheus qui expose une grande variété de métriques matérielles et liées au noyau de la machine hôte.

Pour commencer, téléchargez l'image prom/node-exporter depuis Docker Hub. Ouvrez un terminal et exécutez la commande suivante :

docker pull prom/node-exporter

Cette commande contacte le registre Docker Hub et télécharge la dernière version de l'image Node Exporter sur votre machine locale. Vous verrez une sortie indiquant la progression du téléchargement pour chaque couche de l'image.

Sortie attendue :

Using default tag: latest
latest: Pulling from prom/node-exporter
Digest: sha256:a5579e72377a6053359058893b80f4f47c55d761457d685343b8e797859a159b
Status: Image is up to date for prom/node-exporter
docker.io/prom/node-exporter

Exécuter le conteneur Node Exporter sur le port 9100

Maintenant que vous avez l'image, exécutons Node Exporter en tant que conteneur. Nous exposerons ses métriques sur le port 9100, qui est le port par défaut pour Node Exporter.

Exécutez la commande suivante pour démarrer le conteneur et le placer sur le même réseau Docker que Prometheus :

docker run -d -p 9100:9100 --name node-exporter --network monitoring prom/node-exporter

Décomposons cette commande :

  • -d : Exécute le conteneur en mode détaché (detached mode), ce qui signifie qu'il s'exécute en arrière-plan.
  • -p 9100:9100 : Mappe le port 9100 de l'hôte au port 9100 du conteneur.
  • --name node-exporter : Attribue un nom mémorable au conteneur pour une référence facile.
  • prom/node-exporter : L'image à utiliser pour créer le conteneur.

Vous pouvez vérifier que le conteneur est en cours d'exécution avec la commande docker ps :

docker ps

Vous devriez voir node-exporter dans la liste des conteneurs en cours d'exécution. Facultativement, confirmez l'attachement au réseau avec :

docker inspect node-exporter --format '{{.HostConfig.NetworkMode}}'

La sortie devrait être monitoring.

Sortie attendue :

CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                       NAMES
...            prom/node-exporter     "/bin/node_exporter"     A few seconds ago   Up a few seconds   0.0.0.0:9100->9100/tcp, :::9100->9100/tcp   node-exporter
...            prom/prometheus        "/bin/prometheus --c…"   About a minute ago   Up about a minute   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus

Mettre à jour prometheus.yml pour ajouter la cible Node Exporter

Dans cette étape, vous allez configurer Prometheus pour collecter les métriques du conteneur Node Exporter nouvellement exécuté. Ceci est fait en modifiant le fichier de configuration prometheus.yml pour ajouter un nouveau travail de collecte (scrape job).

Tout d'abord, ouvrez le fichier prometheus.yml situé dans votre répertoire de projet à l'aide de l'éditeur nano :

nano ~/project/prometheus.yml

Maintenant, ajoutez une nouvelle configuration de travail (job) pour Node Exporter sous la section scrape_configs. Votre fichier final devrait ressembler à ceci. Assurez-vous que l'indentation est correcte, car le YAML y est sensible.

global:
  scrape_interval: 15s

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

  - job_name: "node_exporter"
    static_configs:
      - targets: ["node-exporter:9100"]

Voici ce que fait le nouveau bloc :

  • job_name: 'node_exporter': Donne un nom à ce travail de collecte, qui sera utilisé pour étiqueter les métriques collectées.
  • targets: ['node-exporter:9100']: Indique à Prometheus où trouver Node Exporter. Nous utilisons le nom du conteneur car Docker fournit une résolution DNS interne entre les conteneurs sur le même réseau. Le nom d'hôte localhost est limité à chaque conteneur, il ne peut donc pas être utilisé pour atteindre d'autres conteneurs.

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

Redémarrer le conteneur Prometheus avec la configuration mise à jour

Pour que Prometheus charge la nouvelle configuration, vous devez redémarrer son conteneur. Le montage de volume que nous avons configuré précédemment garantit que le conteneur verra le fichier prometheus.yml mis à jour au redémarrage.

Exécutez la commande suivante pour redémarrer le conteneur Prometheus :

docker restart prometheus

Cette commande arrête gracieusement puis démarre le conteneur nommé prometheus. Après quelques secondes, Prometheus sera en cours d'exécution avec la nouvelle configuration.

Maintenant, vérifions le changement dans l'interface utilisateur de Prometheus.

  1. Dans l'interface LabEx, cliquez sur le bouton + (Nouvel onglet), choisissez Web Service, et entrez 9090 pour le port.
  2. Lorsque le nouvel onglet s'ouvre, vous devriez voir la page d'accueil du navigateur d'expressions de Prometheus (Prometheus Expression Browser).
  3. Cliquez sur le menu "Status" dans la barre de navigation supérieure, puis sélectionnez "Targets".
Page des cibles Prometheus affichant le statut UP

Vous devriez maintenant voir deux cibles listées : prometheus et node_exporter. Les deux devraient avoir un état "UP", indiquant que Prometheus collecte avec succès les métriques de lui-même et de Node Exporter.

Interroger la métrique node_cpu_seconds_total dans l'interface utilisateur

La dernière étape consiste à confirmer que Prometheus ingère avec succès les métriques de Node Exporter en exécutant une requête.

Retournez à la page principale "Graph" dans l'interface utilisateur de Prometheus en cliquant sur le lien "Graph" dans la barre de navigation. Dans le champ de saisie "Expression", tapez le nom de la métrique suivante :

node_cpu_seconds_total

Cette métrique représente le temps total en secondes que le CPU a passé dans différents modes (par exemple, inactif, utilisateur, système).

Interface utilisateur de Prometheus affichant les résultats de la requête node_cpu_seconds_total

Cliquez sur le bouton "Execute". Si la connexion est réussie, vous verrez un tableau de résultats sous le graphique. Chaque résultat correspond à un cœur de CPU et à un mode différent. Voir ces résultats confirme que l'ensemble de votre pipeline de surveillance fonctionne correctement, de la collecte des données par Node Exporter à l'ingestion et au stockage par Prometheus.

Vous pouvez basculer entre les vues "Table" et "Graph" pour visualiser les données.

Résumé

Félicitations ! Vous avez étendu avec succès votre configuration de surveillance en ajoutant un service externe. Dans ce laboratoire, vous avez appris à exécuter le Node Exporter officiel de Prometheus dans un conteneur Docker, à configurer une instance Prometheus pour collecter des métriques à partir de cette nouvelle cible, et à vérifier la collecte des données en interrogeant les métriques au niveau de l'hôte. C'est une compétence fondamentale pour construire une pile d'observabilité complète, vous permettant d'obtenir des informations approfondies sur les performances et la santé de vos systèmes.