Post

Monitoring Docker et Proxmox (cAdvisor + Prometheus + Grafana + InfluxDB)

Monitoring Docker et Proxmox (cAdvisor + Prometheus + Grafana + InfluxDB)

Monitoring docker et proxmox avec cAdvisor, Prometheus, Grafana, InfluxDB

Docker Metrics

L’option metrics-addr est une configuration importante du daemon Docker qui permet d’exposer les métriques de performance et d’utilisation des ressources via un endpoint HTTP. Cette fonctionnalité, combinée avec le port par défaut 9323, vous donne accès à une mine d’informations sur votre environnement Docker.

Pourquoi le port 9323 ?

  • C’est un port non-privilégié (supérieur à 1024)
  • Il est officiellement alloué à Docker par l’IANA pour cette fonctionnalité
  • Il est peu susceptible d’entrer en conflit avec d’autres services courants
  • Il suit la convention de Prometheus pour les ports d’exportation de métriques (9xxx)

Ce que vous obtenez avec metrics-addr

Activer l’option metrics-addr dans le daemon.json vous donne accès à de nombreuses métriques Docker formatées nativement pour Prometheus :

  • Métriques système : Utilisation CPU, mémoire, disque et réseau par conteneur
  • Métriques du daemon : État du daemon, nombre d’objets gérés (conteneurs, images, volumes)
  • Métriques d’utilisation : Temps de démarrage des conteneurs, opérations réseau
  • Métriques de performance : Latences des opérations de build et de déploiement

Toutes ces métriques sont disponibles au format Prometheus, ce qui les rend facilement intégrables dans un système de monitoring existant.

ℹ️ Point technique : Le format Prometheus utilise des “labels” qui permettent de filtrer et d’agréger les métriques de manière flexible.

Cas d’utilisation pour metrics-addr

L’activation de metrics-addr est particulièrement utile dans les scénarios suivants :

  • Supervision d’infrastructure : Intégration avec Prometheus pour surveiller l’ensemble de votre environnement Docker
  • Alerting automatisé : Déclencher des alertes basées sur des seuils de métriques spécifiques
  • Dashboarding : Création de tableaux de bord Grafana pour visualiser les performances
  • Analyse de tendance : Collecter des données sur de longues périodes pour identifier les tendances
  • Détection d’anomalies : Repérer les comportements anormaux dans vos conteneurs

Configuration de metrics-addr

Configuration via daemon.json

La méthode recommandée pour activer les métriques Docker est de modifier le fichier de configuration du daemon :

Éditez ou créez le fichier de configuration Docker :

1
sudo nano /etc/docker/daemon.json

Ajoutez la configuration pour activer l’API de métriques :

1
2
3
{
 "metrics-addr" : "127.0.0.1:9323"
}

Note : L’adresse 127.0.0.1 limite l’accès à la machine locale. Pour exposer les métriques au réseau, utilisez 0.0.0.0:9323 (avec précaution).

Redémarrez Docker pour appliquer les changements :

1
2
3
4
# debian
sudo systemctl restart docker
# alpine linux
service docker restart

Vérifiez que les métriques sont disponibles :

1
curl http://localhost:9323/metrics

Vous devriez voir une sortie avec de nombreuses métriques au format Prometheus.

Monitoring Docker (cAdvisor+ Prometheus + Grafana)

Monitoring Docker: Grafana + Prometheus + cAdvisor

cAdvisor

cAdvisor (Container Advisor) fournit aux utilisateurs de conteneurs une compréhension de l’utilisation des ressources et des caractéristiques de performance de leurs conteneurs de fonctionnement. Il s’agit d’un démon en marche qui recueille, regroupe, traite et exporte des informations sur les conteneurs en marche. Plus précisément, pour chaque conteneur, il conserve les paramètres d’isolement des ressources, l’utilisation historique des ressources, les histogrammes de l’utilisation historique complète des ressources et les statistiques du réseau. Ces données sont exportées par conteneur et par machine.

http://192.168.10.213:8098

Prometheus

Prometheus http://192.168.10.213:9090
Rendez-vous donc sur Prometheus, partie Status, ensuite cliquez sur Targets:

Grafana

Grafana http://192.168.10.213:3000 admin/admin On va commencer par lancer Grafana afin de changer le mot de passe par défaut.

Il va falloir ajouter une source de données, celle de Prometheus. Dans Grafana, partie Home, cliquez sur Data Sources:

Cliquez sur Prometheus:

Dans la partie Connection, il suffit d’entrer l’ip:port de Prometheus

Maintenant on va sauver/tester en cliquant sur Save & test:

Ce qui doit retourner:

Retournez sur Home, et cliquez sur Dashboards:

Dans Options, Name, vous pouvez choisir le nom que vous voulez. N’oubliez pas dans le fond de sélectionnez prometheus:

Terminé

Monitoring Proxmox (InfluxDB + Grafana)

Monitoring Proxmox: Grafana + InfluxDB

InfluxDB

Ajout influxdb au docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
  influxdb:
    image: influxdb:2
    container_name: influxdb
    volumes:
      - influxdb-config:/etc/influxdb2
      - influxdb-data:/var/lib/influxdb2
    ports:
       - 8086:8086

volumes:
  influxdb-config:
  influxdb-data:

Déployer

1
sudo docker-compose up -d

InfluxDB http://192.168.10.213:8086/

Lorsque vous lancez influxDB pour la première fois, cliquez sur GET STARTED:

Quand vous avez cliqué sur Continue, vous aurez en retour une clé, très importante, notez-là quelque part, nous en aurons besoin un peu plus tard, une fois la clé notée cliquez sur QUICK START:

On arrive sur le tableau de bord

Opérations sur Proxmox

https://belginux.com/proxmox-grafana-influxdb/ Ouvrir proxmox sur Centre de données

Cliquez sur Ajouter, sélectionnez InfluxDB. Une fenêtre va s’ouvrir:

  • Nom: => Nommez cette entrée InfluxDB.
  • Serveur: => Indiquez l’ip du serveur ou se trouve InfluxDB. 192.168.10.213
  • Port: => 8086, sauf si vous l’avez changé.
  • Protocole: => HTTP.
  • Enabled: => Cochez-le si ce n’est déjà fait.
  • Organisation: => Indiquez le nom de l’organisation que vous avez choisi plus haut. domo
  • Bucket: => Indiquez le nom du Bucket que vous avez choisi plus haut. Proxmox
  • Jeton: => Ah, enfin, collez le token reçu précédemment. Gardez-le toujours bien précieusement pour la suite.

Cliquer sur Créer
Fin des Opérations sur Proxmox

Vérifier InfluxDB

On a connecté InfluxDB à Proxmox, il faut vérifier que Proxmox envoie bien les données à InfluxDB.

Allez sur Data Explorer, ensuite cliquez sur Proxmox:

Vous devriez voir en dessous de _mesurement tout un tas de paramètres.
Terminé pour InfluxDB

Configurer Grafana

Ajouter une nouvelle source de données InfluxDB à Grafana

Dans Grafana

Cliquez sur InfluxDB

Dans Query language, sélectionnez Flux

Configurez ces quelques points dans la partie HTTP et Auth

  • URL => Indiquez http://192.168.10.213:8086 pour accès InfluxDB.
  • Basic auth => Si elle est cochée, décochez-là.
  • Skip TLS Verify => Cochez cette case.

Configurez ces quelques points dans la partie InfluxDB Details

  • Organization => Indiquez le nom de votre organisation.
  • Token => Indiquez le token que vous avez mis de côté.

Cliquez sur Save & test. Cela devrait retourner un message vert

Retournez sur Home, et cliquez sur Dashboards, New et Import

Indiquez 15356 et cliquez sur Load:

Dans Options, Name, vous pouvez choisir le nom que vous voulez. N’oubliez pas dans le fond de sélectionnez l’InfluxDB data source;

Quand c’est terminé, cliquez sur Import:

Résultat

Cet article est sous licence CC BY 4.0 par l'auteur.